Solução para o idioma alemão

Solução para o idioma alemão

Primeiro de tudo, aqui está meu 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}

Em geral, ele faz exatamente o que eu quero. Mas, infelizmente, excede a borda direita em alguns casos quando a hifenização é invocada:

insira a descrição da imagem aqui

Há algo errado com minha definição de ambiente?

Responder1

Com o código que você nos mostrou você deve adicionar possivelmente quebras para adicionar por conta própria, se uma palavra já contiver um hífen. Então, em vez disso, você fmssadasd-dnfmescreve, por exemplo fms\-sad\-asd-dnfm(adivinhei duas posições para um válido -) ou para sua palavra com hífen em sua resposta, Pop-Operationenescreva Pop-Ope\-ra\-tio\-nen.

O MWE completo é:

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

e dá o resultado:

insira a descrição da imagem aqui

Solução para o idioma alemão

Parece que você é alemão e usa o idioma alemão: então você usará o pacote babelem seu código para suporte ao idioma. Com babelvocê pode usar "=para marcar uma -palavra fixa, sempre impressa em alemão, mas outras hifenizações (automáticas) também são permitidas.

Então você obterá o seguinte MWE alemão

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

você obtém o resultado desejado:

insira a descrição da imagem aqui

Responder2

Na verdade, muitos outros arquivos de definição de idioma para o babelpacote, além do alemão, definem a mesma abreviação para inserir hífens explícitos entre palavras sem afetar a capacidade do TeX de hifenizar essas palavras. No entanto, é fácil, com a ajuda do Apêndice H doO TeXbook, para escrever uma pequena macro que faça o mesmo, sem depender de pacotes externos.

Na verdade, o TeX espera que as palavras sejam hifenizadas a partir de cada item de cola em uma lista horizontal, então é suficiente adicionar \nobreak\hskip\z@skipapós o hífen explícito: o \nobreakirá proibir uma quebra de linha na cola seguinte, mas essa cola “contará” como um ponto de partida para o futuro, não obstante. Além disso, para permitir a hifenização da palavra queprecedeo hífen explícito, é necessário e suficiente inserir entre a palavra e o hífen certos tipos de nós, dos quais o “mais barato” é provavelmente um \vadjustnó vazio. Então:

% 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 a saída dos dois \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 verificar se tudo funciona conforme o esperado. Você também pode dar uma olhada na saída produzida:

Saída do código

Responder3

Eu poderia descobrir uma solução alternativa: o problema ocorreu com a palavra alemã Pop-Operationen, por exemplo. Em vez de Pop-Operationenescrevi, Pop"=Operationeno que permite adicionalmente as hifenizações comuns de ambas as palavras. Neste caso especial eu consegui

"Pop-Operação-

não"

informação relacionada