如何在 Latex 中绘制这个 KV 图?

如何在 Latex 中绘制这个 KV 图?

你好,我的问题是我不知道。如何在 Latex 中绘制这个 KV 图我只发现他们用卡诺图制作的不同 KV 图。我只能用 Latex 制作这个表格。我不知道如何添加红线/注释。

我的 KV 图

\documentclass{standalone}  
\begin{document} 
\begin{tabular}{c |c |c|c |c |c} 
 $y_0$ & \multicolumn{2}{c|}{$x_0$} &\multicolumn{3}{c}{$\overline{x_0}$}\\ \cline{1-5}
 $x_1$    &1&0&0&1&$\overline{x_3}$\\\cline{2-6}
       &0&1&1&0&$x_3$\\\cline{1-5}
 $\overline{x_1}$   &0&1&1&0&\\\cline{2-6}
       &1&0&0&1&$\overline{x_3}$\\\cline{2-5}
       &$\overline{x_2}$&\multicolumn{2}{c|}{$x_2$}&$\overline{x_2}$\\
\end{tabular}
\end{document}

答案1

覆盖地图的一个简单版本是使用tikzmark(尽管您的卡诺图看起来不太好看)。为了方便使用,我将所有列的位宽度设置为相等(您可能希望使用 增加一些高度\extrarowheight或使用 拉伸表格\arraystretch)。

卡诺图

\documentclass{article}
\usepackage{array}
\usepackage{tikz}
\usetikzlibrary{tikzmark}  
\begin{document} 
\begin{tabular}{c|wc{1em}|wc{1em}|wc{1em}|wc{1em}|c} 
 $y_0$ & \multicolumn{2}{c|}{$x_0$} &\multicolumn{2}{c}{$\overline{x_0}$}\\ \cline{1-5}
 $x_1$    &1\tikzmark{c1}&0&0&\tikzmark{c2}1&$\overline{x_3}$\\\cline{2-6}
       &0&\tikzmark{ul}1&1&0&$x_3$\\\cline{1-5}
 $\overline{x_1}$   &0&1&1\tikzmark{br}&0&\\\cline{2-6}
       &1\tikzmark{c3}&0&0&\tikzmark{c4}1&$\overline{x_3}$\\\cline{2-5}
       &$\overline{x_2}$&\multicolumn{2}{c|}{$x_2$}&$\overline{x_2}$\\
\end{tabular}
\begin{tikzpicture}[overlay,remember picture]
    \draw[red,rounded corners=5pt] ([xshift=-1.25em,yshift=-2pt]pic cs:c1) -| ++(1.75em,1.25em);
    \draw[red,rounded corners=5pt] ([xshift=-1.25em,yshift=7pt]pic cs:c3) -| ++(1.75em,-1.25em);
    \draw[red,rounded corners=5pt] ([xshift=1.25em,yshift=-2pt]pic cs:c2) -| ++(-1.75em,1.25em);
    \draw[red,rounded corners=5pt] ([xshift=1.25em,yshift=7pt]pic cs:c4) -| ++(-1.75em,-1.25em);
    \draw[red,rounded corners=5pt] ([xshift=-4pt,yshift=.7em]pic cs:ul) rectangle ([yshift=-.3em,xshift=4pt]pic cs:br);
\end{tikzpicture}
\end{document}

答案2

这与我的回答完全不同如何在 LaTeX 中绘制 8x8 卡诺图?。它确实也显示了一些不同的结果,但就个人喜好而言,我发现它更舒服(至少是文档中的绘图部分)。

卡诺图

\documentclass{article}
\usepackage{kvmap}

\begin{document}
    \begin{kvmap}
    \begin{kvmatrix}{x_0,x_2,x_1,x_3}
        1 & 0 & 0 & 1\\
        0 & 1 & 1 & 0\\
        0 & 1 & 1 & 0\\
        1 & 0 & 0 & 1
    \end{kvmatrix}
    \bundle[color=red]{1}{1}{2}{2}
    \draw[kvbundle,red] (00.south west) -| (00.north east);
    \draw[kvbundle,red] (33.south west) |- (33.north east);
    \draw[kvbundle,red] (30.south east) -| (30.north west);
    \draw[kvbundle,red] (03.south east) |- (03.north west);
    \end{kvmap}
\end{document}

更新2018-09-21:此答案现在使用该kvmap包。您可以在此答案的编辑历史中找到旧代码。

相关内容