我注意到我的文档中存在一些连字符不正确的情况。具体来说,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}