기존 수학 환경을 개선하는 방법

기존 수학 환경을 개선하는 방법

저는 LaTeX 학습의 다음 단계를 밟고 있으며 사용자 정의 환경을 만들 수 있는 가능성을 탐색하기 시작했습니다. 그러나 내가 참조한 리소스에는 bmatrix미리 정의된 개수의 인수가 없는 환경과 같은 환경을 만드는 방법이 언급되어 있지 않습니다.

bmatrix특히 행/열에 색상을 지정할 수 있는 변형(및 유사)을 정의하고 싶습니다 .

이상적으로는 다음을 수행할 수 있도록 환경을 정의하는 방법을 찾고 싶습니다.

  • 환경을 열 때(또는 행/열의 첫 번째 요소) 각 행/열의 색상을 지정합니다. 예를 들어 \ca, \cb\cc가 서로 다른 색상에 대한 매크로인 경우 첫 번째 행의 항목이 각각 으로 래핑되는 환경을 \begin{cbmatrix}{\ca \ca \cb}시작합니다 . 마찬가지로 두 번째 행도 마찬가지이며 세 번째 행의 항목은 로 래핑됩니다 . bmatrix\cacb

즉, 원하는 출력은 다음과 같습니다.

\begin{bmatrix}
\ca{e1} & \ca{e2} & \ca{e3} & \ca{e4} \\
\ca{e5} & \ca{e6} & \ca{e7} & \ca{e8} \\
\cb{e9}& \cb{e10} & \cb{e11} & \cb{e12} \\
e13 & e14 & e15 & e16
\end{bmatrix}
  • 색상 명령을 행이나 열에 적용하는 것 사이를 쉽게 전환할 수 있습니까(별표 표시된 버전의 환경에서)?

나는 이것이 매우 구체적인 최종 결과라는 것을 알고 있지만 일반적으로 입력/인수 수가 미리 정의되지 않은 이러한 유형의 환경을 정의하려면 어디서부터 시작해야 하는지 궁금합니다.

답변1

array, collcell및 일부 내부 매크로 가 매우 취약하게 혼합되어 있습니다 .

\documentclass{article}
\usepackage{amsmath}
\usepackage{array}
\usepackage{collcell}
\usepackage{xcolor}

\newcommand\ca{\textcolor{red}}
\newcommand\cb{\textcolor{green}}
\newcommand\cc{\textcolor{blue}}

\newcounter{row}
\newcounter{col}
\makeatletter
\newenvironment{triplecolorbmatrix}[1]
  {\setcounter{row}{1}%
   \@for\name:=#1\do{%
       \expandafter\def\csname rowcolor\number\value{row}\expandafter\endcsname\expandafter{\name}%
       \stepcounter{row}%
   }%
   \setcounter{row}{0}%
   \setcounter{col}{0}%
   \newcommand\colorrow{\csname rowcolor\number\value{row}\endcsname}%
   \let\@arraycrnormal\@arraycr
   \def\@arraycr{\setcounter{col}{0}\@arraycrnormal}%
   \left[\hspace{-\tabcolsep}\array{*{10}{>{\ifnum\value{col}=0\stepcounter{row}\fi\stepcounter{col}\collectcell\colorrow}c<{\endcollectcell}}}}
  {\endmatrix\right]}
\makeatother

\begin{document}
\begin{equation*}
  \begin{triplecolorbmatrix}{\ca,\cb,\cc}
    e1  & e2  & e3  & e4  \\
    e5  & e6  & e7  & e8  \\
    e9  & e10 & e11 & e12 \\
    e13 & e14 & e15 & e16 \\
  \end{triplecolorbmatrix}
\end{equation*}
\end{document}

여기에 이미지 설명을 입력하세요

관련 정보