德语解决方案

德语解决方案

首先,这是我的 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

使用您向我们展示的代码,如果单词中已经包含连字符,则可能需要自行添加换行符。因此,您应改为 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 对这些单词进行连字符处理的能力。不过,借助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}

\showhyphens比较两个命令的输出

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"=Operationenwhich 还允许两个单词的常见连字符。在这个特殊情况下,我得到了

“流行操作-

相关内容