问题是关于 中的 qed 符号amsthm
。例如
\documentclass{article}
\usepackage{amsthm}
\begin{document}
\begin{proof}
asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdfas
\end{proof}
\end{document}
我得到以下信息:
我一点也不喜欢这样,因为如果文本在校样后继续,就会有很多空白,在我看来,这会打乱文本的流畅性(甚至比段落在最后一行以一个单词结尾更糟糕,据我所知,这在排版中也是不受欢迎的)。所以我想知道 TeX 是否会尝试避免这种情况,以及我是否可以增加惩罚。
答案1
amsthm 定义\qed
为
\DeclareRobustCommand{\qed}{%
\ifmmode \mathqed
\else
\leavevmode\unskip\penalty9999 \hbox{}\nobreak\hfill
\quad\hbox{\qedsymbol}%
\fi
}
因此它已经分配了小于 10000(最大值)的最大可能惩罚,这意味着在您的示例中,没有可行的断点的惩罚小于这个值。
答案2
有几种策略,但主要的策略是编辑有问题的段落。
策略1:\linebreak
策略2:\looseness=1
这里策略 2 有两种变体,后者可以避免\mbox
连字符。
我担心将其自动化会非常复杂和脆弱,但您可以尝试添加\looseness=1
到的定义\qed
,这可能会在某些情况下起作用。
\documentclass{article}
\usepackage{amsthm}
\begin{document}
\begin{proof}
asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdfa.
\end{proof}
\begin{proof}
asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf
\linebreak asdfa.
\end{proof}
\begin{proof}
asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf
asdfa.\looseness=1
\end{proof}
\begin{proof}
asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf
\mbox{asdfa}.\looseness=1
\end{proof}
\end{document}