단락 끝에 있는 \vspace는 잘못된 LaTeX 코딩입니까?

단락 끝에 있는 \vspace는 잘못된 LaTeX 코딩입니까?

의 댓글 이후@DavidCarlisle안에질문사용법 에 대해 다음과 같이 문단 사이에 공백을 추가하거나 제거하기 위해 문단의 마지막 명령으로 명령을 추가하지 말아야 하는지 \vspace, 언제, 왜 피해야 하는지 알아보려고 했습니다.\vspace

This is the text of a paragraph here.\vspace{1cm}

This is the text of the next paragraph.

@DavidCarlisle은 내 의견에 다음과 같이 답변했습니다.

"빈 줄은 vspace 앞에 있어야 합니다. 수평 모드에서 vspace를 사용하는 것은 잘 정의되어 있지만 이상하기 때문에 거의 항상 그것을 피하고 싶습니다."

따라서 제안된 "수정"(내가 이해할 수 있는 한)은 다음과 같습니다.

This is the text of a paragraph here.

\vspace{1cm}This is the text of the next paragraph.

그러나 나는 많은 예를 시도했지만 예상치 못한 출력을 제공하는 예를 찾지 못했습니다(세로 간격 순서이지만 일반적인 경우도 마찬가지). 또한 첫 번째 LaTeX 단계에서는 다음 스타일을 사용했습니다.

This is the text of a paragraph here.

\vspace{1cm}

This is the text of the next paragraph.

지금은 끔찍해 보이지만 첫 번째 예제(현재 사용 중인 스타일)에서는 더 나은 LaTeX 코딩으로 간주할 수 있습니다.

그래서 내 질문은 다음과 같습니다.

  1. 어떤 이유로든 첫 번째 예제의 코딩 스타일을 피해야 합니까?
  2. 내 스타일이 예상 간격에서 실패하는 예가 있습니까? (또는 이것은 단지 코드 스타일에 관한 것입니다)

MWE:

\documentclass{article}
\usepackage{parskip}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}
\setlength{\parskip}{1cm plus 0cm minus 0cm}
\setlength{\parindent}{0pt}

\newcommand{\expectedVSkip}[2][2.2cm]{\begin{tikzpicture}[overlay,remember picture,baseline=0pt]\node[use as bounding box,inner sep=0,outer sep=0] at (0,0) (A){\vphantom{\texttt{p}}};\draw[->,blue] (A.south)--node[midway,right]{$#2$}($(A.south)+(0,-{#2})$);\draw[->,thin,blue] ($(A.south)+(-{#1},0)$)--($(A.south)+(0,0)$);\draw[->,thin,blue] ($(A.south)+(-{#1},-{#2})$)--($(A.south)+(0,-{#2})$);\end{tikzpicture}}

\begin{document}

This is the first paragraph that will have a space of the \verb|\parskip|$=1\;cm$ length from the following command since no \verb|\vspace|\expectedVSkip{1cm} command is added here.

This is the second paragraph that will have a space of $0.5\;cm$ from the folowing paragraph since a \verb|\vspace{-0.5cm}|\expectedVSkip{0.5cm} command is added just in its end.\vspace{-0.5cm}

This\vspace{2cm} is the third paragraph with a \verb|\vspace{2cm}|\expectedVSkip{2cm} command before the end of its first line. The paragpaph have enough text following, in order to let us discover if the \verb|\vspace| will act from the point of the first linebreak or from the end of this paragraph (Since the command is placed in its first line, the command is supposed to act just at the place that \LaTeX{} will deside to break the line and the paragraph will be an ugly broken paragraph with a strange added vertical space of exactly $2\;cm$). After this paragraph the following paragraph will be in distance of 2cm since an additional (just one) $cm$ have been added through a \verb|\vspace{1cm}|\expectedVSkip{2cm} to the \verb|\parskip|.\vspace{1cm}

This is just the fourth paragraph.


\end{document}

MWE의 출력:

여기에 이미지 설명을 입력하세요

답변1

\vspace단락 끝에 을 사용하면 다음 세로 목록에서 사용하는 것과 동일한 시각적 결과를 얻을 수 있지만 훨씬 더 다르고 더 복잡한 코드 경로를 통해 제공됩니다. vmode에서 vspace를 사용하면 현재 수직 목록에 글루 노드가 직접 추가됩니다. h 모드에서 사용하는 경우 수직 글루는 현재 수평 목록의 vadjust 노드에 추가되며, 줄 바꿈 후 현재 수직 목록으로 마이그레이션되고 vadjust가 포함된 행 뒤의 수직 목록에 다시 삽입됩니다. 마디.

거의 항상 \vspace빈 줄이나 가 앞에 와야 합니다 \par.

실제로는 문서 내에 명시적인 수직 간격 명령이 거의 있어서는 안 되므로 차이가 문제가 되지 않습니다. 그런 경우 일반적으로 클래스에서 설정한 전역 간격이 현재 문서에 적합하지 않다는 신호이며 각 개별 단락에서 간격을 조정하는 것보다 소스에서 이를 수정하는 것이 더 좋습니다.

관련 정보