是否可以绘制如下图所示的表格。表格应有方形单元格和沿边框的注释。
我知道我可以使用 Easytable 包中的 TAB 环境来创建方形单元格表,但我不知道如何在顶部边框上放置符号。我想使用图 2 的多列命令,但它在 TAB 环境中不起作用。或者也许有另一种简单的方法可以实现相同的效果?
正如此链接所建议的,Easytable 包中有 TAB 的替代品http://www.tug.org/pracjourn/2005-2/robertson/,但我无法插入任何符号,并且多列命令不起作用。我使用 XeLaTeX。
答案1
解决方案构想
这里提供的解决方案不包含任何软件包或类似的东西。我强烈建议您在开始使用任何软件包之前先尝试此类解决方案。您应该知道自己在做什么。
(请参阅本文末尾的解决方案,其中使用了您提供的链接。
您的第一个表格实际上包含四列,其中一列右侧有一条线,然后三列也有线。
边界上的标记实际上是表格的一部分。这里使用了特殊类型的单元格。请参阅接下来的两个枚举。
对于顶部的符号,您可以使用
\multicolumn
。单元格跨越一列,内容居中且没有边框 (\multicolumn{1}{c}
)。我们定义一个宏 (\mca
),因为我们会多次使用它们。对于左侧的符号,您再次使用
\multicolumn
。单元格跨越一列,内容居中,边框在右侧 (\multicolumn{1}{c|}
)。同样,我们定义一个宏 (\mcb
),因为我们会多次使用它们。您使用
\cline
在第一个表中从第 2 列到第 4 列跨越一条水平线。第二个表格比较简单,只有三列。我们
\mca
也将这个宏重新用于这个表格。您可以进行调整
\arraystretch
来调整行高(以获得您要求的方形单元格)。
我很确定你知道如何把这些表格放进去浮动环境。
代码
\documentclass{article}
\begin{document}
\def\mca#1{\multicolumn{1}{c}{#1}}
\def\mcb#1{\multicolumn{1}{c|}{#1}}
\renewcommand{\arraystretch}{2.25}
\begin{tabular}{c|c|c|c|}
\mca{} & \mca1 & \mca2 & \mca3 \\\cline{2-4}
\mcb1 & AB & BC & DA \\\cline{2-4}
\mcb2 & EF & GH & IJ \\\cline{2-4}
\mcb{C} & KL & MN & OP \\\cline{2-4}
\end{tabular}
\bigskip
\renewcommand{\arraystretch}{2.0}
\begin{tabular}{|c|c|c|}
\mca{3 bit} & \mca{1-2 bits} & \mca{0 bit} \\\hline
1 & 10 & 1 \\\hline
\end{tabular}
\end{document}
输出
解决方案使用您提供的链接
如果您坚持使用您提供的链接中的技术,以下是第一个表格的替代解决方案。它使用链接中的方形单元格技术。
\documentclass{article}
\usepackage{calc}
\usepackage{array}
\newlength\celldim
\setlength\celldim{3em}
\newlength\fontheight
\settoheight\fontheight{A}
\newlength\extraheight
\setlength\extraheight{\celldim - \fontheight}
\makeatletter
\newcolumntype{S}
{ @{}
>{\centering\arraybackslash}
p{\celldim}
<{\rule[-0.5\extraheight]{0pt}%
{\fontheight + \extraheight}}
@{} }
\makeatother
\begin{document}
\def\mca#1{\multicolumn{1}{c}{#1}}
\def\mcb#1{\multicolumn{1}{c|}{#1}}
\begin{tabular}{c|S|S|S|}
\mca{} & \mca1 & \mca2 & \mca3 \\\cline{2-4}
\mcb1 & AB & BC & DA \\\cline{2-4}
\mcb2 & EF & GH & IJ \\\cline{2-4}
\mcb{C} & KL & MN & OP \\\cline{2-4}
\end{tabular}
\end{document}
第二个输出
答案2
您可以嵌套表格环境。所有单元格均为 2cm x 2cm:
\documentclass[border=20pt]{standalone}
\usepackage{array}
\usepackage[thinlines]{easytable}
\newcommand\ML[1]{\llap{#1\quad}}
\begin{document}
\huge
\begin{tabular}{c}
\begin{TAB}(e,2cm,2cm){ccc}{ccc}
1 & 2 & 3
\end{TAB}\\[-\normalbaselineskip]
\begin{TAB}(e,2cm,2cm){|c|c|c|}{|c|c|c|}
\ML{1}AB & BC & DA \\
\ML{2}EF & GH & IJ \\
\ML{C}KL & MN & OP \\
\end{TAB}
\end{tabular}
\end{document}