ソース内の行をスキップできる安全な場所

ソース内の行をスキップできる安全な場所

\section理想的には、の前後、多くの環境 (theorem、itemize、enumerate など) の前後、リスト内の の間、表示形式の数式の前後、その他いくつかの場所で行をスキップできるようにしたいと\item思います。これにより、ソース コードを整理しておくことができます。

残念なことに、ドナルド・クヌースは、スキップされた行はソースコード内で意味を持つべきだと決めました。これにはきっと十分な理由があったのでしょうが、私個人としては、新しい段落を始めるのに\parコマンドが必要になった方がずっとうれしいです。

%コード編成の従来の解決策は、意味上問題のない理由でスキップされた行の先頭にシンボルを置くことだと認識しています。%しかし、これらの余分な記号はコードを乱雑にし、単に行をスキップするよりも役に立たないことがわかりました。


質問:

従来の LaTeX ドキュメントでは、出力に影響を与えずに 1 行以上をスキップできる場所はありますか?再定義が許可されている場合、完全に安全な場所は存在しないことを認識しているため、標準または AMS ドキュメント クラスの 1 つが使用されており、追加のパッケージがロードされておらず、プリアンブル内の定義は定理型の定義のみであると想定します。

この質問を他の質問と区別するためのもう1つの制約は、空の行を安全に追加できるのはいつですか?:さまざまなコマンドや環境が垂直モードにどのように影響するかはわかりません。私の質問は、前後の行をスキップしても効果がないような方法で垂直モードに影響を与えるコマンド/環境のリスト (必ずしも包括的ではない) を求めています。

答え1

リンクされた質問の回答は、垂直モードであることは技術的な実装の詳細であり、示唆されているほどユーザーの動作と密接に関連していないため、少し誤解を招きます。たとえば、リストの後は垂直モードになりますが、LaTeX は、リストの動作がディスプレイの計算動作 (ディスプレイの後は水平モード) と一致するように、空白行を有効にするために多大な努力を払います。

まず、この動作は TeX に組み込まれているわけではなく、現在の catcode 設定に依存します。

TeXは、システム依存の行末マーカーを含むすべての空白を各行から削除します(この部分はない(カスタマイズ可能)次に、\endlinechar設定されている場合、 を挿入します。通常、LaTeX では ^M です。その後、 の catcode が、\endlinecharファイル内の通常の文字であるかのように使用されます。通常、これは catcode 5 で、これは、1 つの ^M をスペースのように動作させ、2 つの ^M を のように動作させる特別な catcode です(いくつかの詳細は省略)。ただし、代わりに、スペースのように動作する ^M に catcode 10 を持たせたり、設定して、各行末に 1 つのスペース(行末なし)が生成されるようにすること\parもできます。\endlinechar=32

ここに画像の説明を入力してください

\documentclass{article}

\begin{document}\endlinechar=32

One two    three



four

five

\begin{itemize}

\item one

two \item

three

\end{itemize}

\end{document}

ただし、そうせずに標準設定を維持する場合は、ルールは実際には単純で、現在の段落を終了する場所に空白行を使用します。

空白行はエラー数学モードで。

空白行は、垂直(par モード)では \par 段落の終了マーカーになります(ただし、垂直リストの先頭では は無視されるため、 など\parの先頭や各段落の後に空白行があっても問題ありません)。\parboxminipage

あなたがすべき一度もない表示数式の前に空白行を入れます (TeX では、表示数式は常に段落内、段落間ではないとみなされるため、 の前に空白行を入れたり、内部で\[使用するその他のものを使用したりする$$と、TeX は回復アクションとして と同等のコードを挿入し\indent$$、表示の前にインデント ボックスで構成される偽の白い行が表示されますが、テキストは表示されません。これは、表示前の誤った垂直スペースのように見えます。

表示数式環境の後に空白行を入れるかどうかは、次のテキストが新しい段落であるか、表示前の段落の続きであるかによって異なります。

LaTeX リスト環境の前または後に空行を置くと、その環境に続くテキストは新しい段落を開始するため、通常はインデントされます。リストの前後に空行を置かない場合、後続のテキストはリストの前の段落の続きとみなされます。

ほとんどすべての LaTeX 構造は、文字 と同じように配置されますX。組み込まれた画像を横に並べたり、上下に並べたりするにはどうすればよいかとよく尋ねられます。答えは次のようになりますX

X X

2つのXを並べて配置する

X

X

別々の段落で一方をX他方の上に配置します。またはまたはXで置き換えることができ、空白行と同じ操作が適用されます。\includegraphics\fbox\parbox\begin{tabular}...\end{tabular}

答え2

私は、フレーズの後、つまり句読点の後に行を分割してソースを整理することを学びました。この方法では、ほとんどの編集は行をシャッフルすることになり、テキスト エディターは通常、これを適切にサポートしています。追加のボーナスとして、バージョン コントロール システムも変更された行に基づいて機能するため、これは適切な組み合わせです (たとえば、単語を追加しても、段落の詰め替えによって 12 の変更が発生することはありません。変更は簡単に見つけることができます)。たとえば、記事とを一緒にしておくと、犬やエラーなどの間違いを簡単に見つけることができます (検索)。

私は方程式をほとんど同じ方法で書きます。つまり、等号を並べ(複数ある場合)、長めの項を分割してインデントし、長い因数が出てきたら再度インデントする、といった具合です。

要約すると、私は、非常に狭い余白を与えられたプログラムをインデントするのと同じように、ソースをインデントしたままにするよう努めています (LaTeX は、たとえば C で書かれた数式よりもかなり冗長です)。ソースの自然な空白によって不要な段落区切りが作成されることは非常にまれであり、不要な空白につながらない論理的な分割のために、行を % で終了する必要がある場合もあります。

いずれにせよ、これはソース コードです。これは、特に作成者だけでなく、人々が読むためのものです。標準的でないものがあると、ドキュメントが読みにくくなり、再利用や他のテキストとの統合が難しくなり、他の人と共有することがほぼ不可能になります。

関連情報