さまざまなコンテキストでの垂直スペースの挿入

さまざまなコンテキストでの垂直スペースの挿入

これは私の最初の投稿です。既存の内容と重複しすぎないことを願っています。私はしばらくの間 Latex を使用してきましたが、常に非常に実用的なアプローチをとってきたため、\vspace コマンドでいつも混乱してしまいます。これは、やや直感に反すると思います。

次の最小限の例では、コメント付きの「skipspace」マクロで示されるさまざまな場所に、白い垂直スペース (はい、見苦しいのはわかっています!) を手動で追加するコマンドを探しています。

\documentclass[a4paper,11pt]{article}
\newlength{\addspace}
\setlength{\addspace}{0mm} % play easily on the inserted length
\begin{document}

First paragraph~: starts off with some very interesting text,
until we encounter a first equation~:
%\skipspace1{\addspace}
$$
x=5,
$$
%\skipspace2{\addspace}
after what the paragraph continues, with some even more interesting
text, and finally ends with another equation~:
$$
x=5.
$$
%\skipspace3{\addspace}

Second paragraph~: we are going to encounter a line break
(don't ask why I like to have these from time to time).\\
%\skipspace4{\addspace}
This is the same paragraph continuing after the break.
%\skipspace5{\addspace}

Third paragraph~: whatever. As far as I'm concerned, the example is over,
but multiple-line paragraphs definitely look better.
\end{document}

私の経験では、位置 "1" と "5" は \vspace で適切に処理されますが、位置 "2"、"3"、"4" は毎回微調整が必​​要です (\vspace は新しい行の先頭では直感的に機能しないため)。今のところ、私は 1 つの空白を含む行に基づいた醜いハックを使用しています。

ケース2と4の場合、次のようになります。

\ \vspace{\addspace}\\[-\baselineskip]

ケース3の場合、次のようになります。

\ \vspace{\addspace}\\[-2\baselineskip]

さて、私の質問は、ケース「2」、「3」、「4」を共同で処理する一般的なマクロ(私のハックよりもきれいなもの)はありますか? または、さらに良いのは(単なる夢ですが)、5つのケースすべてを直接処理できる一般的なマクロはありますか?

お時間を割いて説明していただき、ありがとうございます。

ハワード

編集:David Carlisleの返信のおかげで、私の自己回答はさらに下にあります。

答え1

垂直モードで使用する場合、\vspaceスペースはその時点で追加されます。水平モードで追加する場合は、段落が行に分割されるまで延期され、延期されたスペースを保持するノードを含む行の後にスペースが追加されます。

水平モードでの動作は、ある程度正当化されますが、ほとんど望まれないので、単純なルールとして、 の前に常に空白行を残します\vspace

注意すべきもう 1 つのルールは、display math の前に空白行を残さないことです (これは、$$LaTeX では でマークされるべきではありませんが、 にも同じことが当てはまります\[)。


\ \vspace{\addspace}\\[-2\baselineskip]

は非常に奇妙な構造です。垂直モードで使用すると、段落のインデントで段落が始まり、 から強制的に単語スペースが挿入され、 から\強制的に改行されます\\。改行後の行の後に空行が続くと、改行後の行は空になり、hbox が不足していることを示す警告が生成されます。その後、段落が終了するため、\addspace最初の白い行の後に が追加されます。つまり、改ページで破棄されず、\addspace - 2\baselineskip間にスペースがある 2 つの白い hbox が生成されます。これは のスペースに似ています\addspaceが、上下のテキストとの相互作用が異なり、改ページ時の動作が完全に間違っており、2 つの白い行の間に改ページが許可され、次のページの上部に異常な白い線が生成されます。

答え2

David Carlisle の回答のおかげで、「ケース 3」(方程式と次の段落の間にスペースを挿入する) も \vspace で簡単に実行できることがわかりました。ただし、2 つの空白行の間に挿入する必要があります。現在の解決策を要約すると、次のようになります。

\documentclass[a4paper,11pt]{article}
\newlength{\addspace}
\setlength{\addspace}{0mm} % play easily on the inserted length

\newcommand{\myvspace}[1]{\ \vspace{#1}\\[-baselineskip]} % home-made ugly macro

\begin{document}

First paragraph~: starts off with some very interesting text,
until we encounter a first equation~:
\vspace{\addspace} % CASE 1
\[
x=5,
\]
\myvspace{\addspace} % CASE 2
after what the paragraph continues, with some even more interesting
text, and finally ends with another equation~:
\[
x=5.
\]

\vspace{\addspace} % CASE 3... blank lines above and below are important to enter vertical mode

Second paragraph~: we are going to encounter a line break
(don't ask why I like to have these from time to time).\\
\myvspace{\addspace} % CASE 4
This is the same paragraph continuing after the break.

\vspace{\addspace} % CASE 5

Third paragraph~: whatever.
\end{document}

つまり、\vspace (ケース 1、3、5) と醜い自作マクロ \myvspace (ケース 2 と 4) でやりたいことはすべてできそうです... これでほぼ大丈夫です。皆さんに感謝します。特に、水平モードと垂直モードの違いを教えてくれた David に感謝します。

ハワード

関連情報