我正在尝试定义一个命令,该命令可以轻松为使用acro
包定义的首字母缩略词创建别名。我想定义几十个不同首字母缩略词的别名,而不必重复定义,并且使用任何别名都会将首字母缩略词标记为全局使用。然后,我想保持别名和原始首字母缩略词的不同,使用不同的命令打印它们,这样abc
即使xyz
有abc
独立定义的首字母缩略词,我也可以定义别名。
理想情况下,我希望能够输入类似以下内容:
\DeclareAcronym{xyz}{short=xyz, long={X, X, and Z}}
\DeclareAcronymAlias{abc}{xyz}
\aliasac{abc}
产生与\aliasac{abc}
相同的结果\ac{xyz}
。
我的想法是首先创建一个接受 2 个参数的命令\DeclareAcronymAlias
,并定义另一个命令,该命令的名称包括参数 #1 ( \acroalias#1
),其定义是参数 #2,即目标首字母缩略词的 ID。然后\aliasac
定义另一个命令:它接受 1 个参数并将扩展的命令\acroalias#1
(即目标首字母缩略词的 ID)传递给首字母缩略词打印命令\ac
。但我收到错误。
这是一个简单的例子:
\documentclass[a4paper,10pt]{article}
\usepackage{acro}
\DeclareAcronym{xyz}{short=xyz, long={X, X, and Z}}
\newcommand{\DeclareAcronymAlias}[2]{%
\expandafter\newcommand\csname acroalias#1\endcsname{#2}%
}
\newcommand{\aliasac}[1]{%
\expandafter\ac{\csname acroalias#1\endcsname}%
}
\DeclareAcronymAlias{abc}{xyz}
\begin{document}
\aliasac{abc}
\printacronyms
\end{document}
答案1
您需要进一步扩展这个论点。
\documentclass[a4paper,10pt]{article}
\usepackage{acro}
\DeclareAcronym{xyz}{short=xyz, long={X, X, and Z}}
\ExplSyntaxOn
\newcommand{\DeclareAcronymAlias}[2]
{
\tl_new:c{g_loto_acroalias_#1_tl}
\tl_set:cn{g_loto_acroalias_#1_tl}{#2}
}
\newcommand{\aliasac}[1]
{
\exp_args:Nf\ac{\tl_use:c{g_loto_acroalias_#1_tl}}
}
\ExplSyntaxOff
\DeclareAcronymAlias{abc}{xyz}
\begin{document}
\aliasac{abc}
\printacronyms
\end{document}