(Почему) 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}

введите описание изображения здесь

Связанный контент