我有一些具有共同术语的缩写词:
- 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}
确保\protect
测试在\newacronym
定义期间不会被扩展。