![ドイツ語のソリューション](https://rvso.com/image/370301/%E3%83%89%E3%82%A4%E3%83%84%E8%AA%9E%E3%81%AE%E3%82%BD%E3%83%AA%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3.png)
まず、私の MWE は次のとおりです。
\documentclass[oneside, openright, 12pt]{book}
\usepackage{enumitem}
\newenvironment{boldenumerate}
{\begin{enumerate}[label=\textbf{\arabic*.}]}
{\end{enumerate}}
\newcommand\bolditem[1]{\item \textbf{#1}}
\begin{document}
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
\begin{boldenumerate}
\bolditem{Caption:} xxx fsdkjnfdskf sdnjdsnfmdns dnsmfndsmfnds nfdsmn fmssadasd-dnfm nsdmfn msndmnsdbfinsfdn
\bolditem{Another caption:} yy
\end{boldenumerate}
\end{document}
一般的に、これはまさに私が望んでいることを実行します。しかし残念ながら、ハイフネーションが呼び出されると、場合によっては右端を超えてしまいます。
環境定義に何か問題がありますか?
答え1
あなたが示したコードでは、単語にすでにハイフンが含まれている場合は、自分で改行を追加する必要があります。そのため、代わりに、 たとえば(有効な の 2 つの位置を推測しました)fmssadasd-dnfm
と記述するか、回答にハイフンを含む単語がある場合は と記述します。fms\-sad\-asd-dnfm
-
Pop-Operationen
Pop-Ope\-ra\-tio\-nen
完全な MWE は次のとおりです。
\documentclass[oneside, openright, 12pt]{book}
\usepackage{enumitem}
\newenvironment{boldenumerate}
{\begin{enumerate}[label=\textbf{\arabic*.}]}
{\end{enumerate}}
\newcommand\bolditem[1]{\item \textbf{#1}}
\begin{document}
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem
ipsum dolor sit amet.
\begin{boldenumerate}
\bolditem{Caption:} xxx fsdkjnfdskf sdnjdsnfmdns dnsmfndsmfnds
nfdsmn fms\-sad\-asd-dnfm nsdmfn msndmnsdbfinsfdn
\bolditem{Caption:} xxx fsdkjnfdskf sdnjdsnfmdns dnsmfndsmfnds
nfd Pop-Ope\-ra\-tio\-nen nsdmfn msndmnsdbfinsfdn
\bolditem{Another caption:} yy
\end{boldenumerate}
\end{document}
結果は次のようになります:
ドイツ語のソリューション
あなたはドイツ語を使用しているドイツ人のようです。その場合、babel
言語サポートのためにコード内でパッケージを使用します。を使用すると、常にドイツ語で印刷される固定の単語をマークbabel
できますが、他の (自動) ハイフン付けも許可されます。"=
-
それで、あなたは次のドイツのMWEを得るでしょう
\documentclass[oneside, openright, 12pt]{book}
\usepackage[ngerman]{babel} % <=========================================
\usepackage{enumitem}
\usepackage{blindtext} % to get dummy text in used language, if supported
\newenvironment{boldenumerate}
{\begin{enumerate}[label=\textbf{\arabic*.}]}
{\end{enumerate}}
\newcommand\bolditem[1]{\item \textbf{#1}}
\begin{document}
\blindtext
\begin{boldenumerate}
\bolditem{Caption:} xxx fsdkjnfdskf sdnjdsnfmdns dnsmfndsmfnds
nfdsmn fmssadasd"=dnfm nsdmfn msndmnsdbfinsfdn % <==================
\bolditem{Caption:} xxx fsdkjnfdskf sdnjdsnfmdns dnsmfndsmfnds
nfd Pop"=Operationen nsdmfn msndmnsdbfinsfdn % <====================
\bolditem{Another caption:} yy
\end{boldenumerate}
\end{document}
希望通りの結果が得られます:
答え2
実際、ドイツ語以外の多くの言語定義ファイルではbabel
、同じ省略形を定義して、単語間にハイフンを挿入してもTeXのハイフン付け機能に影響しません。しかし、付録Hの助けを借りれば、TeXbook について外部パッケージに依存せずに、同じことを実行する小さなマクロを記述します。
実際、TeXは水平リストの各グルー項目からハイフンで区切られる単語を先読みするので、\nobreak\hskip\z@skip
明示的なハイフンの後に を追加すれば十分です。 は、\nobreak
次のグルーで改行を禁止しますが、そのグルーは先読みの開始点として「カウント」されます。さらに、単語のハイフン区切りを許可するには、先行する明示的なハイフンの代わりに、単語とハイフンの間に特定の種類のノードを挿入することが必要かつ十分であり、その中で「最も安価な」のはおそらく空の\vadjust
ノードです。つまり、
% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly
% declare the paper format.
\usepackage[T1]{fontenc} % Not always necessary, but recommended.
% End of standard header. What follows pertains to the problem at hand.
\makeatletter
\newcommand*\+{\vadjust{}-\nobreak\hskip\z@skip}
\makeatother
\begin{document}
\showhyphens{arithmetical-mathematical-geometrical}
\showhyphens{arithmetical\+mathematical\+geometrical}
This book treats of several complex problems that are
arithmetical\+mathematical\+geometrical in nature. I~don't believe, however,
that such word as the compound adjective
``arithmetical\+mathematical\+geometrical'' exists in English: indeed, I've just
made it up.
\end{document}
\showhyphens
2つのコマンドの出力を比較する
Underfull \hbox (badness 10000) in paragraph at lines 18--18
[] \T1/cmr/m/n/10 arithmetical-mathematical-geometrical
Underfull \hbox (badness 10000) in paragraph at lines 19--19
[] \T1/cmr/m/n/10 arith-meti-cal-math-e-mat-i-cal-ge-o-met-ri-cal
すべてが期待通りに動作するか確認します。生成された出力を確認することもできます。
答え3
回避策を考え出せました。たとえば、ドイツ語の単語Pop-Operationenで問題が発生しました。 の代わりに、両方の単語の一般的なハイフン付けを許可するようにPop-Operationen
記述しましたPop"=Operationen
。この特別なケースでは、
「ポップオペレーション
ねん