(为什么)enumitem 会导致连字不良?

(为什么)enumitem 会导致连字不良?

我注意到我的文档中存在一些连字符不正确的情况。具体来说,LaTeX 会在某些地方断开带连字符的单词,例如“large-scale”其他而不是连字符。(我认为这是 LaTeX 拒绝做的事情!)

到目前为止,我只在使用该enumitem包生成的内联列表中注意到了这个问题。也许这只是一个巧合,但我从未在不使用内联列表的类似措辞的文本中看到过这个问题。这是一个最简单的例子:

\documentclass[a4paper,11pt]{article}
\usepackage[inline]{enumitem}
\begin{document}
% This paragraph is hyphenated correctly
Foo bar f:
(i)~Foo bar foo bar foo bar foo foo bar foo bar foo bar large-scale foo bar foo bar.

% This paragraph is hyphenated poorly
Foo bar f:
\begin{enumerate*}[label=(\roman*)]
\item Foo bar foo bar foo bar foo foo bar foo bar foo bar large-scale foo bar foo bar.
\end{enumerate*}
\end{document}

输出:

上述代码的输出,显示了一个奇怪的“大规模”换行符

这是怎么回事?是enumitem这个的错吗?无论如何,有什么办法可以修复它吗?我尝试更改large-scale\mbox{large}-\mbox{scale},但 LaTeX 拒绝在连字符处换行。(无论如何,我更喜欢一个全局解决方案,而不是需要我手动查找和修复每个错误连字符的单词的解决方案。)

答案1

这是因为 将enumerate*内容装箱然后执行\unhbox。难怪 XeLaTeX(使用非传统字体)和 LuaLaTeX 不会发生这种情况。

\documentclass[a4paper,11pt]{article}
\usepackage[inline]{enumitem}

\begin{document}

% This paragraph is hyphenated correctly
Foo bar f:
(i)~Foo bar foo bar foo bar foo foo bar foo bar foo bar large-scale foo bar foo bar.

% This paragraph is hyphenated poorly
Foo bar f:
\begin{enumerate*}[label=(\roman*)]
\item Foo bar foo bar foo bar foo foo bar foo bar foo bar large-scale foo bar foo bar.
\end{enumerate*}

% This paragraph is hyphenated poorly
\setbox0=\hbox{Foo bar f:
(i)~Foo bar foo bar foo bar foo foo bar foo bar foo bar large-scale foo bar foo bar.}
\leavevmode\unhbox0

\end{document}

在此处输入图片描述

装箱文本会失去对当前语言的引用,并且可能会发生神秘的事情。使用mode=unboxed

\documentclass[a4paper,11pt]{article}
\usepackage[inline]{enumitem}

\begin{document}

% This paragraph is hyphenated correctly
Foo bar f:
(i)~Foo bar foo bar foo bar foo foo bar foo bar foo bar large-scale foo bar foo bar.

% This paragraph is hyphenated poorly
Foo bar f:
\begin{enumerate*}[label=(\roman*),mode=unboxed]
\item Foo bar foo bar foo bar foo foo bar foo bar foo bar large-scale foo bar foo bar.
\end{enumerate*}

\end{document}

在此处输入图片描述

另一个例子:

\documentclass[twocolumn]{article}

\begin{document}
\parbox{0pt}{\hspace{0pt}supercalifragilistic-expialidocious test}

\vfill\eject

\setbox0=\hbox{supercalifragilistic-expialidocious}
\parbox{0pt}{\hskip0pt\unhbox0\relax\space test}

\end{document}

在此处输入图片描述

相关内容