我想问一个关于所提解决方案的问题这里来自@GonzaloMedina 但我无法评论。
我想绘制相同类型的开口端和封闭的圆角矩形,但我还想绘制右侧开口的椭圆形,但我不知道如何修改它。
他建议的开放式顶部/底部代码以及我想要修改的代码是:
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
\[
\renewcommand\arraystretch{1.2}
\text{Data}Q_2\begin{array}{c|c|c|c|c|c|}
\multicolumn{1}{c}{}
& \multicolumn{5}{c}{Q_1Q_0} \\
\cline{3-6}
\multicolumn{1}{c}{} & & 00 & 01 & 11 & 10 \\
\cline{2-6}
& 00 & \tikzmark{startup}X & 1 & 1 & 1\tikzmark{endup} \\
\cline{2-6}
& 01 & 0 & 1 & 1 & 0 \\
\cline{2-6}
& 11 & 1 & 1 & 1 & 1 \\
\cline{2-6}
& 10 & \tikzmark{startdown}X & 1 & 1 & 0\tikzmark{enddown} \\
\cline{2-6}
\end{array}
\]
\begin{tikzpicture}[remember picture,overlay]
\draw[rounded corners,red,thick]
([shift={(-0.5\tabcolsep,2ex)}]pic cs:startup) --
++(0,-2.6ex) --
([shift={(0.5\tabcolsep,-0.6ex)}]pic cs:endup) --
++(0,2.6ex);
\draw[rounded corners,red,thick]
([shift={(-0.5\tabcolsep,-0.8ex)}]pic cs:startdown) --
++(0,2.8ex) --
([shift={(0.5\tabcolsep,2ex)}]pic cs:enddown) --
++(0,-2.8ex);
\end{tikzpicture}
\end{document}
答案1
您可以使用 a matrix of math nodes
(实际上,matrix of nodes
这里 a 就足够了……)。根据我的经验,这是迄今为止“分解”矩阵或更一般地说,网格上显示的任何东西的最简单方法。
出于书签手册中我将省略垂直和水平规则并将其绘制为:
如果您确实想要这些线条,可以很容易地使用循环来添加它们\foreach
,或者像下面这样(现在)通过将每个节点设计为\matrix
具有指定最小高度和宽度的矩形来添加它们:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}[ell/.style={red,very thick},
lines/.style={blue!0.5!black, thick},
nodes={anchor=center,rectangle, minimum width=6mm, minimum height=6mm, inner sep=0mm},
]
\matrix (M)[matrix of nodes, nodes in empty cells
]{
& 00 & 01 & 11 & 10 \\
00 & X & 1 & 1 & 1 \\
01 & 0 & 1 & 1 & 0 \\
11 & 1 & 1 & 1 & 1 \\
10 & X & 1 & 1 & 0\\
};
\draw[lines](M-2-1.north west)--(M-2-5.north east);
\draw[lines](M-1-2.north west)--(M-5-2.south west);
\clip (M-1-1.north west) rectangle (M-5-5.south east);
\draw[ell] (M-2-4) ellipse [x radius=0.9,y radius=0.19];
\draw[ell](M-3-5) ellipse[x radius=0.9, y radius=0.19];
\end{tikzpicture}
\begin{tikzpicture}[ell/.style={red,very thick},
lines/.style={blue!0.5!black, thick},
emp/.style={draw=white}]
\matrix (M)[matrix of nodes, nodes in empty cells,
nodes={anchor=center,draw,rectangle, minimum width=6mm, minimum height=6mm, inner sep=0mm},
]{
|[emp]| & 00 & 01 & 11 & 10\\
00 & X & 1 & 1 & 1 \\
01 & 0 & 1 & 1 & 0 \\
11 & 1 & 1 & 1 & 1 \\
10 & X & 1 & 1 & 0 \\
};
\clip (M-1-1.north west) rectangle (M-5-5.south east);
\draw[ell] (M-2-4) ellipse [x radius=0.9,y radius=0.19];
\draw[ell](M-3-5) ellipse[x radius=0.9, y radius=0.19];
\end{tikzpicture}
\end{document}
后面(M)
的\matrix
意思是节点在非空单元格中有标签(M-1-2)
等(M-1-4)
(使用选项,nodes in empty cells
您也可以在空单元格中有节点)。您可以将其更改(M)
为任何您喜欢的内容。有关更多详细信息,请参阅 tikz 手册的第 57.1 节。