Verwenden von newcommand mit mathematischer Umgebung

Verwenden von newcommand mit mathematischer Umgebung

Ich habe einen neuen Befehl wie folgt definiert:

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

Um eine neue Gleichung zu erstellen, gehe ich folgendermaßen vor:

 \eq{equation stuff here}{label here} 

Da ich die Gleichungsumgebung jedoch nicht explizit verwendet habe, hebt Texstudio jedes mathematische Symbol in der Gleichung hervor. Das ist wirklich ärgerlich. Gibt es eine Möglichkeit, das zu umgehen?

Antwort1

Wenn Sie damit zufrieden sind, den Befehl \eqdurch die Umgebung zu ersetzen eq, sollte dies machbar sein. Definieren Sie einfach Ihre eigene CWL-Datei mit der Zeile

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

Fügen Sie diese Datei dann in den Optionen unterVervollständigung.

Mehr zum CWL-Format finden SieHierund die grundlegenden Informationen zur Datei selbst sindHier.

Antwort2

Angesichts der Natur der TeX-Sprache glaube ich nicht, dass es hierfür eine gute, wiederverwendbare Lösung gibt. Die Syntaxhervorhebung erfolgt normalerweise mit regulären Ausdrücken, aber TeX ist (buchstäblich) eine Sprachklasse, die höher ist als reguläre Ausdrücke. Um die Syntaxhervorhebung richtig hinzubekommen, müsste der Parser von TeXStudio einiges an Energie aufbringen – was für die Integration einer TeX-Distribution in das Unternehmen von größter Bedeutung ist.

Siehe auchGibt es eine BNF-Grammatik der TeX-Sprache?.

Antwort3

Sie können etwa Folgendes definieren:

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


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

und Sie haben sowohl Kurzschrift als auch Hervorhebung!

(Lesen Sie Knuths TeXbook statt der LaTeX-Tutorials, um zu erfahren, wie Befehle richtig definiert werden. ;-))

Hier sind einige weitere meiner eigenen Definitionen:

\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}}

Beispiele:

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

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

verwandte Informationen