如何使用宏在不同的设置中重复数学等式

如何使用宏在不同的设置中重复数学等式

假设我有一个这样的等式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{&=}

在此处输入图片描述

相关内容