Я заметил несколько случаев плохой расстановки переносов в моем документе. В частности, 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}