(Por que) enumitem causa má hifenização?

(Por que) enumitem causa má hifenização?

Tenho notado alguns casos de hifenização inadequada em meu documento. Especificamente, o LaTeX está quebrando palavras hifenizadas como "grande escala" em algum lugaroutrodo que o hífen. (Achei que isso fosse algo que o LaTeX notoriamente se recusa a fazer!)

Até agora notei o problema apenas nas listas inline produzidas com o enumitempacote. Talvez seja apenas uma coincidência, mas nunca vejo o problema em textos com palavras semelhantes que não usam listas embutidas. Aqui está um exemplo mínimo:

\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}

Saída:

Saída do código acima, mostrando uma estranha quebra de linha em "grande escala"

O que está acontecendo aqui? Será enumitemque é culpa? Independentemente disso, existe alguma maneira de consertar isso? Tentei mudar large-scalepara, \mbox{large}-\mbox{scale}mas o LaTeX se recusa a quebrar a linha no hífen. (Em qualquer caso, eu preferiria uma solução global em vez de uma que exija que eu localize e corrija manualmente cada palavra mal hifenizada.)

Responder1

É devido ao fato de que enumerate*encaixota o conteúdo e depois o faz \unhbox. Não admira que isso não aconteça com XeLaTeX (com fontes não legadas) e 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}

insira a descrição da imagem aqui

O texto do boxe perde a referência ao idioma atual e coisas misteriosas podem acontecer. Usar 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}

insira a descrição da imagem aqui

Outro exemplo:

\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}

insira a descrição da imagem aqui

informação relacionada