嵌套首字母缩略词

嵌套首字母缩略词

我有一些具有共同术语的缩写词:

  • CSMA->载波侦听多路访问
  • CSMA/CA -> 带冲突避免的载波侦听多路访问
  • CSMA/CD -> 带冲突检测的载波侦听多路访问

有时我需要在提到 CSMA/CA 之前介绍 CSMA 这个术语,但有时我只是提到 CSMA/CA,而没有介绍 CSMA。然而,无论文档中哪个缩写词首先出现,缩写词的解释都应该以某种可读的方式显示出来。

因此,仅使用 csmaca 缩写

\gls{csmaca}

应该产生,例如

带冲突避免的载波侦听多路访问 (CSMA/CA)

否则

\gls{csma} ... blahblah ... \gls{csmaca}

带碰撞避免的 CSMA (CSMA/CA)

有没有好的方法可以做成词汇表?也许可以嵌套一些

\newacronym{csma}{CSMA}{Carrier Sense Multiple Access}
\newacronym{csmaca}{CSMA/CA}{\gls{csma} with Collision Avoidance}
\newacronym{csmacd}{CSMA/CD}{\gls{csma} with Collision Detection}

答案1

\documentclass{article}

\usepackage{glossaries}

\newcommand*\myglsentry[1]{%
  \protect\ifglsused{#1}{%
    \glsentryshort{#1}%
  }{%
    \glsentrylong{#1}%
  }%
}

\newacronym{csma}{CSMA}{Carrier Sense Multiple Access}
\newacronym{csmaca}{CSMA/CA}{\myglsentry{csma} with Collision Avoidance}
\newacronym{csmacd}{CSMA/CD}{\myglsentry{csma} with Collision Detection}

\begin{document}

\gls{csmaca}

\gls{csmacd}

\vskip 1ex\hrule\vskip 1ex

\glsreset{csmaca}
\glsreset{csmacd}

\gls{csma}

\gls{csmaca}

\gls{csmacd}

\gls{csmaca}

\gls{csmacd}

\end{document}

MWE 输出

确保\protect测试在\newacronym定义期间不会被扩展。

相关内容