我尝试仅在定义了变量时才使用特定部分。一切似乎都有效,但是 B 人的姓名和地址之间有一个额外的空格,尽管使用的代码与 A 人相同...
\documentclass{article}
\setlength{\parindent}{0pt}
\newcommand{\AnredeMieterA}{Mrs.}
\newcommand{\NameMieterA}{Person A}
\newcommand{\AdresseMieterA}{address A}
\newcommand{\AnredeMieterB}{Mrs.}
\newcommand{\NameMieterB}{Person B}
\newcommand{\AdresseMieterB}{address B}
\begin{document}
\medskip \textbf{\AnredeMieterA\ \NameMieterA}\\
\medskip wohnhaft \textbf{\AdresseMieterA}\\
\ifx\NameMieterB\undefined
\else
\medskip sowie \\
\medskip \textbf{\AnredeMieterB\ \NameMieterB}\\
\medskip wohnhaft \textbf{\AdresseMieterB}\\
\fi
\end{document}
为什么?
答案1
\medskip
在水平模式下\vspace{\medskipamount}
的使用\vspace
不会立即添加垂直空格,而是在当前行之后添加。
因为\\
在对齐文本中不会形成段落,所以在 之后仍然处于水平模式\\
。因此,\medskip
beforewohnhaft
会在 之前添加空格,sowie
而不是在 之前wohnhaft
。
\par
正如 David 在评论中解释的那样,使用 而不是 ,结果会有所不同\\
。这是因为,在\par
您始终处于垂直模式之后,在垂直模式下会\vspace
立即添加垂直空间:
\documentclass{article}
\setlength{\parindent}{0pt}
\newcommand{\AnredeMieterA}{Mrs.}
\newcommand{\NameMieterA}{Person A}
\newcommand{\AdresseMieterA}{address A}
\newcommand{\AnredeMieterB}{Mrs.}
\newcommand{\NameMieterB}{Person B}
\newcommand{\AdresseMieterB}{address B}
\begin{document}
\medskip \textbf{\AnredeMieterA\ \NameMieterA}\par
\medskip wohnhaft \textbf{\AdresseMieterA}\par
\ifx\NameMieterB\undefined
\else
\medskip sowie \par
\medskip \textbf{\AnredeMieterB\ \NameMieterB}\par
\medskip wohnhaft \textbf{\AdresseMieterB}\par
\fi
\end{document}
另一个建议是使用可选参数\\
:
\documentclass{article}
\setlength{\parindent}{0pt}
\newcommand{\AnredeMieterA}{Mrs.}
\newcommand{\NameMieterA}{Person A}
\newcommand{\AdresseMieterA}{address A}
\newcommand{\AnredeMieterB}{Mrs.}
\newcommand{\NameMieterB}{Person B}
\newcommand{\AdresseMieterB}{address B}
\begin{document}
\textbf{\AnredeMieterA\ \NameMieterA}\\[\medskipamount]
wohnhaft \textbf{\AdresseMieterA}\\[\medskipamount]
\ifx\NameMieterB\undefined
\else
sowie \\[\medskipamount]
\textbf{\AnredeMieterB\ \NameMieterB}\\[\medskipamount]
wohnhaft \textbf{\AdresseMieterB}
\fi
\end{document}
或者
\documentclass{article}
\setlength{\parindent}{0pt}
\newcommand{\AnredeMieterA}{Mrs.}
\newcommand{\NameMieterA}{Person A}
\newcommand{\AdresseMieterA}{address A}
\newcommand{\AnredeMieterB}{Mrs.}
\newcommand{\NameMieterB}{Person B}
\newcommand{\AdresseMieterB}{address B}
\begin{document}
\textbf{\AnredeMieterA\ \NameMieterA}%
\\[\medskipamount] wohnhaft \textbf{\AdresseMieterA}%
\ifx\NameMieterB\undefined
\else
\\[\medskipamount] sowie
\\[\medskipamount] \textbf{\AnredeMieterB\ \NameMieterB}
\\[\medskipamount] wohnhaft \textbf{\AdresseMieterB}
\fi
\end{document}
但是因为我会避免\\
在两端对齐的文本中使用,所以我建议明确切换到不规则文本,或者使用\raggedright
或:
\documentclass{article}
\newcommand{\AnredeMieterA}{Mrs.}
\newcommand{\NameMieterA}{Person A}
\newcommand{\AdresseMieterA}{address A}
\newcommand{\AnredeMieterB}{Mrs.}
\newcommand{\NameMieterB}{Person B}
\newcommand{\AdresseMieterB}{address B}
\begin{document}
\begin{flushleft}
\textbf{\AnredeMieterA\ \NameMieterA}%
\\[\medskipamount] wohnhaft \textbf{\AdresseMieterA}%
\ifx\NameMieterB\undefined
\else
\\[\medskipamount] sowie
\\[\medskipamount] \textbf{\AnredeMieterB\ \NameMieterB}
\\[\medskipamount] wohnhaft \textbf{\AdresseMieterB}
\fi
\end{flushleft}
\end{document}
所有示例都会导致块的行之间垂直间距相同,但如果块前后有文本,则块前后的垂直距离可能会有所不同。如果\parskip
要更改,第一个例子也可能不同。