Align Environment 中的词汇表

Align Environment 中的词汇表

在对齐环境中使用词汇表命令似乎会搞乱标签对齐。

如何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,不是吗?

相关内容