我经常使用带帽指数,例如
\( \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}