matrix
这是 3x2 单元格的mwe tikz
。我想“圈出”一行的文本,即圆圈或矩形必须以文本为中心,而不是单元格。我尝试使用行节点,它相对于行居中。我用一张图片展示它,并添加了一张我用 lowriter 手工完成的插图。
\documentclass[a4paper]{article}
\usepackage[verbose,vmargin=30mm,hmargin=20mm]{geometry}
\usepackage{tikz}
\usetikzlibrary{positioning, matrix,backgrounds}
\tikzset{
allmatrix/.style = {matrix of nodes, nodes in empty cells,
row sep=-\pgflinewidth, column sep=-\pgflinewidth,},
}
\begin{document}
\begin{tikzpicture}
\matrix at (0,0) (si) [allmatrix,matrix anchor=north west,inner sep=0pt,nodes={
anchor=center,inner sep=3pt,outer sep=0pt,draw,
text height=4mm,text width=4mm,text depth=1mm}]{%
a & b & c \\
d & e & f \\
};
\begin{scope}[on background layer]
\draw [color=white,fill=green!30,rounded corners=1mm]
([yshift=-4pt]si-2-1.north west) rectangle ([yshift=4pt]si-2-3.south east);
\end{scope}
\end{tikzpicture}
\end{document}
使用 lowirer 制作的以文本为中心的矩形:
编辑:这是 lowriter 的另一张照片。我还想在矩阵单元格中圈出部分文本。我知道可以使用 circlesteps 完成此类操作,但仅使用 tikz 可以做到吗?
答案1
我建议{NiceTAbular}
使用nicematrix
。
\documentclass{article}
\usepackage{nicematrix,tikz}
\usetikzlibrary{fit}
\begin{document}
\renewcommand{\arraystretch}{1.5}
\begin{NiceTabular}[hvlines]{ccc}
\CodeBefore [create-cell-nodes]
\tikz \node [draw,fill=blue!15,rounded corners,fit = (2-1) (2-3)] {} ;
\Body
a & b & c \\
d & e & f
\end{NiceTabular}
\end{document}
您需要多次编译(因为 PGF/Tikz 节点)。