これは私の最初の投稿です。既存の内容と重複しすぎないことを願っています。私はしばらくの間 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 に感謝します。
ハワード