假设我有矩阵
A = [ a_11 a_12 a_13 a_14; a_21 a_22 a_23 a_24; a_31 a_23 _a33 a_34; ]
数字在哪里,我想用红色绘制块a_ij
的元素。有没有一种简单的方法可以一次性绘制它们,而不是使用命令等?3 x 3
A(1:3, 1:3)
\textcolor{red}{a_11}
\textcolor{red}{a_22}
答案1
TeX 是一种宏语言。冗长的表达式\textcolor{red}{a_{12}}
可以用简单的宏定义来缩写,例如:
\documentclass{article}
\usepackage{amsmath}
\usepackage{color}
\begin{document}
\[
A =
\def\ba#1#2{a_{#1#2}}
\def\ra{\color{red}\ba}
\begin{bmatrix}
\ra11 & \ra12 & \ra13 & \ba14 \\
\ra21 & \ra22 & \ra23 & \ba24 \\
\ra31 & \ra32 & \ra33 & \ba34
\end{bmatrix}
\]
\end{document}
答案2
更新
您可以声明一个包含颜色的新列类型:
\documentclass[table]{article}
\usepackage{xcolor}
\usepackage{array}
\newcolumntype{E}{>{\color{red}}c}
\begin{document}
\[
\left[
\begin{array}{*{3}{E}c}
1 & 2 & 3 & 0 \\
4 & 5 & 6 & 0 \\
7 & 8 & 9 & 0
\end{array}
\right]
\]
\end{document}
这可以使用collcell
:
\documentclass[table]{article}
\usepackage{tikz}
\usepackage{collcell}
\newcommand\ColCell[1]{%
\pgfmathparse{#1>0?1:0}%
\ifnum\pgfmathresult=1\relax\color{red}\fi#1}
\newcolumntype{E}{>{\collectcell\ColCell}c<{\endcollectcell}}
\begin{document}
\[
\left[
\begin{array}{*{6}{E}}
1 & 2 & 3 & 4 & 0 \\
5 & 0 & 7 & 8 & 0 \\
1 & 2 & 0 & 4 & 0 \\
5 & 6 & 7 & 8 & 0 \\
\end{array}
\right]
\]
\end{document}