带有额外字段用于索引符号的张量词汇表条目

带有额外字段用于索引符号的张量词汇表条目

我正在使用 glossaries-extra 包(https://ctan.org/pkg/glossaries-extra?lang=en) 由 TeX Live 2023 提供,用于在我的整个文档中一致地排版数学方程中的张量。

这些数量可以用粗体符号 (σ表示应力张量)或以指数表示法(σ_{ij} 表示应力张量的分量 ij)。索引应由用户提供,如果未提供索引,则采用默认值。这可以通过在单独的条目中定义张量及其分量来实现(带有额外参数的词汇表条目 软件包作者已经回答了这个问题)

% tensor definition with components in extra entry
\newglossaryentry{Strain}{%
category    = {2ndOTnsrs},%
name        = {\ensuremath{\boldsymbol{\varepsilon}}},%
description = {strain tensor},%
}
\newglossaryentry{strain}{%
category    = {2ndOTnsrs},%
name        = {\ensuremath{\varepsilon_{\ijIdx}}},%
description = {components of the \glsdesc{Strain}},%
}

并通过 \gls 之类的命令引用条目

\glsdesc{Strain} \gls{Strain} with components \gls{strain} or \gls{strain}[kl]

产生所需的输出

在此处输入图片描述

但是,定义单个条目会更方便

\newglossaryentry{stress}{%
category    = {2ndOTnsrs},%
name        = {\ensuremath{ \boldsymbol{\sigma}^{} }},%
description = {stress tensor},
components  = {\ensuremath{ \sigma_{\ijIdx} }},%
}

并通过 \glstext 类命令引用数量的索引符号

\glsdesc{stress} \gls{stress} with components \glscomp{stress} or \glscomp{stress}[kl]

我当前的解决方案

% save \glsinsert for \glstext-like commands
\renewcommand*{\glsxtrsaveinsert}[2]{\def\glsinsert{#2}}
% replace indices for \gls-like and \glstext-like commands
\let\origglstextformat\glstextformat
\renewcommand{\glstextformat}[1]{%
    \ifdefempty{\glsinsert}{}{%
        \let\ijIdx\glsinsert%   \ijIdx is set to \glsinsert
        \def\glsinsert{}%       \glsinsert is set to none
    }%    
    \origglstextformat{#1}%
}

产生以下输出

在此处输入图片描述

虽然默认索引被提供的插入正确替换,但插入在表达式的末尾重复。

有没有办法可以摆脱 \glstext 类命令表达式末尾的重复插入?

完整 MWE:https://www.overleaf.com/read/dbqtfrmnpdbh#ba4018

相关内容