![Lösung für die deutsche Sprache](https://rvso.com/image/370301/L%C3%B6sung%20f%C3%BCr%20die%20deutsche%20Sprache.png)
Zunächst einmal hier mein 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}
Im Großen und Ganzen macht es genau das, was ich will. Aber leider überschreitet es in einigen Fällen den rechten Rand, wenn die Silbentrennung aufgerufen wird:
Stimmt etwas mit meiner Umgebungsdefinition nicht?
Antwort1
Mit dem Code, den du uns gezeigt hast, musst du eventuell selbst Trennzeichen hinzufügen, wenn ein Wort bereits einen Bindestrich enthält. Schreibe also stattdessen beispielsweise fmssadasd-dnfm
( fms\-sad\-asd-dnfm
Ich habe zwei Positionen für ein gültiges vermutet -
) oder für das Wort mit Bindestrich in deiner Antwort .Pop-Operationen
Pop-Ope\-ra\-tio\-nen
Das vollständige MWE lautet:
\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}
und gibt Ihnen das Ergebnis:
Lösung für die deutsche Sprache
Sie scheinen Deutscher zu sein und die deutsche Sprache zu verwenden: Dann verwenden Sie babel
in Ihrem Code das Paket zur Sprachunterstützung. Mit babel
können Sie ein festes, immer auf Deutsch "=
gedrucktes Wort markieren , aber auch andere (automatische) Silbentrennungen sind zulässig.-
So erhalten Sie mit den folgenden deutschen 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}
Sie erhalten das gewünschte Ergebnis:
Antwort2
Tatsächlich definieren viele andere Sprachdefinitionsdateien für das babel
Paket, neben Deutsch, dieselbe Abkürzung, um explizite Bindestriche zwischen Wörtern einzufügen, ohne die Fähigkeit von TeX, diese Wörter zu trennen, zu beeinträchtigen. Es ist jedoch einfach, mit Hilfe von Anhang H vonDas TeXbook, um ein kleines Makro zu schreiben, das dasselbe tut, ohne von externen Paketen abhängig zu sein.
Tatsächlich sucht TeX vorausschauend nach Wörtern, die ab jedem Verbindungselement in einer horizontalen Liste getrennt werden sollen, sodass es genügt, \nobreak\hskip\z@skip
nach dem expliziten Trennstrich hinzuzufügen: \nobreak
verhindert einen Zeilenumbruch beim folgenden Verbindungselement, aber dieses Verbindungselement „zählt“ trotzdem als Startpunkt für die Vorausschau. Darüber hinaus, um die Trennung des Wortes zu ermöglichen, dasgeht vorausder explizite Bindestrich, ist es notwendig und ausreichend, zwischen dem Wort und dem Bindestrich bestimmte Knotentypen einzufügen, von denen der „billigste“ wahrscheinlich ein leerer \vadjust
Knoten ist. Also:
% 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}
Vergleichen Sie die Ausgabe der beiden \showhyphens
Befehle
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
um zu prüfen, ob alles wie erwartet funktioniert. Sie können sich auch die erzeugte Ausgabe ansehen:
Antwort3
Ich konnte mir einen Workaround ausdenken: Das Problem trat beispielsweise bei dem deutschen Wort Pop-Operationen auf. Statt dessen Pop-Operationen
schrieb ich Pop"=Operationen
which erlaubt zusätzlich die üblichen Silbentrennungen beider Wörter. In diesem speziellen Fall bekam ich
„Pop-Operation-
nen"