在以下 MWE 中,我有一段居中的不可分割文本。问题是,这会导致额外的垂直空间,因此从视觉上看,居中的文本在两个段落之间不是垂直居中的。处理这个问题的最佳方法是什么?
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\lipsum[2]
\begin{center}
\texttt{a~sentence~that~is~long~and~continues~with~the~reason~so~that~it~sticks~out~a~bit}
\end{center}
\lipsum[3]
\end{document}
答案1
不要使用中心(内部是一个列表):
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\lipsum[2]
{\par\bigskip\centering
\texttt{a~sentence~that~is~long~and~continues~with~the~reason~so~that~it~sticks~out~a~bit}
\par\bigskip}
\lipsum[3]
\end{document}
答案2
您一定想知道为什么牢不可破的文本前面的垂直空间比后面的垂直空间大,对吗?
Ulrike 告诉你一个处理这个问题的好方法,我想解释一下为什么会发生这种情况。问题确实是环境定义有些不恰当center
。它以 开头\trivlist\centering\item\relax
,因此它\centering
在一个简单的列表中使用了命令。现在\item
将一个(空)标签作为第一个要居中的对象,而你的不可分割文本不适合这一行,因此 TeX 决定将其放在下一个行。您可以通过重新定义来可视化这一点,\trivlist
这样标签就不再是空的了:
请注意,LABEL
由于我将其定义为向左突出,因此它并未居中。
\documentclass{article}
\makeatletter
\def\trivlist{%
\parsep\parskip
\@nmbrlistfalse
\@trivlist
\labelwidth\z@
\leftmargin\z@
\itemindent\z@
%\let\@itemlabel\@empty
\def\@itemlabel{\llap{LABEL}}
\def\makelabel##1{##1}}
\makeatother
\begin{document}
\noindent left \hfill right
\begin{center}
\texttt{a~sentence~that~is~not~so~long}
\end{center}
\noindent left \hfill right
\begin{center}
\texttt{a~sentence~that~is~long~and~continues~with~the~reason~so~that~it~sticks~out~a~bit}
\end{center}
\noindent left \hfill right
\end{document}
center
我认为,如果您重新定义环境以使用 Ulrike 的建议,那么您是安全的。请注意\begingroup
和\endgroup
!
\renewenvironment{center}{\begingroup\par\bigskip\centering}{\par\bigskip\endgroup}