有没有办法定义一个更短的命令宏来代替 \begin{equation} \label{}\end{equation}?

有没有办法定义一个更短的命令宏来代替 \begin{equation} \label{}\end{equation}?

因此,不要使用整个

\begin{equation} 
{body}
\label{}
\end{equation}  

我可以简单地输入类似

\inserteq{{x+y=1}{eq1}} 

那会很有帮助。提前谢谢!

答案1

我已经使用这些多年,没有任何不良影响(除了 tohecz [又名 yo'] 抱怨我的排版:^))这不会将环境转换为宏,而只是创建一种进入和退出环境的简写语法equation,带或不带标签和/或标点符号。

%       BEGIN EQUATION MODE
\newcommand{\beq}{\begin{equation}}
%       BEGIN EQUATION MODE WITH LABEL
\newcommand{\beql}[1]{\begin{equation}\label{#1}}
%       END EQUATION MODE
\newcommand{\eeq}{\end{equation}}
%       END EQUATION MODE WITH A PERIOD
\newcommand{\eeqp}{\;\;\;.\end{equation}}
%       END EQUATION MODE WITH A COMMA
\newcommand{\eeqc}{\;\;\;,\end{equation}}

典型用法可能是

\documentclass{article}
%       BEGIN EQUATION MODE
\newcommand{\beq}{\begin{equation}}
%       BEGIN EQUATION MODE WITH LABEL
\newcommand{\beql}[1]{\begin{equation}\label{#1}}
%       END EQUATION MODE
\newcommand{\eeq}{\end{equation}}
%       END EQUATION MODE WITH A PERIOD
\newcommand{\eeqp}{\;\;\;.\end{equation}}
%       END EQUATION MODE WITH A COMMA
\newcommand{\eeqc}{\;\;\;,\end{equation}}
\begin{document}
Here is one equation,
\beql{eq:lbl}
 y = mx+b
\eeqc
while here is another,
\beq
 y = mx+b
\eeqp
\end{document}

在此处输入图片描述

答案2

实际上,对我有用的是@eudoxos 建议的答案(他在我的问题的评论中写了这个答案):

\def\inserteq#1#2{\begin{equation}{#1}\label{#2}\end{equation}}   

我认为这个方法最简单。

然后你可以将其用作:

\inserteq{x+y=1}{eq1} 

答案3

我通常使用eq宏:

\makeatletter
\def\eq{\@ifstar\@eq\@@eq}
\def\@eq#1{\begin{equation*}#1 \end{equation*}}
\def\@@eq#1#2{\begin{equation}\label{#1}#2 \end{equation}}
\makeatother

eq 宏将标签作为第一个参数,将方程式作为第二个参数。带星号的版本仅接受方程式。但是,没有语法色彩,并且一些编辑器在编写时会注意到标签并提供它们\ref,这在这里不起作用。使用示例:

\eq{b-a:ba}{1+1=2}
\eq*{2+2+=4}

类似地,我发现括号/方括号的快捷方式很有用:

\def\({\left(}
\def\){\right)}
\def\[{\left[}
\def\]{\right]}

例子:

\eq{eq:ex-parenthesis}{\(t+3\)\times9-2=0}

相关内容