我有下面的代码。由于某种原因,我无法使用的定义\acro
来定义序言中的新首字母缩略词。
我可以在 中使用它\begin{document}
\end{document}
。但是,在这种情况下,我也无法正确显示首字母缩略词条目和see=TV
密钥。
我如何使用\acro
序言中的定义并打印电视定义see=TV
?
\documentclass{article}
\usepackage{hyperref}
\usepackage[nomain,acronym,shortcuts]{glossaries}
\makeglossaries
\newcommand*{\acro}[3][]{\newacronym[#1]{#2}{#2}{#3}}
\acro{TV}{Television}
\acro{TVWS}[see=TV]{Television White Spaces}
\newacronym[see=TV]{TVB}{TVB}{Television Broadcast}
\begin{document}
\printglossary[type=\acronymtype,style=list]
\ac{TVWS}\\
\ac{TVB}
\end{document}
答案1
OP 定义
\newcommand*{\acro}[3][]{\newacronym[#1]{#2}{#2}{#3}}
但尝试调用它(为什么?)
\acro{TVWS}[see=TV]{Television White Spaces}
即可选参数在这里位于第二位。使用标准\newcommand
方法很难实现这一点,但使用\NewDocumentCommand
fromxparse
包很容易实现:
\NewDocumentCommand{\acro}{mom}{%
\IfValueTF{#2}{% Is there an optional 2nd arg?
\newacronym[#2]{#1}{#1}{#3}% Yes, there is!
}{%
\newacronym{#1}{#1}{#3}% Nope, there isn't!
}%
}
以下是示例:
\documentclass{article}
\usepackage{hyperref}
\usepackage{xparse}
\usepackage[nomain,acronym,shortcuts]{glossaries}
%\newcommand*{\acro}[3][]{\newacronym[#1]{#2}{#2}{#3}}
\NewDocumentCommand{\acro}{mom}{%
\IfValueTF{#2}{%
\newacronym[#2]{#1}{#1}{#3}%
}{%
\newacronym{#1}{#1}{#3}%
}%
}
\makeglossaries
\acro{TV}{Television}
\acro{TVWS}[see=TV]{Television White Spaces}
\newacronym[see=TV]{TVB}{TVB}{Television Broadcast}
\begin{document}
\printglossary[type=\acronymtype,style=list]
\ac{TVWS}
\ac{TVB}
\end{document}