我已经重新定义了命令\par
如下所示这篇TUGboat文章(第 232 页)。
但是当我使用环境时,center
段落的结构会以奇怪的方式被修改(例如 if \parfillskip = 0pt
)。
我不知道center
环境为什么以及如何影响 的定义\par
,您有什么想法吗?
\documentclass{article}
\usepackage{lipsum}
\let\oldpar\par
\def\newpar{%
\ifhmode\unskip%
\strut\vadjust{}\nobreak%
\discretionary{}%
{\hbox{\hskip2\parindent%
\vrule depth 273sp%
width 0sp height \ht\strutbox}}%
{\hbox{\hskip\parindent}}%
\hskip-2\parindent minus 2\parindent%
\hskip\hsize minus\hsize%
\kern0pt\parfillskip0pt%
\oldpar%
\ifdim\prevdepth=273sp%
\nobreak%
\vskip-2\baselineskip%
\hbox{\strut}%
\fi%
\fi}
\AtBeginDocument{\def\par{\newpar}}
\begin{document}
\lipsum[1-2]
\begin{center}
\textbf{Bla bla}
\end{center}
\lipsum[1-2]
\end{document}
答案1
\end{center}
(像几乎所有的 latex 显示和列表环境一样)最终执行\endtrivlist
,进而执行\@doendpe
定义为
\def\@doendpe{\@endpetrue
\def\par{\@restorepar
\clubpenalty\@clubpenalty
\everypar{}\par\@endpefalse}\everypar
{{\setbox\z@\lastbox}%
\everypar{}\@endpefalse}}
这将重新定义\par
以控制环境后的缩进。如果center
前面有一个段落结束,则其后的文本将开始一个新段落。
章节标题使用类似的定义来\par
抑制章节后第一段的缩进。
\par
在其他几个地方被重新定义,特别是在表格中,minipage
所以基本上,问题中所建议的定义不能用作全局定义(没有在乳胶中进行更具侵入性的改变),但可以在仅由简单段落组成的受限环境中使用。