如何在 tikz 中强调填充后面的文本

如何在 tikz 中强调填充后面的文本

我正在使用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}

相关内容