带有 acro 的缩写别名

带有 acro 的缩写别名

我正在尝试定义一个命令,该命令可以轻松为使用acro包定义的首字母缩略词创建别名。我想定义几十个不同首字母缩略词的别名,而不必重复定义,并且使用任何别名都会将首字母缩略词标记为全局使用。然后,我想保持别名和原始首字母缩略词的不同,使用不同的命令打印它们,这样abc即使xyzabc独立定义的首字母缩略词,我也可以定义别名。

理想情况下,我希望能够输入类似以下内容:

\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}

相关内容