Solución para el idioma alemán.

Solución para el idioma alemán.

Primero que nada, aquí está mi 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}

En general, hace exactamente lo que quiero que haga. Pero desafortunadamente excede el borde del lado derecho en algunos casos cuando se invoca la separación de palabras:

ingrese la descripción de la imagen aquí

¿Hay algún problema con la definición de mi entorno?

Respuesta1

Con el código que nos mostró, debe agregar posiblemente saltos para agregarlos usted mismo, si una palabra ya contiene un guión. Entonces, en lugar de eso, fmssadasd-dnfmescribe, por ejemplo fms\-sad\-asd-dnfm(supuse dos posiciones para una válida -) o para tu palabra con guión en tu respuesta, Pop-Operationenescribe Pop-Ope\-ra\-tio\-nen.

El MWE completo es:

\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}

y te da el resultado:

ingrese la descripción de la imagen aquí

Solución para el idioma alemán.

Parece que eres alemán y usas el idioma alemán: entonces usarás el paquete babelen tu código para soporte de idioma. Con babelpuede utilizar "=para marcar una -palabra fija, siempre impresa en alemán, pero también se permiten otras separaciones de palabras (automáticas).

Entonces obtendrás el siguiente MWE alemán.

\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}

obtienes el resultado deseado:

ingrese la descripción de la imagen aquí

Respuesta2

De hecho, muchos otros archivos de definición de idioma para el babelpaquete, además del alemán, definen la misma taquigrafía para insertar guiones explícitos entre palabras sin afectar la capacidad de TeX para dividir esas palabras. Sin embargo, es fácil, con la ayuda del Apéndice H deEl libro de texto, para escribir una pequeña macro que haga lo mismo, sin depender de paquetes externos.

De hecho, TeX espera que las palabras tengan guiones a partir de cada elemento de pegamento en una lista horizontal, por lo que basta con agregar \nobreak\hskip\z@skipdespués del guión explícito: \nobreakprohibirá un salto de línea en el siguiente pegamento, pero ese pegamento "contará" como un independientemente del punto de partida para la previsión. Además, para permitir la separación de palabras de la palabra queprecedeel guión explícito, es necesario, y suficiente, insertar entre la palabra y el guión ciertos tipos de nodos, el más “barato” de los cuales probablemente sea un \vadjustnodo vacío. Entonces:

% 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}

Compare la salida de los dos \showhyphenscomandos.

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

para comprobar que todo funciona como se esperaba. También puede echar un vistazo al resultado producido:

Salida del código

Respuesta3

Se me ocurrió una solución: el problema se produjo, por ejemplo, con la palabra alemana Pop-Operationen. En lugar de Pop-Operationenescribí Pop"=Operationen, que además permite la separación de palabras común entre ambas palabras. En este caso especial tengo

"Pop-Operación-

nen"

información relacionada