定义一个区分希腊字母和罗马字母的命令?

定义一个区分希腊字母和罗马字母的命令?

我正在使用 pdftex,我想定义一个命令来排版量子力学算子,产生带有重音的直立字母\hat。问题是,显而易见的解决方案

\newcommand*{\op}[1]{{\hat{\mathrm{#1}}}}

仅适用于罗马字母,但我还使用至少一个应由希腊字母表示的运算符,而 \mathrm 命令会产生垃圾输出。因此,定义一个通过 if 语句区分希腊字母和罗马字母的命令会很好。由于我对 TeX 的经验很少,我真的不知道如何解决这个问题。

答案1

只要你在的参数中严格使用一个标记\op,这里有一种方法:

\DeclareRobustCommand{\op}[1]{\hat{\ifcat#1\relax#1\else\mathrm{#1}\fi}}

该命令非常强大,因为如果在标题中使用它会中断。仅将其用作

\op{A} \op{x} \op{\Gamma} \op{\beta}

您可能还考虑添加\mathop

\DeclareRobustCommand{\op}[1]{%
  \mathop{\hat{\ifcat#1\relax#1\else\mathrm{#1}\fi}}\nolimits}

这将提供用作运算符的符号的正确间距。

相关内容