与其写很长的行来创建复杂的方程式,不如用变量来代替较小的块...
一个简单的例子:
\[
\frac{ \sqrt{ \mu(i)^{ \frac{3}{2}} (i^{2} -1) } }
{ \sqrt[3]{\rho(i) - 2} + \sqrt[3]{\rho(i) - 1} }
\]
它会像这样完成:
A = \sqrt{ \mu(i)^{ \frac{3}{2}} (i^{2} -1) }
B = \sqrt[3]{\rho(i) - 2}
C = \sqrt[3]{\rho(i) - 1}
\[
\frac{ A } { B + C }
\]
结果是一样的,但是代码更易于阅读,示例也更加复杂。
我如何轻松定义这些替换或参数?或者使用任何专门的包?
PD:Tex.StackExchange 上还有其他问题询问如何将一个方程分成几行,但这并不一样。
答案1
当然可以,因为 TeX 是一种宏扩展语言:
\[
\newcommand\cA{\sqrt{ \mu(i)^{ \frac{3}{2}} (i^{2} -1) }}
\newcommand\cB{\sqrt[3]{\rho(i) - 2}}
\newcommand\cC{\sqrt[3]{\rho(i) - 1}}
%
\frac{ \cA } { \cB + \cC }
\]
我更喜欢使用“块”的前缀,以免破坏已经定义的宏(无论如何,由于,您会收到警告\newcommand
)。
由于\[...\]
形成一个组,这些宏在显示结束时将变为未定义。
另一种选择,使用数学活跃字符(但风险更大):
\documentclass{article}
\usepackage{amsmath}
\newcommand{\chunk}[2]{%
% #1 is a letter, #2 the replacement text
\begingroup\lccode`~=`#1\lowercase{\endgroup\def~}{#2}%
\mathcode`#1="8000
}
\newenvironment{abbrev}{}{}
\begin{document}
\[
\chunk{A}{\sqrt{ \mu(i)^{ \frac{3}{2}} (i^{2} -1) }}
\chunk{B}{\sqrt[3]{\rho(i) - 2}}
\chunk{C}{\sqrt[3]{\rho(i) - 1}}
%
\frac{ A } { B + C }
\]
\begin{abbrev}% defining \chunk in align wouldn't work
\chunk{A}{a+b}
\chunk{B}{c+d}
\begin{align}
x &= A\\
y &= B
\end{align}
\end{abbrev}
\end{document}