在数学环境中使用 newcommand

在数学环境中使用 newcommand

我定义了一个新命令:

\newcommand{\eq}[2]{\begin{equation}\begin{split}#1\end{split}\label{#2}\end{equation}}

为了创建一个新的等式,我会这样做:

 \eq{equation stuff here}{label here} 

但是由于我没有明确使用方程式环境,texstudio 会突出显示方程式中的每个数学符号。这真的很烦人。有办法解决这个问题吗?

答案1

如果你愿意\eq用环境替换命令eq,这应该是可行的。只需用以下行定义你自己的 CWL 文件

\begin{eq}#\math
\end{eq}#S

然后将这个文件包含在选项中,完成

有关 CWL 格式的更多信息,请参见这里文件本身的基本信息是这里

答案2

鉴于 TeX 语言的性质,我认为没有一个好的、可重复使用的解决方案。语法突出显示通常使用正则表达式完成,但 TeX(字面上)是一类高于正则表达式可以覆盖的语言。要正确实现语法突出显示,需要 TeXStudio 解析器背后有一定实力 - 最重要的是在内部包含 TeX 发行版。

也可以看看TeX 语言有 BNF 语法吗?

答案3

您可以定义类似这样的内容:

\def\eq$#1${\begin{equation}#1\end{equation}}


\eq$
a(b+c)=ab+ac,
\label{distriblaw}
$

并且您既可以使用速记,又可以使用突出显示!

(阅读 Knuth 的 TeXbook 而不是 LaTeX 教程来了解如何正确定义命令。;-))

以下是我自己的一些定义:

\def\eq#1$$#2$${\begin{equation#1}#2\end{equation#1}}
\long\def\subeq#1{\begin{subequations}#1\end{subequations}}
\def\Split$$#1$${\begin{split}#1\end{split}}
\def\Align#1$$#2$${\begin{align#1}#2\end{align#1}}
\def\Aligned#1{\begin{aligned}#1\end{aligned}}
\def\Gather#1$$#2$${\begin{gather#1}#2\end{gather#1}}
\def\Gathered#1{\begin{gathered}#1\end{gathered}}
\def\Multline#1$$#2$${\begin{multline#1}#2\end{multline#1}}

例子:

\Align*$$
a&=b+c,
\\
e&=fg.
$$

\Align at$${2}
a&=b,&c&=d,
\label{eq1}
\\
e&=f,&g&=h.
\label{eq2}
$$

相关内容