連立方程式の係数のみに色を付けるにはどうすればよいでしょうか?

連立方程式の係数のみに色を付けるにはどうすればよいでしょうか?

整列した方程式の係数のみに色を付けるにはどうすればよいでしょうか? 次のようなことをやろうとしています:

ここに画像の説明を入力してください

これまでのところ、これらのパッケージを使用して、これらの色を定義してみました。

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

私が抱えている問題は、どうやらシステム環境では係数のマイナス記号(方程式の各項を識別するために使用していると思います)や等号に色を付けることができないということです。そこで、次のことを試しました。

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

MWE:

\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かかる必須の引数で、最初の引数は有効な色、2 番目の引数はその色で出力したい入力です。これは意図した使用方法だと思います\colorが、実際にはそう動作しません。

  • \colorかかるのは1つ必須の引数で、定義済みの色です。 を呼び出すと\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コマンドの通常の使用法よりも自動化は少なくなります。

関連情報