我想要两个自定义注释宏对于每一位作者来说。例如,假设有两个作者 Alice 和 Bob,他们想要有命令:
\newcommand{\acom}[1]{\textcolor{green}{#1}}
\newcommand{\aissue}[1]{\textcolor{red}{\textbf{#1}}}
对于 Alice 来说,可能与 Bob 的配色方案不同。当然,Alice 可以写这些,但这有点烦人。
现在,假设 Cecil 加入我们的团队。理想情况下,我希望有一个命令
\registerAuthor{Cecil}{yellow}{purple}
从那时起,要求 Cecil 添加他的命令就很容易了,一切都会顺利进行(否则 Alice 每次都必须这样做;想象一下如果我们有 20 个不同的宏)。有什么可能的解决方法吗?
答案1
诀窍是使用\csname
:
\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\newcommand{\registerAuthor}[3]{%
\expandafter\newcommand\csname #1com\endcsname[1]{\textcolor{#2}{##1}}%
\expandafter\newcommand\csname #1issue\endcsname[1]{\textcolor{#3}{\textbf{##1}}}%
}
\registerAuthor{a}{green}{red}
\registerAuthor{c}{yellow}{purple}
\begin{document}
Alice comment: \acom{something}
Alice issue: \aissue{something}
Cecil comment: \ccom{something}
Cecil issue: \cissue{something}
\end{document}