Как раскрасить только коэффициенты системы уравнений?

Как раскрасить только коэффициенты системы уравнений?

Как раскрасить только коэффициенты выровненной системы уравнений? Я пытаюсь сделать что-то вроде этого:

введите описание изображения здесь

И до сих пор я пробовал использовать эти пакеты и определять эти цвета:

\usepackage{amsmath,systeme}
\usepackage{xcolor}
\definecolor{V}{HTML}{00a2e8}
\definecolor{R}{HTML}{fbc200}
\definecolor{B}{HTML}{000000}

Проблема в том, что, по-видимому, среда systeme не позволяет мне раскрасить знак минус коэффициентов (я полагаю, что использует их для идентификации каждого члена в уравнениях), а также символ равенства. Вот что я попробовал:

\begin{equation*}\mathcolor{R}{
  \systeme[I_{1}I_{2}I_{3}I_{4}]{
    6\color{B}{I_{1}}-3\color{B}{I_{2}} -1\color{B}{I_{3}}=\color{V}{5},
    -3\color{B}{I_{1}} +7\color{B}{I_{2}} -2\color{B}{I_{4}}=\color{V}{-23},
    -1\color{B}{I_{1}}+3\color{B}{I_{3}} -1\color{B}{I_{4}}=\color{V}{5},
    -2\color{B}{I_{2}} -1\color{B}{I_{3}} +4\color{B}{I_{4}}=\color{V}{3}
  }}
\end{equation*}

Проблема этого подхода в том, что разделитель и символ равенства имеют желтый цвет, а когда я пытаюсь сделать их черным, появляется сообщение об ошибке: «! L'indice n'est pas un nombre entier!».

С другой стороны, когда я пробую это:

    \begin{equation}
\systeme*{
    \color{R}{6}\color{B}{I_{1}} -\color{R}{3}\color{B}{I_{2}}-\color{R}{1}\color{B}{I_{3}}=\color{V}{5},
    \color{R}-3\color{B}{I_{1}}+\color{R}{7}\color{B}{I_{2}} -\color{R}{2}\color{B}{I_{4}}=\color{V}{-23},
    \color{R}{-1}\color{B}{I_{1}}+\color{R}{3}\color{B}{I_{3}}-\color{R}{1}\color{B}{I_{4}}=\color{V}{5},
    \color{R}-\color{R}{2}\color{B}{I_{2}}-\color{R}{1}\color{B}{I_{3}} +\color{R}{4}\color{B}{I_{4}}=\color{V}{3}
}
\end{equation}

Я получаю такой вывод:

Проблема здесь в том, что у меня не раскрашиваются знаки «минус», по-видимому, по той же причине, по которой я не могу раскрасить символы «равно» в предыдущем подходе.

Я знаю, что технически, знаки минус, как я написал уравнения, не являются частью коэффициентов, а скорее сокращенным способом сказать + (-k), где k — это действительное число. Но я подумал, что может быть способ получить версию LaTeX в формате первого загруженного мной изображения. Поэтому, если у вас есть хоть какое-то представление об этом способе, я буду вам очень благодарен :)

PS: На всякий случай, если кому-то интересно, это система, которую я получаю из электрической цепи, отсюда и название переменных.

решение1

Здесь я строю его с нуля как TABstack. Я использую его tokcycleтолько постольку, поскольку использую его макрос построения списка токенов \addcytoksдля построения \cytoksрегистра токенов.

Я использую его listofitemsдля анализа коэффициентов и создания регистра токенов, который в конечном итоге передается в TABstack.

Синтаксис:

\mysystem{<color1>}{<color2>}{<Variable>}{<coefficients>}

МВЭ:

\documentclass{article}
\usepackage{listofitems,tokcycle,xcolor,tabstackengine}
\TABstackMath
\newcommand\mysystem[4]{%
 \begingroup
 \setsepchar{\\/&}%
 \readlist\zlist{#4}%
 \foreachitem\z\in\zlist[]{%
   \foreachitem\zz\in\zlist[\zcnt]{%
     \if\relax\zz\relax\addcytoks{&}\ifnum\zzcnt=1\relax\else
       \addcytoks{&&}\fi\else
     \ifnum\zzcnt=\listlen\zlist[1]\addcytoks{&{}={}&}\relax\else
       \ifnum\zzcnt=1\else\ifnum\zz<0\addcytoks{&&}\else
         \addcytoks{&{}+{}&}\fi\fi\fi
     \ifnum\zzcnt=\listlen\zlist[1]\relax\addcytoks{\textcolor{#2}\bgroup}%
       \else\addcytoks{\textcolor{#1}\bgroup}\fi
     \addcytoks[1]{\expandafter{\zz}\egroup}%
     \ifnum\zzcnt=\listlen\zlist[1]\relax
       \ifnum\zcnt=\listlen\zlist[]\else\addcytoks{\\}\fi\else
         \addcytoks{#3_}\addcytoks[1]{\expandafter{\zzcnt}}%
       \addcytoks{&}\fi
     \fi
   }%
}
\renewcommand\stackalignment{r}%
\expandafter\tabbedCenterstack\expandafter{\the\cytoks}
\endgroup
}
\setstackgap{L}{1.2\normalbaselineskip}
\begin{document}
\[
\left\{\mysystem{orange!80!black}{cyan!80!black}{I}
  {6&-3&-1&&5\\-3&7&&-2&-23\\-1&&3&-1&5\\&-2&-1&4&3}\right.
\]
\end{document}

введите описание изображения здесь

Если требуется разное вертикальное расстояние между уравнениями, можно изменить эту строку в преамбуле,

\setstackgap{L}{1.2\normalbaselineskip}

решение2

Во-первых, я предполагаю из вашего кода, что вы неправильно поняли основные команды пакета xcolor. Его самые простые команды, которые раскрашивают текст, это \colorи \textcolor.

  • \textcolorзанимаетдваобязательные аргументы, первый из которых — допустимый цвет, а второй — ввод, который вы хотите вывести в этом цвете. Я думаю, что именно так вы и намеревались использовать \color, но это не так работает.

  • \colorзанимает толькоодинобязательный аргумент, который является определенным цветом. Когда вы вызываете \color{R}, вы просите LaTeX записать все (в текущей группе), что следует за цветом R.

Так, например, когда LaTeX считывает \color{R}{I_{1}}, он переключается на цвет R, а затем считывание продолжается с {I_{1}}, что не воспринимается как аргумент \color.

Кроме того, я не совсем уверен, как \systemeэто работает, но, насколько мне известно, система выравнивает систему уравнений с использованием знаков и переменных, поэтому вполне вероятно, что использование цветовых команд испортит выравнивание.

Поэтому я думаю, что я бы рекомендовал вам использовать что-то другое для создания системы уравнений. В следующем примере используется среда array.

\documentclass{article}
\usepackage{amsmath}
\usepackage{array}
\usepackage{xcolor}
\definecolor{V}{HTML}{00a2e8}
\definecolor{R}{HTML}{fbc200}
\definecolor{B}{HTML}{000000}
\newcommand*{\I}[1]{\textcolor{B}{I_{#1}}}
\newcommand*{\p}{\textcolor{B}{+}}
\newenvironment{systemeq}{%
    \renewcommand{\arraycolsep}{0pt}
    \left\{
    \begin{array}{>{\color{R}}r @{\mkern\medmuskip}%
                  >{\color{R}}c @{\mkern\medmuskip}%
                  >{\color{R}}r @{\mkern\medmuskip}%
                  >{\color{R}}c @{\mkern\medmuskip}%
                  >{\color{R}}r @{\mkern\medmuskip}%
                  >{\color{R}}c @{\mkern\medmuskip}%
                  >{\color{R}}r%
                  @{\mkern\thickmuskip{=}\mkern\thickmuskip}%
                  >{\color{V}}l}%
}{%
    \end{array}
    \right.
}
\begin{document}
\[
\begin{systemeq}
     6\I{1} &  - & 3\I{2} &  - & 1\I{3} &    &        &   5 \\
    -3\I{1} & \p & 7\I{2} &    &        &  - & 2\I{4} & -23 \\
    -1\I{1} &    &        & \p & 3\I{3} &  - & 1\I{4} &   5 \\
            &  - & 2\I{2} &  - & 1\I{3} & \p & 4\I{4} &   3
\end{systemeq}
\]
\end{document}

Этот подход работает хорошо, но он, конечно, менее автоматизирован, чем обычное использование команды \systeme.

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