ドイツ語のソリューション

ドイツ語のソリューション

まず、私の 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-OperationenPop-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}

\showhyphens2つのコマンドの出力を比較する

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。この特別なケースでは、

「ポップオペレーション

ねん

関連情報