我从论坛其他地方改编了下面的示例。我希望背景填充显示为一个矩形,覆盖所有单元格的内容。实现此目的的最简单方法是什么自动地在 tikz 中,即以这样一种方式,即无论单元格内容如何,代码都可以工作?(我知道如何使用 ,minimum width
之\vphantom
类的东西手动捏造东西,但我在 tikz 中寻找一些自动化的东西。)
谢谢!
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{arrows,matrix,positioning}
\begin{document}
\begin{tikzpicture}
\matrix [matrix of math nodes,left delimiter=(,right delimiter=)] (m)
{
8 &8 & \dfrac{1}{5} &6 \\
\text{three} &\dfrac{8}{3} &5 &7 \\
4 &8 &9 &5 \\
};
\draw[fill=pink,opacity=0.2] (m-1-1.north west) -- (m-1-3.north east) -- (m-2-3.south east) -- (m-2-1.south west) -- (m-1-1.north west);
\end{tikzpicture}
\end{document}
答案1
不要在节点周围画线,尝试使用适合此节点的矩形:
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{backgrounds,fit,matrix,positioning}
%%%% se-prewiew-tikz
\usepackage[active,floats,tightpage]{preview}
\PreviewEnvironment{tikzpicture}% <---------------------------------
\setlength\PreviewBorder{1em}
\begin{document}
\begin{tikzpicture}
\matrix [matrix of math nodes,left delimiter=(,right delimiter=)] (m)
{
8 & 8 & \dfrac{1}{5} & 6 \\
\text{three} & \dfrac{8}{3} & 5 & 7 \\
4 & 8 & 9 & 5 \\
};
\scoped[on background layer]
\node[fill=pink!50,inner xsep=0mm, yshift=-1mm,
fit=(m-1-1) (m-1-3) (m-2-3) (m-2-1) (m-1-1)] {};
\end{tikzpicture}
\end{document}