LaTeXの自慢のポイントの1つは、このMicrosoft風の動作がないことです。それにもかかわらず、それは時々役に立ちます。
LaTeXは、(バックスラッシュされていない)ピリオドを入力した後、すでに余分なスペースを追加しているため、次の文字も自動的に大文字にすることができるはずです。
これを行うマクロを作成する明白な方法はありますか、それともすでにそれを行うLaTeXパッケージがありますか?
LaTeXの自慢のポイントの1つは、このMicrosoft風の動作がないことです。それにもかかわらず、それは時々役に立ちます。
LaTeXは、(バックスラッシュされていない)ピリオドを入力した後、すでに余分なスペースを追加しているため、次の文字も自動的に大文字にすることができるはずです。
これを行うマクロを作成する明白な方法はありますか、それともすでにそれを行うLaTeXパッケージがありますか?
次のコードは問題を解決します。
\let\period.
\catcode`\.\active
\def\uppercasesingleletter#1{\uppercase{#1}}
\def.{\period\afterassignment\periodx\let\next= }
\def \periodx{\ifcat\space\next \next\expandafter\uppercasesingleletter \else\expandafter\next\fi}
First. second.third. relax.relax. up
\let\period.
保存期間
\catcode\.\active
すべてのピリオドをアクティブシンボル(マクロなど)にします。
\def\uppercasesingleletter#1{\uppercase{#1}}
\uppercasesingleletter
次の文字を自動的に大文字にするマクロを定義します。
\def.{\period\afterassignment\periodx\let\next= }
保存された期間を書き込み、次のシンボルをチェックします。
\def \periodx{\ifcat\space\next \next\expandafter\uppercasesingleletter \else\expandafter\next\fi}
次の文字がスペースの場合\uppercasesingleletter
は、挿入されます。
何年も前に、comp.text.texでこのアイデアについての議論がありましたが、一般的な結論は、それを十分に行うことはできないということでした。私の本では、満足のいくものはキャラクターをアクティブにしないことを含みますが、それがどのように機能するかはまったくわかりません。
個人的には、スペースをアクティブにして、係数が3000の場合は、\spacefactorと\MakeUppercaseの次の文字を確認します。
何かのようなもの
\catcode\ \active % latex already has a saved space character -- \space
\def {\ifhmode% \spacefactor is invalid
% (or something) in vertical mode
\ifnum\spacefactor<3000\else% note: with space active,
% even cs-ended lines need %-termination
\expandafter\gobbleandupper\fi}%
\def\gobbleandupper#1{\def\tempa{#1}\def\tempb{ }%
\ifx\tempa\tempb% can''t indent the code, either :-(
% here, we have another space
\expandafter\gobbleandupper% try again
\else\space% insert a "real" space to soak up the
% space factor
\expandafter\MakeUppercase\fi}%
これは実際には仕事をしません-フェアアイルジャンパーを編むのに十分なルーズエンドがあります。たとえば、ラテックスの\ everyparに頼ることができないとすると、段落の最初の文字をどのように大文字にしますか?
いいえ...どれだけ痛いのか(これが不必要なキー操作を避ける理由です)ラテックスを「適切に」入力する必要があります:-(
私はそれを次のように解決することにしました:
結果を確認する前に(ページ付けと参照を正しく行うために)常にLaTeXコードを3回コンパイルするので、そのプロセスに文の大文字化を組み込むことにしました。
したがって、最初に大文字化スクリプト(CRM114で記述)を呼び出し、次にpdflatexを3回呼び出し、次にokularを呼び出すシェルスクリプトができました。このように、すべてのものは単一のコマンドの結果として発生します。