在數學環境中使用 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}
$$

相關內容