Использование 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 в систему.

Смотрите такжеСуществует ли грамматика BNF языка TeX?.

решение3

Вы можете определить что-то вроде этого:

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


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

и у вас есть и стенография, и подсветка!

(Чтобы узнать, как правильно определять команды, прочтите 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}
$$

Связанный контент