我正在尝试使用表格实现以下 K 图
AB
C 00 01 11 10
______________
0| 1 0 1 0
1| 0 1 1 0
我是这样实现的:
\begin{table}[htdp]
\begin{center}
\begin{tabular}{c|c|c|c|c|}
&00 & 01& 11& 10 \\ \hline
0&1&1&1&1\\
1&0&0&0&0\\
\end{tabular}
\end{center}
\label{default}
\end{table}
但是,顶行有垂直线,我不想看到它们。我采用这种方法是因为如果我使用一行来显示信息,那么我就不必担心对齐标题了。那么,有没有办法让垂直线不出现在标题行中?
答案1
您可以使用它\multicolumn
来覆盖表格式中给出的列规范:
\documentclass{article}
\begin{document}
\begin{table}[htdp]
\centering
\caption{A table}
\begin{tabular}{c|c|c|c|c|}
\multicolumn{1}{c}{} & \multicolumn{1}{c}{00} & \multicolumn{1}{c}{01} & \multicolumn{1}{c}{11} & \multicolumn{1}{c}{10} \\ \hline
0&1&1&1&1\\
1&0&0&0&0\\
\end{tabular}
\label{default}
\end{table}
\end{document}
我使用了环境\centering
来center
防止出现额外的垂直间距。你确定你需要垂直规则吗?
这书签包可以帮助您改进表格;包文档提供了有关格式化表格的有用建议。即使在这个小例子中,结果也更好;使用以下方法比较水平规则的垂直间距booktabs
:
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{table}[htdp]
\centering
\caption{A table}
\begin{tabular}{ccccc}
& 00 & 01 & 11 & 10 \\
\midrule
0 & 1 & 1 & 1 & 1 \\
1 & 0 & 0 & 0 & 0 \\
\end{tabular}
\label{default}
\end{table}
\end{document}
答案2
如果你想输入卡诺图,你也可以使用卡诺包裹。
该软件包提供了用于以简单且用户友好的方式排版卡诺图和维奇图的宏。卡诺图和维奇图用于“手动”显示和简化逻辑函数。这些宏可以排版最多包含 10 个变量(=1024 个条目)的卡诺图和维奇图。
另一个选择是下一个代码。我之前写过它,使用 Tikz 绘制卡诺图(8 和 16 个元素),还提供了一些宏来展示如何简化函数。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix,calc}
%internal group
%#1-space between node and grouping line. Default=0
%#2-top left node
%#3-bottom right node
\newcommand{\implicant}[3][0]{
\draw[rounded corners=3pt] ($(#2.north west)+(135:#1)$) rectangle ($(#3.south east)+(-45:#1)$);
}
%group lateral borders
%#1-space between node and grouping line. Default=0
%#2-top left node
%#3-bottom right node
\newcommand{\implicantcostats}[3][0]{
\draw[rounded corners=3pt] ($(rf.east |- #2.north)+(90:#1)$)-| ($(#2.east)+(0:#1)$) |- ($(rf.east |- #3.south)+(-90:#1)$);
\draw[rounded corners=3pt] ($(cf.west |- #2.north)+(90:#1)$) -| ($(#3.west)+(180:#1)$) |- ($(cf.west |- #3.south)+(-90:#1)$);
}
%group top-bottom borders
%#1-space between node and grouping line. Default=0
%#2-top left node
%#3-bottom right node
\newcommand{\implicantdaltbaix}[3][0]{
\draw[rounded corners=3pt] ($(cf.south -| #2.west)+(180:#1)$) |- ($(#2.south)+(-90:#1)$) -| ($(cf.south -| #3.east)+(0:#1)$);
\draw[rounded corners=3pt] ($(rf.north -| #2.west)+(180:#1)$) |- ($(#3.north)+(90:#1)$) -| ($(rf.north -| #3.east)+(0:#1)$);
}
%group corners
%#1-space between node and grouping line. Default=0
\newcommand{\implicantcantons}[1][0]{
\draw[rounded corners=3pt] ($(rf.east |- 0.south)+(-90:#1)$) -| ($(0.east |- cf.south)+(0:#1)$);
\draw[rounded corners=3pt] ($(rf.east |- 8.north)+(90:#1)$) -| ($(8.east |- rf.north)+(0:#1)$);
\draw[rounded corners=3pt] ($(cf.west |- 2.south)+(-90:#1)$) -| ($(2.west |- cf.south)+(180:#1)$);
\draw[rounded corners=3pt] ($(cf.west |- 10.north)+(90:#1)$) -| ($(10.west |- rf.north)+(180:#1)$);
}
%Empty Karnaugh map 4x4
\newenvironment{Karnaugh}%
{
\begin{tikzpicture}[baseline=(current bounding box.north),scale=0.8]
\draw (0,0) grid (4,4);
\draw (0,4) -- node [pos=0.7,above right,anchor=south west] {cd} node [pos=0.7,below left,anchor=north east] {ab} ++(135:1);
%
\matrix (mapa) [matrix of nodes,
column sep={0.8cm,between origins},
row sep={0.8cm,between origins},
every node/.style={minimum size=0.3mm},
anchor=8.center,
ampersand replacement=\&] at (0.5,0.5)
{
\& |(c00)| 00 \& |(c01)| 01 \& |(c11)| 11 \& |(c10)| 10 \& |(cf)| \phantom{00} \\
|(r00)| 00 \& |(0)| \phantom{0} \& |(1)| \phantom{0} \& |(3)| \phantom{0} \& |(2)| \phantom{0} \& \\
|(r01)| 01 \& |(4)| \phantom{0} \& |(5)| \phantom{0} \& |(7)| \phantom{0} \& |(6)| \phantom{0} \& \\
|(r11)| 11 \& |(12)| \phantom{0} \& |(13)| \phantom{0} \& |(15)| \phantom{0} \& |(14)| \phantom{0} \& \\
|(r10)| 10 \& |(8)| \phantom{0} \& |(9)| \phantom{0} \& |(11)| \phantom{0} \& |(10)| \phantom{0} \& \\
|(rf) | \phantom{00} \& \& \& \& \& \\
};
}%
{
\end{tikzpicture}
}
%Empty Karnaugh map 2x4
\newenvironment{Karnaughvuit}%
{
\begin{tikzpicture}[baseline=(current bounding box.north),scale=0.8]
\draw (0,0) grid (4,2);
\draw (0,2) -- node [pos=0.7,above right,anchor=south west] {bc} node [pos=0.7,below left,anchor=north east] {a} ++(135:1);
%
\matrix (mapa) [matrix of nodes,
column sep={0.8cm,between origins},
row sep={0.8cm,between origins},
every node/.style={minimum size=0.3mm},
anchor=4.center,
ampersand replacement=\&] at (0.5,0.5)
{
\& |(c00)| 00 \& |(c01)| 01 \& |(c11)| 11 \& |(c10)| 10 \& |(cf)| \phantom{00} \\
|(r00)| 0 \& |(0)| \phantom{0} \& |(1)| \phantom{0} \& |(3)| \phantom{0} \& |(2)| \phantom{0} \& \\
|(r01)| 1 \& |(4)| \phantom{0} \& |(5)| \phantom{0} \& |(7)| \phantom{0} \& |(6)| \phantom{0} \& \\
|(rf) | \phantom{00} \& \& \& \& \& \\
};
}%
{
\end{tikzpicture}
}
%Defines 8 or 16 values (0,1,X)
\newcommand{\contingut}[1]{%
\foreach \x [count=\xi from 0] in {#1}
\path (\xi) node {\x};
}
%Places 1 in listed positions
\newcommand{\minterms}[1]{%
\foreach \x in {#1}
\path (\x) node {1};
}
%Places 0 in listed positions
\newcommand{\maxterms}[1]{%
\foreach \x in {#1}
\path (\x) node {0};
}
%Places X in listed positions
\newcommand{\indeterminats}[1]{%
\foreach \x in {#1}
\path (\x) node {X};
}
\begin{document}
\begin{Karnaugh}
\contingut{0,0,0,0,0,1,0,1,1,1,0,0,0,1,0,1}
\implicant{0}{2}
\implicantdaltbaix[3pt]{3}{10}
\implicantcostats{4}{14}
\end{Karnaugh}
%
\begin{Karnaughvuit}
\minterms{3,4}
\maxterms{0,1,6,7}
\indeterminats{2,5}
\implicant{3}{2}
\implicant{4}{5}
\end{Karnaughvuit}
\end{document}
结果是这样的:
笔记:此代码的改进版本可以在以下位置找到:在 LaTeX 中绘制卡诺图