我有几个数学符号,它们的定义都在使用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}]$
这可以正确中断(并渲染)。对于二元运算符,请使用\:
而不是\;
如果有人有一个更清晰的解决方案,可以自动应用于任何地方,而不需要本地解决方法,那当然会更好。