首先,这是我的 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-Operationen
写Pop-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"=Operationen
which 还允许两个单词的常见连字符。在这个特殊情况下,我得到了
“流行操作-
嫩