![Solución para el idioma alemán.](https://rvso.com/image/370301/Soluci%C3%B3n%20para%20el%20idioma%20alem%C3%A1n..png)
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:
¿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-dnfm
escribe, por ejemplo fms\-sad\-asd-dnfm
(supuse dos posiciones para una válida -
) o para tu palabra con guión en tu respuesta, Pop-Operationen
escribe 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:
Solución para el idioma alemán.
Parece que eres alemán y usas el idioma alemán: entonces usarás el paquete babel
en tu código para soporte de idioma. Con babel
puede 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:
Respuesta2
De hecho, muchos otros archivos de definición de idioma para el babel
paquete, 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@skip
después del guión explícito: \nobreak
prohibirá 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 \vadjust
nodo 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 \showhyphens
comandos.
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:
Respuesta3
Se me ocurrió una solución: el problema se produjo, por ejemplo, con la palabra alemana Pop-Operationen. En lugar de Pop-Operationen
escribí 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"