如何在数学模式下正确处理不间断空格?

如何在数学模式下正确处理不间断空格?

我正在尝试以内联方式打印集合列表来说明一些定义。我的代码如下:

$\descendantsplus{\texttt{A}} = \{ \texttt{A}, \texttt{B}, \texttt{C} \},\ \descendantsplus{\texttt{B}} = \{ \texttt{B} \}$

并产生:

在此处输入图片描述

我不喜欢将其descendants(C) = { C }分成两行。我尝试像这样添加 $~$:

$\descendantsplus{\texttt{A}}~=~\{~\texttt{A},~\texttt{B},~\texttt{C}~\},\ \descendantsplus{\texttt{B}}~=~\{~\texttt{B}~\}$

结果如下:

在此处输入图片描述

因此该线根本不会中断并且会创建一条无限长的线。

我读了这个问题的答案:波浪符号(~)在数学模式下起什么作用?,而且似乎 ~ 不是我想要用作分隔符的,但是我发现答案提供的正确分割线的解决方案并不令人满意:

然而,

the set $N_n(R)=\{\,x\in R: x^{n-1}\ne 0\ \text{and}\ x^{n}=0\,\}$

更正确的写法是

the set $N_n(R)=\{\,x\in R: x^{n-1}\ne 0$ and~$x^{n}=0\,\}$

以便给 TeX 更多的机会正确地断线。

有没有什么巧妙的方法可以处理数学模式下的不间断空格?

答案1

我可以用

\documentclass[a4paper]{article}
\usepackage{amsmath}
\usepackage[sc]{mathpazo}
\usepackage{microtype}

\usepackage{showframe} % just for the example

\newcommand{\ancestorplus}[1]{\mathit{ancestor}^{+}(#1)}
\newcommand{\descendantsplus}[1]{\mathit{descendants}^{+}(#1)}

\begin{document}

\noindent
we have:
$\descendantsplus{\mathtt{A}} = \{ \mathtt{A}, \mathtt{B}, \mathtt{C} \}$,
$\descendantsplus{\mathtt{B}} = \{ \mathtt{B} \}$,
$\descendantsplus{\mathtt{C}} = \{ \mathtt{C} \}$,
$\ancestorplus{\mathtt{A}} = \{ \mathtt{A} \}$,
$\ancestorplus{\mathtt{B}} = \{ \mathtt{A,B} \}$,
$\ancestorplus{\mathtt{C}} = \{ \mathtt{A,C} \}$.

\end{document}

使用microtype会产生较少的溢出量。请注意,与您的代码不同,这是不同的公式。只有一个公式是错误的,并且会使 TeX 更少有机会分割一行,因为公式内部的逗号处不允许断行,因此只有二元关系才是可行的断点。

无论如何,如果不拆分,就很难排版此段落=,除非您能够将“我们有:”移至上面的行。

=您可以使用以下方式禁止在特定符号后中断

=\nolinebreak

但这在以下测试的前两种情况下没有帮助,因为没有办法放\{\mathtt{C}\}进行线。在第二个示例中尝试一下。

\documentclass[a4paper]{article}
\usepackage{amsmath}
\usepackage[sc]{mathpazo}
\usepackage{microtype}

\usepackage{showframe} % just for the example

\newcommand{\ancestorplus}[1]{\mathit{ancestor}^{+}(#1)}
\newcommand{\descendantsplus}[1]{\mathit{descendants}^{+}(#1)}

\begin{document}

\noindent
we have:
$\descendantsplus{\mathtt{A}} = \{ \mathtt{A}, \mathtt{B}, \mathtt{C} \}$,
$\descendantsplus{\mathtt{B}} = \{ \mathtt{B} \}$,
$\descendantsplus{\mathtt{C}} = \{ \mathtt{C} \}$,
$\ancestorplus{\mathtt{A}} = \{ \mathtt{A} \}$,
$\ancestorplus{\mathtt{B}} = \{ \mathtt{A,B} \}$,
$\ancestorplus{\mathtt{C}} = \{ \mathtt{A,C} \}$.

\bigskip

\noindent
have:
$\descendantsplus{\mathtt{A}} = \{ \mathtt{A}, \mathtt{B}, \mathtt{C} \}$,
$\descendantsplus{\mathtt{B}} = \{ \mathtt{B} \}$,
$\descendantsplus{\mathtt{C}} = \{ \mathtt{C} \}$,
$\ancestorplus{\mathtt{A}} = \{ \mathtt{A} \}$,
$\ancestorplus{\mathtt{B}} = \{ \mathtt{A,B} \}$,
$\ancestorplus{\mathtt{C}} = \{ \mathtt{A,C} \}$.

\bigskip

\noindent
$\descendantsplus{\mathtt{A}} = \{ \mathtt{A}, \mathtt{B}, \mathtt{C} \}$,
$\descendantsplus{\mathtt{B}} = \{ \mathtt{B} \}$,
$\descendantsplus{\mathtt{C}} = \{ \mathtt{C} \}$,
$\ancestorplus{\mathtt{A}} = \{ \mathtt{A} \}$,
$\ancestorplus{\mathtt{B}} = \{ \mathtt{A,B} \}$,
$\ancestorplus{\mathtt{C}} = \{ \mathtt{A,C} \}$.

\end{document}

在此处输入图片描述

顺便说一句,\texttt这是错误的,因为它只改变字体系列,而不改变其他属性,所以你会在定理陈述中得到斜体字母。

答案2

您可以使用附加括号来抑制数学中的断点:

\documentclass{article}
\usepackage{amsmath}
\textwidth=1cm
\begin{document}

$\text{abc} = C $

${\text{abc} = C} $ %no break


\end{document}

在此处输入图片描述

相关内容