如何僅對方程組的係數進行著色?

如何僅對方程組的係數進行著色?

如何僅對對齊方程組的係數進行著色?我正在嘗試做這樣的事情:

在此輸入影像描述

到目前為止,我已經嘗試使用這些套件並定義這些顏色:

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

氣象局:

\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 寫入 color 後面的所有內容(在目前群組中)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

相關內容