如何使用词汇表中定义的符号来防止内联方程式中的换行符后出现多余的空格?

如何使用词汇表中定义的符号来防止内联方程式中的换行符后出现多余的空格?

我有几个数学符号,它们的定义都在使用glossaries包。例如,

\newglossaryentry{real}
{
    sort={r0},
    name={\ensuremath{\mathbb{R}}},
    description={The field of real numbers}
}

但是,当二元运算符或关系后出现换行符时,例如在等式中$\mathbf{M} \in \gls{real}[^{n \times n}]$,关系后的水平空格不会像往常一样被省略,而是添加到下一行。

有什么方法可以防止插入额外的空格?将整个方程式视为一个原子来防止换行,即通过添加花括号${\mathbf{M} \in \gls{real}[^{n \times n}]}$,在某些情况下可能是一种选择,但通常不是。

任何解决方案都应保留定义的可点击链接和词汇表条目本身。

这是一个完整的最小工作示例,展示了这个问题

\documentclass{article}
\usepackage{amsfonts}
\usepackage{hyperref}
\usepackage[xindy]{glossaries}

\makeglossaries
\newglossaryentry{real}
{
    sort={r0},
    name={\ensuremath{\mathbb{R}}},
    description={The field of real numbers}
}

\begin{document}
Just some useless text to cause a line break followed by random abc $\mathbf{M} \in \gls{real}[^{n \times n}]$ and even more text here so the line is filled appropriately.
Note the excess whitespace before \gls{real}.

Just some useless text to cause a line break followed by random abc ${\mathbf{M} \in \gls{real}[^{n \times n}]}$ and even more text here so the line is filled appropriately.
Note that treating it as an atom causes an overfull hbox.

Just some useless text to cause a line break followed by random abc $\mathbf{M} \in \mathbb{R}^{n \times n}$ and even more text here so the line is filled appropriately.
Note the lack of excess whitespace and linking before \gls{real} when the symbol is used directly.

\printglossaries
\end{document}

答案1

我找到了一种似乎适合我的用例的解决方法:将二元关系本身括在花括号中,{}以防止自动添加粗空格。然后手动添加粗空格\;和背面:\allowbreak

$\mathbf{M}\;{\in}\allowbreak\;\gls{real}[^{n \times n}]$

这可以正确中断(并渲染)。对于二元运算符,请使用\:而不是\;如果有人有一个更清晰的解决方案,可以自动应用于任何地方,而不需要本地解决方法,那当然会更好。

相关内容