使用以下代码
\documentclass[12pt,a4paper]{report}
\usepackage{amsfonts,amsmath,amssymb,graphicx,amsthm,xcolor,tikz}
\usetikzlibrary{calc,matrix}
\begin{document}
\begin{tikzpicture}[
strip/.style = {
draw=#1,%color
line width=1em, opacity=0.2,
shorten <=-2mm,shorten >=-2mm,
},
]
\matrix (mtrx) [matrix of math nodes,
column sep=1em,
nodes={text height=1ex,text width=2ex}]
{
|[red]|+
& |[red]|+
& \color{red}+\color{blue}-
& |[blue]|-
& |[blue]|- \\[3.3mm,between origins]
a_1 & b_1 & c_1 & a_1 & a_2 \\
a_2 & b_2 & c_2 & a_2 & b_2 \\
a_3 & b_3 & c_3 & a_3 & b_3 \\
};
\draw[thick] (mtrx-2-1.north) -| (mtrx-4-1.south west)
-- (mtrx-4-1.south);
\draw[thick] (mtrx-2-3.north) -| (mtrx-4-3.south east)
-- (mtrx-4-3.south);
\path[draw,strip=blue]
(mtrx-4-1.center) edge (mtrx-2-3.center)
(mtrx-4-2.center) edge (mtrx-2-4.center)
(mtrx-4-3.center) -- (mtrx-2-5.center);
\path[draw,strip=red]
(mtrx-2-1.center) edge (mtrx-4-3.center)
(mtrx-2-2.center) edge (mtrx-4-4.center)
(mtrx-2-3.center) -- (mtrx-4-5.center);
\end{tikzpicture}
\end{document}
我明白了
但是我想用 替换
[]
并||
改变减号的位置-
。我还想将它们添加到等式中,如图所示
我尝试过,\begin{align*} .. & = \\ &= \end{align*}
但是没有用。
答案1
括号是手动绘制的,因此您只需修改(简化)它们的绘制方式即可。例如\draw[thick] (mtrx-4-1.south west) -- (mtrx-2-1.north west);
——从一个单元格的左下角到另一个单元格的左上角绘制一条线。
要移动减号,实际上只需将代码中的减号移动到矩阵末尾的新行即可。
还请注意添加的baseline
键,如在对齐或聚集环境中使用 tikzpicture 矩阵,确实获得正确的垂直对齐。
最后,align*
环境与 TikZ 矩阵发生冲突,因为对于两者而言,&
字符具有特殊含义。要解决此问题,您可以使用 告诉 TikZ 使用其他内容作为列分隔符ampersand replacement
。通常使用\&
,但您也可以使用其他宏。例如,在下面的示例中,我将其添加ampersand replacement=\&
到选项中,并在矩阵中\matrix
使用\&
a_1 \& b_1 \& c_1 \& a_1 \& a_2 \\
\documentclass[12pt,a4paper]{report}
\usepackage{amsfonts,amsmath,amssymb,amsthm,tikz}
\usetikzlibrary{calc,matrix}
\begin{document}
\begin{align*}
D &=
\begin{tikzpicture}[
baseline=-\the\dimexpr\fontdimen22\textfont2\relax,
strip/.style = {
draw=#1,%color
line width=1em, opacity=0.2,
shorten <=-2mm,shorten >=-2mm,
},
]
\matrix (mtrx) [matrix of math nodes,
column sep=1em,
nodes={text height=1ex,text width=2ex},
ampersand replacement=\&]
{
|[red]|+ \& |[red]|+ \& |[red]| +
\\[3.3mm,between origins]
a_1 \& b_1 \& c_1 \& a_1 \& a_2 \\
a_2 \& b_2 \& c_2 \& a_2 \& b_2 \\
a_3 \& b_3 \& c_3 \& a_3 \& b_3 \\
|[blue]|- \& |[blue]|- \& |[blue]|- \\
};
\draw[thick] (mtrx-4-1.south west) -- (mtrx-2-1.north west);
\draw[thick] (mtrx-4-3.south east) -- (mtrx-2-3.north east);
\path[draw,strip=blue]
(mtrx-4-1.center) edge (mtrx-2-3.center)
(mtrx-4-2.center) edge (mtrx-2-4.center)
(mtrx-4-3.center) -- (mtrx-2-5.center);
\path[draw,strip=red]
(mtrx-2-1.center) edge (mtrx-4-3.center)
(mtrx-2-2.center) edge (mtrx-4-4.center)
(mtrx-2-3.center) -- (mtrx-4-5.center);
\end{tikzpicture} \\
&= a+b+c\dots
\end{align*}
\end{document}