(Warum) führt enumitem zu schlechter Silbentrennung?

(Warum) führt enumitem zu schlechter Silbentrennung?

Ich habe in meinem Dokument einige Fälle von schlechter Silbentrennung bemerkt. Insbesondere trennt LaTeX Wörter mit Bindestrich wie „large-scale“ irgendwoandereals der Bindestrich. (Ich dachte, das wäre etwas, was LaTeX bekanntermaßen ablehnt!)

Bisher ist mir das Problem nur bei Inline-Listen aufgefallen, die mit dem enumitemPaket erstellt wurden. Vielleicht ist das nur Zufall, aber ich sehe das Problem nie bei ähnlich formuliertem Text, der keine Inline-Listen verwendet. Hier ist ein minimales Beispiel:

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

Ausgabe:

Ausgabe des obigen Codes mit einem seltsamen Zeilenumbruch im „großen Maßstab“

Was ist hier los? Ist es enumitemdas, was den Fehler verursacht? Gibt es trotzdem eine Möglichkeit, das Problem zu beheben? Ich habe versucht, large-scalees zu ändern \mbox{large}-\mbox{scale}, aber LaTeX weigert sich, die Zeile am Bindestrich zu unterbrechen. (Auf jeden Fall würde ich eine globale Lösung einer vorziehen, bei der ich jedes falsch gesetzte Wort manuell suchen und korrigieren muss.)

Antwort1

Dies liegt daran, dass enumerate*der Inhalt in Boxen verpackt wird und dann ausgeführt wird \unhbox. Kein Wunder, dass dies bei XeLaTeX (mit nicht veralteten Schriftarten) und LuaLaTeX nicht passiert.

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

Bildbeschreibung hier eingeben

Boxtext verliert den Bezug zur aktuellen Sprache und es können mysteriöse Dinge passieren. Verwenden Sie 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}

Bildbeschreibung hier eingeben

Ein anderes Beispiel:

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

Bildbeschreibung hier eingeben

verwandte Informationen