私の文書にはハイフネーションがうまくいっていない箇所がいくつかあることに気付きました。具体的には、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}