
Можно ли нарисовать таблицы как на рисунках ниже. Таблицы должны иметь квадратные ячейки и обозначения по краям.
Я знаю, что я мог бы использовать среду TAB из пакета Easytable для создания таблиц с квадратными ячейками, но я не знаю, как разместить обозначения поверх верхней границы. Я хотел бы использовать команду multicolumn для рисунка 2, но она не работает в среде TAB. Или, может быть, есть другой простой подход, чтобы добиться того же?
Существует альтернатива TAB из пакета Easytable, как предлагается по этой ссылкеhttp://www.tug.org/pracjourn/2005-2/robertson/, но я не могу вставить никаких обозначений и команда multicolumn не работает. Я использую 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
Вы можете вкладывать табличные среды. Все ячейки имеют размер 2 см x 2 см:
\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}