我正在使用tikz
绘制矩阵,我想圈出一些元素并填充背景。正如我所料,这些单元格内的文本也是不透明的。有没有办法强调它或用黑色重新着色?换句话说,我希望矩阵的文本位于前面。
以下是 MWE:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\matrix[matrix of math nodes,row sep=5pt,column sep = 1pt,color = black] (m) {
c & 2 & 3 & 4 & 5\\
};
\draw[fill=red!20, fill opacity=0.5] ($(m-1-2.north west)-(.5ex,0)$) --
($(m-1-5.north east)+(.5ex,0)$)-- ($(m-1-5.south east)+(.5ex,0)$)--($(m-1-2.south west)-(.5ex,0)$) --cycle
;
\end{tikzpicture}
\end{document}
输出为:
答案1
对于黑色文本,您可以使用blend mode=multiply
。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\matrix[matrix of math nodes,row sep=5pt,column sep = 1pt,color = black] (m) {
c & 2 & 3 & 4 & 5\\
};
\draw[fill=red!20, fill opacity=0.5,blend mode=multiply] ($(m-1-2.north west)-(.5ex,0)$) --
($(m-1-5.north east)+(.5ex,0)$)-- ($(m-1-5.south east)+(.5ex,0)$)--($(m-1-2.south west)-(.5ex,0)$) --cycle
;
\end{tikzpicture}
\end{document}
一般来说,你可以把填充放在background layer
使用处,例如backgrounds
库中。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{calc}
\usetikzlibrary{backgrounds}
\begin{document}
\begin{tikzpicture}
\matrix[matrix of math nodes,row sep=5pt,column sep = 1pt,color = black] (m) {
c & 2 & 3 & 4 & 5\\
};
\scoped[on background layer]{\draw[fill=red!20, fill opacity=0.5]
($(m-1-2.north west)-(.5ex,0)$) --
($(m-1-5.north east)+(.5ex,0)$)-- ($(m-1-5.south east)+(.5ex,0)$)--($(m-1-2.south west)-(.5ex,0)$) --cycle
;}
\end{tikzpicture}
\end{document}