这就是我正在做的事情:
\documentclass[sigplan,nonacm=true,anonymous=true]{acmart}
\newcommand\anon[1]{%
\makeatletter\if@ACM@anonymous%
XXX%
\else%
#1%
\fi\makeatother%
}
\begin{document}
Hello, \anon{Jeff}!
\end{document}
我期望它打印Hello, XXX!
,但它打印了Hello, Jeff!
。我做错了什么?
答案1
@
定义的时候需要是一封信,所以
\documentclass[sigplan,nonacm=true,anonymous=true]{acmart}
\makeatletter
\newcommand\anon[1]{%
\if@ACM@anonymous
XXX%
\else
#1%
\fi
}
\makeatother
\begin{document}
Hello, \anon{Jeff}!
\end{document}
因为它\makeatletter
什么也没做(因为以下字符已经被标记化,所以\if@ACM@anonymous
被解释为
\if @A%
CM@anonymous
相比之下@
,A
这并不是错误,但始终是错误的。