我注意到我的文檔中存在一些連字不良的情況。具體來說,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}