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}

ここに画像の説明を入力してください

関連情報