如何以递归方式使用 \def 来使用宏以不同方式格式化方程式?

如何以递归方式使用 \def 来使用宏以不同方式格式化方程式?

我在开始时在 LaTeX 文件中定义方程式,并希望在整本书和beamer演示文稿中以不同的格式重复使用这些方程式。我尝试按如下所示定义方程式,但不起作用。有解决方案吗?

\def \eqnew#1#2
{ 
  \def \eqd#1{\\[#2\\]}
  \def \eql#1{$#2$}
  \def \eqe#1{\begin{equation}#2\equation}
}  

\eqnew{newton}{F = m a}

\eqnew{mass}{m = \rho v a}

%this does not work

\eqenewton

\eqlmass

答案1

\documentclass{article}

\makeatletter
\newcommand\eqnew[2]{%
  \@namedef{eqd#1}{\[#2\]}%
  \@namedef{eql#1}{$#2$}%
  \@namedef{eqe#1}{\begin{equation}#2\end{equation}}%
}  
\makeatother

\eqnew{newton}{F = m a}

\eqnew{mass}{m = \rho v a}

%this does work

\begin{document}

\eqenewton

\eqlmass

\end{document}

相关内容