amsmath nobreakdash 定义允许正常连字符

amsmath nobreakdash 定义允许正常连字符

在里面amsmath包装文档中写道:

\newcommand{\n}[1]{$n$\nobreakdash-\hspace{0pt}}

最后一个例子显示了如何禁止连字符后的换行,但允许在下一个单词中进行正常连字符连接。(在连字符后添加一个零宽度空格即可。)

我认为这可以用来制作更通用的命令\nbhyphen\nbendash就像这样:

\documentclass{minimal}
\usepackage{mathtools}
\newcommand{\nbhyphen}{\nobreakdash-\hspace{0pt}}
\newcommand{\nbendash}{\nobreakdash--\hspace{0pt}}
\begin{document}
Electron\nbhyphen electron interaction. Maxwell\nbendash{}Boltzmann distribution.
\end{document}

然后在我的文档中使用它们,而不是明确地写出破折号。

问题:

这是个好主意吗?它在任何地方都能用吗?还是会引发无法预料的问题?我应该在命令后加上空格吗?或者{}?为什么这不是 LaTeX 中的默认行为?

答案1

为什么有些东西默认不可用是一个很难回答的问题。在这种情况下,谁愿意总是用这么长的命令来标记文档源?如果只担心少数人,那么这些命令最终将变得不那么有用。

然而,LaTeX 作为 Babel 语言界面的一部分提供了类似的东西,并且以一种使输入相当轻松的方式:所有支持"Babel 速记的语言都有缩写,如"=(复合词标记允许在其余部分使用连字符)和一堆其他缩写,如""和,"-"~定义了显式或隐式连字符的各种替代行为。

然而,它们都不是您真正想要的,原因在于在德语等语言中,复合词标记实际上是一个可取的断点(而不是禁止的断点)。

此外,这些简写只针对某些语言设置,通常是那些需要变音字符输入法的语言。因此,例如,对于英语,默认情况下没有设置任何内容。但你总是可以定义自己的简写,因此,为了使用(在我看来)有用的输入语法实现你想要的效果,你可以这样做

\documentclass{article}

\usepackage[english]{babel}
\useshorthands{"}
\defineshorthand{"=}{\mbox{-}\nobreak\hspace{0pt}}

\begin{document}
  \fbox{\parbox{22mm}{Gutenberg-Universit\"at}}

  \fbox{\parbox{22mm}{Gutenberg"=Universit\"at}}
\end{document}

这给你

在此处输入图片描述

答案2

一定要将它们放在宏中(但要记住另外两个宏名)。它们可能会在文本miniparscaptions其他窄文本中产生不良输出。请参阅 MWE 以了解marginpar问题。

\documentclass[11pt]{scrartcl}
\usepackage{mathtools,lipsum}
\newcommand{\nbhyphen}{\nobreakdash-\hspace{0pt}}
\newcommand{\nbendash}{\nobreakdash--\hspace{0pt}}
\usepackage{tikz}    
\begin{document}

\marginpar{\raggedright Electron\nbhyphen electron interaction. Maxwell\nbendash{}Boltzmann distribution.}
\lipsum*[1]

\marginpar{\raggedright Electron-electron interaction. Maxwell--Boltzmann distribution.}
\lipsum*[1]
\end{document}

手稿完成后,我宁愿手动进行此类微修改。

相关内容