
¿Es posible dibujar tablas como las de las figuras siguientes? Las tablas deben tener celdas cuadradas y anotaciones a lo largo de los bordes.
Sé que podría usar el entorno TAB del paquete Easytable para crear tablas de celdas cuadradas, pero no sé cómo poner notaciones en el borde superior. Me gustaría utilizar el comando de varias columnas para la Figura 2 pero no funciona en el entorno TAB. ¿O tal vez exista otro enfoque sencillo para lograr lo mismo?
Existe una alternativa a TAB del paquete Easytable como lo sugiere este enlacehttp://www.tug.org/pracjourn/2005-2/robertson/, pero no puedo insertar ninguna notación y el comando multicolumna no funciona. Yo uso XeLaTeX.
Respuesta1
Ideas de solución
La solución proporcionada aquí es sin ningún paquete ni nada por el estilo. Le recomiendo encarecidamente que busque estas soluciones antes de comenzar a utilizar cualquier paquete. Deberías saber lo que estás haciendo.
(Consulte el final de esta publicación para ver una solución que utiliza la técnica de celda cuadrada deel enlace proporcionado.)
Su primera tabla en realidad contiene cuatro columnas, una con una regla a su derecha y luego tres con reglas.
Las anotaciones a lo largo de los bordes son en realidad parte de la tabla. Aquí se utilizan tipos especiales de células. Vea las siguientes dos enumeraciones.
Para las notaciones en la parte superior, usa
\multicolumn
. Las celdas abarcan una columna, tienen contenido centrado y no tienen bordes (\multicolumn{1}{c}
). Definimos una macro (\mca
) ya que las usamos varias veces.Para las notaciones de la izquierda, nuevamente usas
\multicolumn
. Las celdas abarcan una columna, tienen contenido centrado y el borde a la derecha (\multicolumn{1}{c|}
). Nuevamente definimos una macro (\mcb
) ya que las usamos varias veces.Se utiliza
\cline
para abarcar una línea horizontal desde la columna 2 a la columna 4 en la primera tabla.La segunda tabla es más sencilla y tiene tres columnas. También reutilizamos la macro
\mca
para este.Usted modifica
\arraystretch
para ajustar las alturas de las filas (para obtener las celdas cuadradas según lo solicitado por usted).
Estoy bastante seguro de que sabes cómo poner estas tablas dentro.entornos flotantes.
El 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}
La salida
Solución usandoSu enlace proporcionado
Si insiste en utilizar la técnica del enlace proporcionado, aquí tiene una solución alternativa para la primera tabla. Esto utiliza la técnica de celda cuadrada del enlace.
\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 salida
Respuesta2
Puede anidar los entornos tabulares. Todas las celdas miden 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}