
Как раскрасить только коэффициенты выровненной системы уравнений? Я пытаюсь сделать что-то вроде этого:
И до сих пор я пробовал использовать эти пакеты и определять эти цвета:
\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*}
С другой стороны, когда я пробую это:
\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
.