在对齐环境中使用词汇表命令似乎会搞乱标签对齐。
如何gls{...}
在对齐环境中使用命令而不改变标签位置?
考虑以下代码:
\documentclass[a4paper,10pt]{article}
\usepackage{amsmath,amsfonts,glossaries}
\usepackage[parfill]{parskip}
\newacronym{E}{\ensuremath{E}}{Energy}
\makeglossaries
\begin{document}
Standard gather environment
\begin{gather}
E = mc^2
\end{gather}
Glossaries Command in Align:
\begin{align}
\gls{E} &= mc^2
\end{align}
Same align environment, with the `gls` command missing:
\begin{align}
E &= mc^2
\end{align}
\end{document}
得出以下结果,对齐差异应该很明显:
答案1
解释已在egreg 的回答。程序包amsmath
对方程进行两次处理。首先测量方程,以便了解是否必须对宽方程移动方程编号。然后实际设置方程。
\gls{E}
改变其外观。在测量步骤中,它第一次使用长格式调用。然后在第二步中,它生成短格式,让人对amsmath
预期的长格式感到困惑。
\glsunset
如果第一次设置条目,则以下示例修补设置标志。可以通过开关检测测量阶段\ifmeasuring@
:
\documentclass[a4paper,10pt]{article}
\usepackage{amsmath,amsfonts,glossaries}
\usepackage[parfill]{parskip}
\newacronym{E}{\ensuremath{E}}{Energy}
\makeglossaries
\makeatletter
\let\org@glsunset\glsunset
\renewcommand*{\glsunset}[1]{%
\ifmeasuring@
\else
\org@glsunset{#1}%
\fi
}
\makeatother
\begin{document}
Standard gather environment
\begin{gather}
E = mc^2
\end{gather}
Glossaries Command in Align:
\begin{align}
\text{\gls{E}} &= mc^2
\end{align}
Same align environment:
\begin{align}
\text{\gls{E}} &= mc^2
\end{align}
\end{document}
答案2
环境中的材料align
经过两次处理,第一次用于测量,第二次用于实际排版。
由于\gls{E}
之前没有出现,所以在第一遍中它被扩展为长格式,这是 LaTeX 用来决定列宽的格式;但是在第二遍中,首字母缩略词已经出现(在丢弃的框中),所以它以短格式排版。
\gls
在 中使用没有什么意义align
,不是吗?