TeX 的换行算法是否会对单行上的 QED 符号造成惩罚?

TeX 的换行算法是否会对单行上的 QED 符号造成惩罚?

问题是关于 中的 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}

在此处输入图片描述

相关内容