我想使用词汇表包将一个缩写词包含在另一个缩写词中,例如
\usepackage[acronym]{glossary}
\newacronym{a}{A}{apples}
\newacronym{ao}{AO}{apples oranges}
\begin{document}
A basket of \gls{ao} includes \gls{a}.
\end{document}
目前导致
一篮子苹果橙子(AO)包括苹果(A)。
但我想
一篮苹果橙子(AO)包括 A。
我怎样才能做到这一点?
答案1
答案2
\glsunset
将标记条目为用于glossaries
我相信等效的宏是\unsetacronym
如果你真的在使用glossary
—如果是这样,请考虑切换。
\documentclass{article}
\usepackage[acronym]{glossaries}
\newacronym{a}{A}{apples}
\newacronym{ao}{AO}{apples oranges}
\begin{document}
A basket of \gls{ao}\glsunset{a} includes \gls{a}.
\end{document}
一篮苹果橙子(AO)包括 A。
不幸的是,尝试使用 as\newacronym{ao}{AO}{apples oranges\glsunset{a}}
会出现错误,传统上将首字母缩略词嵌套为 as\newacronym{ao}{AO}{\gls{a} oranges}
也不起作用。可能有办法解决这个问题,但我错过了。
但是你可以修补 glossaries
每次将首字母缩略词标记为已使用时,手动检查一组存储的依赖键,并将这些依赖项标记为已使用。
\documentclass{article}
\usepackage[acronym]{glossaries}
\newacronym{a}{A}{apples}
\newacronym{ao}{AO}{apples oranges}
\ExplSyntaxOn
\seq_new:N \l_DurdnT_sub_seq
\seq_new:N \l_DurdnT_sup_seq
\NewDocumentCommand{\AddAcronymDep}{mm}{
\seq_put_right:Nn \l_DurdnT_sub_seq {#1}
\seq_put_right:Nn \l_DurdnT_sup_seq {#2}
}
\NewDocumentCommand{\CheckDependentAcronyms}{m}{
\tl_set:Nn \l_tmpa_tl {#1}
\seq_map_pairwise_function:NNN
\l_DurdnT_sup_seq
\l_DurdnT_sub_seq
\unsetgls_if:nn
}
\cs_new:Nn \unsetgls_if:nn {
\tl_if_eq:NnT \l_tmpa_tl {#1} {
\glsunset{#2}
}
}
\ExplSyntaxOff
\makeatletter
\AtBeginDocument{%
\renewcommand*{\glsunset}[1]{%
\gls@ifnotmeasuring
{%
\glsdoifexists{#1}%
{%
\@glsunset{#1}%
\CheckDependentAcronyms{#1}%
}%
}%
}%
}
\makeatother
\AddAcronymDep{a}{ao}% Indicate that a should be marked used when ao is used
\begin{document}
\showoutput
A basket of \gls{ao} includes \gls{a}.
\end{document}
一篮苹果橙子(AO)包括 A。