在 tikzpicture 内部使用时,第二次使用“gls”会再次打印整个首字母缩略词定义

在 tikzpicture 内部使用时,第二次使用“gls”会再次打印整个首字母缩略词定义

glossaries我在使用和 时遇到了问题tikz。在\glsa 内部使用时tikzpicture,第二次使用 会\gls再次打印整个内容,而不仅仅是首字母缩略词。是否有我不明白的问题?请参阅下面的 MWE'ish 代码。

\documentclass[
    10pt,
    aspectratio=1610,
    x11names,
    ]{beamer}

\definecolor{AADarkBlue}{RGB}{33,26,82}
\definecolor{AAGreyBlue}{RGB}{84,97,110}

\usepackage[automake,acronym,nopostdot,shortcuts=all,nonumberlist,xindy]{glossaries-extra}
\setabbreviationstyle{long-short}
\renewcommand{\glossarypreamble}{\scriptsize}
\makeglossaries
\AtBeginDocument{\glsaddall}

\usepackage{tikz}
\usetikzlibrary{positioning,arrows}
\tikzset{
    block/.style = {rectangle, draw=AAGreyBlue, fill=AADarkBlue!30, text width=3.5em, text centered, rounded corners, minimum height=3em},
    line/.style = {draw=AAGreyBlue, color=AAGreyBlue, -latex'},
    }

\newglossaryentry{PTCA}{
    type=\acronymtype,
    name={PTCA},
    description={perkutane transluminale koronare Angioplastie},
    first={perkutane transluminale koronare Angioplastie (PTCA)}
}

\begin{filecontents}{FlowTherapyOptionsPTCA.tex}
\begin{tikzpicture}[
    node distance = .75cm,
    auto,
    font=\footnotesize,
    ]
    \tikzset{
        every node/.style={
            text=AAGreyBlue
        }
    }
    % Place nodes
    \node [block, text width=8.25em] (PTCA) {\glsfirst{PTCA} notwendig};
\end{tikzpicture}
\end{filecontents}
\begin{filecontents}{FlowDosingScheme.tex}
\begin{tikzpicture}[
    node distance = .75cm,
    auto,
    font=\footnotesize,
    ]
    \tikzset{
        every node/.style={
            text=AAGreyBlue
        },
    }
    % Place nodes
    \node [block] (Cangrelor) {KengrexalVial};
    \node [block, below left=of Cangrelor, text width=5cm, minimum height=1.5cm] (PTCA) {
        stuff};
    \node [block, below right=of Cangrelor, text width=5cm, minimum height=1.5cm] (Bridging) {
        mor stuff};
    % Draw edges
    \path [line] (Cangrelor.265) |- ([xshift=-.25cm,yshift=-.25cm]Cangrelor.260)  -| node [near start, above, font=\scriptsize] {\gls{PTCA}} (PTCA.north);
    \path [line] (Cangrelor.275) |- ([xshift=.25cm,yshift=-.25cm]Cangrelor.270)  -| node [near start, above, font=\scriptsize] {Bridging} (Bridging.north);
\end{tikzpicture}
\end{filecontents}

\begin{document}

\begin{frame}
    \begin{figure}[p]
        \input{FlowTherapyOptionsPTCA}
    \end{figure}
\end{frame}

\begin{frame}
    \begin{figure}[p]
        \input{FlowDosingScheme}
    \end{figure}
\end{frame}

\begin{frame}[allowframebreaks]
    \printglossary[type=\acronymtype]
\end{frame}

\end{document}

答案1

\glsfirst 是 glossaries-user.pdf 第 6.2 节中提到的 \glstext 类命令之一。这些命令“不会更改或引用首次使用标志”——因此,当您在图片中使用 \gls{PTCA} 时,它被视为首次使用。

我猜你只是误解了命令名称:据我了解,\glsfirst 不能用于第一次引用词汇表条目时, 但如果你希望引用看起来就像第一次使用时一样。这完全说得通——如果您第一次使用词汇表条目时必须使用 \glsfirst,之后再使用 \gls,那么您就必须自己跟踪已经使用过的词汇表条目。这会使使用 glossaries-package 变得毫无意义,因为它会带走所有的魔力。

简短回答:使用 \gls 而不是 \glsfirst,就可以了!

相关内容