我正在使用 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}
这将提供用作运算符的符号的正确间距。