다양한 상황에서 수직 공간 삽입

다양한 상황에서 수직 공간 삽입

이것은 내 첫 번째 게시물이므로 기존 내용과 너무 중복되지 않기를 바랍니다. 한동안 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는 \vspace에서 직관적으로 작동하지 않기 때문입니다). 새 줄의 시작). 지금은 공백 하나가 있는 줄을 기반으로 한 추악한 해킹을 사용합니다.

사례 2와 4의 경우 다음이 작동합니다.

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

사례 3의 경우 다음이 작동합니다.

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

이제 내 질문은 "2", "3, 4" 사례를 공동으로 처리하는 일반 매크로(내 해킹보다 더 예쁜)가 있습니까? 아니면 더 나은(꿈꾸는 중), 다음과 같은 일반 매크로가 있습니까? 5가지 사건을 모두 직접 처리하나요?

시간을 내어 설명해주셔서 미리 감사드립니다.

하워드

편집 : David Carlisle의 답변 덕분에 내 자체 답변을 더 자세히 찾을 수 있습니다.

답변1

수직 모드에서 를 사용 하면 \vspace해당 지점에 공간이 추가됩니다. 가로 모드에서 추가되면 단락이 줄로 나누어질 때까지 지연된 다음 지연된 공간을 전달하는 노드가 포함된 줄 뒤에 공백이 추가됩니다.

수평 모드의 동작은 일종의 정당하지만 거의 원하지 않으므로 간단한 규칙은 항상 앞에 빈 줄을 남겨 두는 것입니다 \vspace.

주목해야 할 또 다른 규칙은 수학을 표시하기 전에 빈 줄을 남겨서는 안 된다는 것입니다( $$라텍스에서는 으로 표시하면 안 되지만 에도 동일하게 적용됩니다 \[).


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

매우 기괴한 구성입니다. 세로 모드에서 사용하면 단락 들여쓰기로 단락을 시작한 다음 강제로 단어 공백을 만든 다음 \강제로 중단합니다. \\중단 후 줄 뒤에 빈 줄이 있으면 비어 있고 언더풀이 생성됩니다. hbox 경고. 그러면 단락이 끝나서 \addspace첫 번째 흰색 줄 뒤에 이 추가됩니다. 따라서 페이지 나누기 시 삭제되지 않고 \addspace - 2\baselineskip사이에 공간이 있는 두 개의 흰색 hbox가 생성됩니다. 이는 공백과 비슷해 보이지만 \addspace위와 아래의 텍스트와의 상호 작용은 다르며 페이지 나누기 동작이 완전히 잘못되어 두 개의 흰색 선 사이에 페이지 나누기가 허용되고 상단에 비정상적인 흰색 선이 생성됩니다. 다음 페이지.

답변2

David Carlisle의 답변 덕분에 "사례 3"(방정식과 다음 단락 사이에 공백 삽입)도 \vspace를 사용하여 쉽게 수행할 수 있다는 것을 알았습니다. 단, 두 개의 빈 줄 사이에 삽입해야 한다는 점만 제외하면 됩니다. 따라서 현재 솔루션을 요약하면 다음과 같습니다.

\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에게 감사드립니다.

하워드

관련 정보