假设我有一个这样的等式y=a+b
,我想重复多次。我想使用宏来定义这个等式。
首先,我认为以下定义可以做到这一点。
\newcommand{\myEquation}{\ensuremath{y = a + b}}
但后来我觉得有时我可能想在里面使用这个方程align
,所以我需要参数。然后我尝试了:
\newcommand{\myEquation}[1]{
\IfEqCase{#1}{
{a}{\ensuremath{y = a + b}
{b}{\ensuremath{y &= a + b}
}[\PackageError{tree}{Undefined option to tree: #1}{}]
}
当我用 调用此命令时\myEquation{a}
,出现以下错误消息。
Undefined control sequence. \myEquation{a}
Misplaced alignment tab character &. \myEquation{a}
Package tree Error: Undefined option to tree: a. \myEquation{a}
有人能帮助我理解这里的问题以及我应该怎么做吗?
谢谢 !
以下内容编译没有错误,但是对齐是错误的。
\documentclass[12pt]{article}
\usepackage{amssymb, amsmath, amsthm}
\newcommand{\myFirstEquation}{y_1 = a + b}
\newcommand{\mySecondEquation}{2 y_2 = x}
\begin{document}
\begin{align}
\myFirstEquation \\
\mySecondEquation
\end{align}
\end{document}
下面的示例根据前面的错误消息进行编译。
\documentclass[12pt]{article}
\usepackage{amssymb, amsmath, amsthm}
\newcommand{\myEquation}[1]{
\IfEqCase{#1}{
{a}{\ensuremath{2 y_3 = x}}
{b}{\ensuremath{2 y_3 &= x }}
}[\PackageError{tree}{Undefined option to tree: #1}{}]
}
\begin{document}
\myEquation{a}
\end{document}
按照建议,我尝试了一个没有的示例\IfEqCase
。 它有效。
\documentclass[12pt]{article}
\usepackage{amssymb, amsmath, amsthm}
\newcommand{\myEquation}{\ensuremath{2 y_2 = x}}
\newcommand{\myEquationP}{\ensuremath{2 y_2 & = x}}
\newcommand{\otherEquation}{y_1 &= a + b}
\begin{document}
\begin{equation}
\myEquation
\end{equation}
\begin{align}
\myEquationP \\
\otherEquation
\end{align}
\end{document}
如果也能用就好了\IfEqCase
。不过我想这样就行了!
答案1
&
这里有这样一个想法:在需要时将对齐运算符传递到宏中,{}
否则就传递。保持简单。
\documentclass{article}
\usepackage{amsmath}
\newcommand\myeq[1]{2y_3 #1= x}
\begin{document}
\noindent Lorem ipsum dolor sit amet, $\myeq{}$, consetetur sadipscing
elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna
aliquyam erat:
% don't leave a blank line here - see comment below by barbara beeton
\[ \myeq{} \]
Stet clita kasd gubergren, no sea takimata sanctus est.
\begin{align}
\myeq{&} \\
y_1 &= a + b
\end{align}
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita
kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
\begin{align*}
\myeq{&}
\end{align*}
\end{document}
为了使其更加对称,你也可以使用
\newcommand\myeq[1]{2y_3 #1 x}
并调用\myeq{=}
或\myeq{&=}
。