\newcommand 关于一次性“帽子”希腊字母的问题

\newcommand 关于一次性“帽子”希腊字母的问题

我经常使用带帽指数,例如

\( \hat{\mu} \)

使此过程更快的一种方法是定义命令。

\newcommand{\hmu}{\hat{\mu}}

但我需要对几乎每个希腊字母分别执行此操作。有没有一种“好”的方法可以一次性完成此操作?例如,如果我写下\hrho它会自动理解\hat{\rho}

提前致谢。

答案1

您可以在数学模式中选择一个不需要的字符,将其激活并将其定义为命令\hat。总的来说,您必须输入与您的方法中相同数量的字符,\h每个希腊字母都有一个单独的命令。

将以下几行放入文档的前言中以用于@此目的。

\begingroup
  \lccode`~=`@
  \lowercase{\endgroup
    \let~\hat
  }%
\mathcode`@="8000

然后$@\alpha$会产生一个带帽子的 alpha,而[email protected]在数学模式之外仍会产生一个@符号。以下是一个例子。

\documentclass{article}
\begingroup
  \lccode`~=`@
  \lowercase{\endgroup
    \let~\hat
  }%
\mathcode`@="8000
\begin{document}
\( @\alpha@\beta@\mu \)

[email protected]
\end{document}

在此处输入图片描述

有关解释,请参阅将字符定义为宏

答案2

o下面使用较少的代码行(对所有宏名称进行 for 循环)对具有特殊宏的希腊字母(因此不是 for 或大写字母)进行定义:

\documentclass[]{article}

\makeatletter
\newcommand*\defhatgreek[1]
  {%
    \expandafter\newcommand\expandafter*\csname h#1\endcsname
      {\hat{\csname #1\endcsname}}%
  }
\@for\zz:=%
  {%
    alpha,beta,gamma,delta,epsilon,varepsilon,zeta,eta,theta,vartheta,kappa,%
    lambda,mu,nu,xi,pi,varpi,rho,varrho,sigma,varsigma,tau,upsilon,phi,varphi,%
    chi,psi,omega,%
    Gamma,Delta,Theta,Lambda,Xi,Pi,Sigma,Upsilon,Phi,Psi,Omega%
  }\do
  {%
    \expandafter\defhatgreek\expandafter{\zz}%
  }
\makeatother

\begin{document}
$\halpha + \hbeta = \hgamma + \hdelta$
\end{document}

相关内容