
É possível desenhar tabelas como as das Figuras abaixo. As tabelas devem ter células quadradas e anotações ao longo das bordas.
Eu sei que poderia usar o ambiente TAB do pacote Easytable para criar tabelas de células quadradas, mas não sei como colocar notações na borda superior. Gostaria de usar o comando multicolumn para a Figura 2, mas ele não funciona no ambiente TAB. Ou talvez haja outra abordagem simples para conseguir o mesmo?
Existe uma alternativa ao TAB do pacote Easytable conforme sugerido por este linkhttp://www.tug.org/pracjourn/2005-2/robertson/, mas não consigo inserir nenhuma notação e o comando multicolumn não funciona. Eu uso o XeLaTeX.
Responder1
Ideias de soluções
A solução fornecida aqui não contém nenhum pacote ou algo parecido. Eu sugiro fortemente que você opte por essas soluções antes de começar a usar qualquer pacote. Você deve saber o que está fazendo.
(Veja no final deste post uma solução que utiliza a técnica de célula quadrada deseu link fornecido.)
Na verdade, sua primeira tabela contém quatro colunas, uma com uma regra à direita e depois três regras.
As notações ao longo das bordas fazem parte da tabela. Tipos especiais de células são usados aqui. Veja as próximas duas enumerações.
Para as notações no topo, você usa
\multicolumn
. As células ocupam uma coluna, têm conteúdo centralizado e não têm bordas (\multicolumn{1}{c}
). Definimos uma macro (\mca
), pois as usamos várias vezes.Para notações à esquerda, novamente você usa
\multicolumn
. As células ocupam uma coluna, possuem conteúdo centralizado, com borda à direita (\multicolumn{1}{c|}
). Novamente, definimos uma macro (\mcb
), pois as usamos várias vezes.Você usa
\cline
para abranger uma linha horizontal da coluna 2 à coluna 4 na primeira tabela.A segunda tabela é mais simples, com três colunas. Reutilizamos a macro
\mca
para esta também.Você ajusta
\arraystretch
para ajustar a altura das linhas (para obter as células quadradas conforme solicitado por você).
Tenho certeza que você sabe como colocar essas tabelas dentroambientes flutuantes.
O código
\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}
A saída
Solução usandoSeu link fornecido
Se você insiste em usar a técnica do link fornecido, aqui está uma solução alternativa para a primeira tabela. Isso usa a técnica de célula quadrada do link.
\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}
Segunda saída
Responder2
Você pode aninhar os ambientes tabulares. Todas as células têm 2 cm x 2 cm:
\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}