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 enumitem
Paket 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:
Was ist hier los? Ist es enumitem
das, was den Fehler verursacht? Gibt es trotzdem eine Möglichkeit, das Problem zu beheben? Ich habe versucht, large-scale
es 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}
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}
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}