如何微调数学和文本混合的连字

如何微调数学和文本混合的连字

在数学文本中,通常会引入遵循以下格式的特殊术语

$math$-word

一个例子:$\alpha$-conversion$k$-clique

现在,使用此模式时遇到的第一个问题是word连字算法不再识别。一个简单的解决方法是在单词前插入一个 0 长度的空格:

$math$-\hskip0pt word

通过此技巧,连字符模式可以word再次正确使用。

问题是我想避免出现以下换行符:

$math$-
lengthyword

$math$
-lengthyword

并且只允许使用连字符lengthyword

$math$-len-
gthyword

我尝试过,但$math$\nobreak-\nobreak\hskip0pt word无济于事。指导连字符的正确方法是什么?

答案1

在中放置连字符\mbox将阻止其作为断点使用。

编辑:感谢芭芭拉提供了神奇的咒语,避免了需要手动将 后面的单词连字符$math$\mbox{-}。特别是,策略性地放置\nobreak,以及 ,\hspace{0pt}提供了概括:$math$\mbox{-}\nobreak\hspace{0pt}lengthyword

\documentclass{article}
\textwidth1pt
\parindent 0pt
\parskip 1ex
\begin{document}
\mbox{Not this:}
$math$-\hspace{0pt}lengthyword

\mbox{But this:}
$math$\mbox{-}\nobreak\hspace{0pt}lengthyword
\end{document}

在此处输入图片描述

答案2

实际上,有一个现有的命令amsmath可用于此目的:\nobreakdash。它记录在手册第 12 页(texdoc amsmath)。

为了方便起见,这里是相关部分的扫描版。

在此处输入图片描述

答案3

使用 UTF8 输入时,会出现(U+2011 非中断连字符)。我还显示 U+2013 EN DASH 不允许中断

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}

\begin{document}

\parbox{0pt}{\hspace{0pt}% force hyphenation everywhere possible
$p$\nobreakdash-dimensional
$p$‑dimensional % non breaking hyphen
1\nobreakdash--9
1–9 % en-dash
}

\end{document}

在此处输入图片描述

可以更改 U+2011 的定义以允许在以下单词中使用连字符:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{newunicodechar}

\newunicodechar{‑}{\mbox{-}\nobreak\hspace{0pt}}

\begin{document}

\parbox{0pt}{\hspace{0pt}% force hyphenation everywhere possible
$p$\nobreakdash-dimensional
$p$‑dimensional % non breaking hyphen
1\nobreakdash--9
1–9 % en-dash
}

\end{document}

在此处输入图片描述

相关内容