(為什麼) enumitem 會導致連字符不良?

(為什麼) enumitem 會導致連字符不良?

我注意到我的文檔中存在一些連字不良的情況。具體來說,LaTeX 在某處破壞了連字符,例如“大規模”其他比連字符。 (我認為這是 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}

在此輸入影像描述

相關內容