Usando newcommand com ambiente matemático

Usando newcommand com ambiente matemático

Eu defini um novo comando como:

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

então para fazer uma nova equação eu faço:

 \eq{equation stuff here}{label here} 

Mas como não usei explicitamente o ambiente de equação, o texstudio destaca cada símbolo matemático na equação. É realmente irritante. Existe uma maneira de contornar isso?

Responder1

Se você estiver satisfeito em substituir o comando \eqpelo ambiente eq, isso deve ser possível. Basta definir seu próprio arquivo CWL com a linha

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

Em seguida, inclua este arquivo nas opções, emConclusão.

Mais sobre o formato CWL pode ser encontradoaquie as informações básicas no próprio arquivo sãoaqui.

Responder2

Dada a natureza da linguagem TeX, não creio que exista uma solução boa e reutilizável para esta. O realce de sintaxe é algo feito geralmente usando expressões regulares, mas o TeX é (literalmente) uma classe de linguagens superior à que as expressões regulares podem abranger. Obter o realce de sintaxe correto exigiria um grande esforço por trás do analisador do TeXStudio - fundamental para incluir uma distribuição TeX internamente.

Veja tambémExiste uma gramática BNF da linguagem TeX?.

Responder3

Você pode definir algo assim:

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


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

e você tem taquigrafia e destaque!

(Leia o TeXbook de Knuth em vez dos tutoriais do LaTeX para saber como definir comandos corretamente. ;-))

Aqui estão mais algumas das minhas próprias definições:

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

Exemplos:

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

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

informação relacionada