第一次发帖,请多多包涵。
这似乎不是重复的,但也许我没有输入正确的关键字。
我正在尝试将首字母缩略词描述仅作为词汇表项的文本(使用包glossaries
)。这样,我只需将首字母缩略词扩展保存在一个地方。问题是,只有在或不是第一次使用时,才能使用\glstext
in 。请参阅下面的最低工作示例:\newacronym
\gls
\documentclass[12pt]{article}
% Load hyperref before glossaries
\usepackage[colorlinks]{hyperref}
%%% Glossary support
\usepackage[xindy,
acronym]{glossaries}
\newglossaryentry{inMyOpinion}{name={in my opinion (IMO)},
text={in my opinion},
description={This is my opinion
}}
\newacronym[]{imo}{IMO}{\protect\glstext{inMyOpinion}}
\makeglossaries
%%% BEGIN DOCUMENT
\begin{document}
% Uncomment for this to fail
%\Gls{imo}, I am right.
This is \gls{imo}!
\Gls{imo}, I am right.
\printglossary[type=\acronymtype,title={List of Acronyms}]
%%% Start Glossary
\printglossary[type=main,,style=altlist]
\end{document}
给我:
如果第一\Gls{imo}
行没有注释,则会出现错误。在我看来,试图将第一个单词大写的机制会因为一个脆弱的命令而失败,因为第二个用法工作正常。我尝试关闭清理并应用\protect
我能想到的所有排列,但都没有成功。任何关于如何实现我想要的行为的帮助都将不胜感激。
提前致谢!
答案1
sample-dual.tex
您当然可以使用词汇表文档中的代码。
\documentclass[12pt]{article}
\usepackage[colorlinks]{hyperref}
\usepackage[xindy,acronym]{glossaries}
% ------------------------------------------------------------
% The code from sample-dual.tex:
% \newdualentry[main options]{label}{short}{long}{description}
\newcommand*{\newdualentry}[5][]{%
\newglossaryentry{main-#2}{name={#4},%
text={#3\protect\glsadd{#2}},%
description={#5},%
#1
}%
\newacronym{#2}{#3\protect\glsadd{main-#2}}{#4}
}
\newdualentry{imo} % label
{IMO} % abbreviation
{in my opinion} % long form
{This is my opinion} % description
\makeglossaries
%%% BEGIN DOCUMENT
\begin{document}
\Gls{imo}, I am right.
This is \gls{imo}!
\Gls{imo}, I am right.
\printglossary[type=\acronymtype,title={List of Acronyms}]
\printglossary[type=main,style=altlist]
\end{document}