如何在 acmart 中检测匿名状态?

如何在 acmart 中检测匿名状态?

这就是我正在做的事情:

\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这并不是错误,但始终是错误的。

相关内容