
Respuesta1
tabla calstable y tabularx
Aquí están sus dos tablas tipográficas comocalstable
s,es decir. usando el paquetecalorías. También he compuesto la primera tabla usandotabularx,línea hh,formaciónyvarias filas. solíatabularx, porque ese paquete puede calcular el ancho de la columna teniendo en cuenta todas las variables necesarias.
calcinable
calstable
no admite reglas dobles (bordes dobles), por lo que he falsificado dichas reglas usando filas y columnas estrechas.
Como compuse ambas tablas en el mismo documento, moví los comandos de configuración de la tabla y la definición de los accesos directos del preámbulo de la tabla al preámbulo del documento. He modificado todas las reglas (líneas), asegurándome de que ninguna regla única elimine reglas dobles. Por lo tanto, verá el acceso directo \lb
, \rb
utilizado en varios lugares, para desactivar, eliminar y activar reglas para celdas individuales. La forma en que las reglas dobles verticales se conectarán con las reglas dobles horizontales depende de las tradiciones tipográficas locales, por lo que no garantizo que la elección sea correcta en su jurisdicción.
Completé parte del contenido de la celda para componer la tabla con la altura de fila correcta y, como consecuencia, aumento las alturas de las filas en la primera tabla parados \baselineskip
s, en comparación con el ejemplo anterior. Además, centré verticalmente el contenido de la celda en todas las celdas usando un gancho documentado, vea el comando \def\cals@AtBeginCell{\vfil}
:
\documentclass{article}
\usepackage{cals}
% Set up the carlstable
\makeatletter
%% All rules of same weight
\def\cals@framers@width{0.3pt} % Outside frame rules, reduce if the rule is too heavy
\def\cals@framecs@width{0.3pt}
\def\cals@bodyrs@width{0.3pt}
\def\cals@cs@width{0.3pt} % Inside rules, reduce if the rule is too heavy
\def\cals@rs@width{0.3pt}
\def\cals@AtBeginCell{\vfil} % All cell contents vertically centred
% Shorthands for spanning cells, table rules and the spece between columns and rows (padding)
\let\nc=\nullcell
\let\sc=\spancontent
\def\rb{\ifx\cals@borderR\relax % Right Border (rules) switch (off-on)
\def\cals@borderR{0.0pt}
\else \let\cals@borderR\relax\fi}
\def\lb{\ifx\cals@borderL\relax % Left Border switch (off-on)
\def\cals@borderL{0.0pt}
\else \let\cals@borderL\relax\fi}
\def\bb{\ifx\cals@borderB\relax % Bottom Border switch (off-on)
\def\cals@borderB{0.0pt}
\else \let\cals@borderB\relax\fi}
\def\tp{\ifdim\cals@paddingT=0.0pt\relax % Top padding switch (off-on)
\cals@setpadding{Ag}
\else \setlength{\cals@paddingT}{0pt}\fi}
\def\bp{\ifdim\cals@paddingB=0.0pt\relax % Bottom padding switch (off-on)
\cals@setpadding{Ag}
\else \setlength{\cals@paddingB}{0pt}\fi}
\makeatother
\begin{document}
\begin{calstable}[c]
% Defining 11 columns, 2 are for double vertical rules (col2 and col7)
\colwidths{{\dimexpr(\columnwidth/21*3)}
{2pt}
{\dimexpr(\columnwidth/21*2)}
{\dimexpr(\columnwidth/21*1)}
{\dimexpr(\columnwidth/21*2)}
{\dimexpr(\columnwidth/21*4)}
{2pt}
{\dimexpr(\columnwidth/21*2)}
{\dimexpr(\columnwidth/21*1)}
{\dimexpr(\columnwidth/21*2)}
{\dimexpr(\columnwidth/21*4)}
}
\makeatletter
% R1H1 % This first row is just to ‘fake’ double horizontal lines
\thead{%
\brow
\rb\tp\cell{}
\bb\cell{}\bb
\cell{}
\cell{}
\cell{}
\cell{}
\bb\cell{}\bb
\cell{}
\cell{}
\cell{}\rb
\cell{}\tp
\ht\cals@current@row=2pt
\erow
%
%R2H2 % Header
\brow
\alignC\cell{C}
\bb\cell{}\bb
\nc{ltb}
\nc{tb}
\nc{tb}
\nc{rtb}\sc{}
\bb\cell{}\bb
\nc{ltb}
\nc{tb}
\nc{tb}
\nc{rtb}\sc{}
\erow
}
\tfoot{\lastrule\strut}
%R3B1
\brow
\cell{C}
\bb\cell{}\bb
\nc{ltb}
\nc{rtb}\sc{}
\cell{}
\cell{}
\bb\cell{}\bb
\nc{ltb}
\nc{rtb}\sc{}
\cell{}
\cell{}
\erow
%R4B2
\brow
\nc{lrt}
\bb\cell{}\bb
\cell{}
\cell{}
\cell{}
\cell{}
\bb\cell{}\bb
\cell{}
\cell{}
\cell{}
\cell{}
\ht\cals@current@row=2\normalbaselineskip
\erow
%R5B3
\brow
\nc{lrb}\alignC\sc{C}
\bb\cell{}\bb
\cell{C}
\cell{}
\cell{}
\cell{}
\bb\cell{}\bb
\cell{}
\cell{}
\cell{}
\cell{}
\erow
%R6B4
\brow
\nc{lrt}
\bb\cell{}\bb
\cell{}
\cell{}
\cell{}
\cell{}
\bb\cell{}\bb
\cell{}
\cell{}
\cell{}
\cell{}
\ht\cals@current@row=2\normalbaselineskip
\erow
%R7B5
\brow
\nc{lrb}\alignC\sc{C}
\bb\cell{}\bb
\cell{C}
\cell{}
\cell{}
\cell{}
\bb\cell{}\bb
\cell{}
\cell{}
\cell{}
\cell{}
\erow
%R8B6
\brow
\nc{lrt}
\bb\cell{}\bb
\cell{}
\cell{}
\cell{}
\cell{}
\bb\cell{}\bb
\cell{}
\cell{}
\cell{}
\cell{}
\ht\cals@current@row=2\normalbaselineskip
\erow
%R9B7
\brow
\nc{lrb}\alignC\sc{C}
\bb\cell{}\bb
\cell{C}
\cell{}
\cell{}
\cell{}
\bb\cell{}\bb
\cell{}
\cell{}
\cell{}
\cell{}
\erow
%R10B9 % This last row is just to ‘fake’ double horizontal lines
\brow
\rb\bp\cell{}
\cell{}
\cell{}
\cell{}
\cell{}
\cell{}
\cell{}
\cell{}
\cell{}
\cell{}\rb
\cell{}\bp
\ht\cals@current@row=2pt
\erow
\makeatletter
\end{calstable}\par
\vspace{1cm}
\begin{calstable}[l]
% Defining 5 columns, 1 are for double vertical rules (col2)
\colwidths{{\dimexpr(\columnwidth/15*3)}
{2pt}
{\dimexpr(\columnwidth/15*2)}
{\dimexpr(\columnwidth/15*1)}
{\dimexpr(\columnwidth/15*3)}
}
\makeatletter
% R1H1 % This first row is just to ‘fake’ double horizontal lines
\thead{%
\brow
\rb\tp\cell{}
\bb\cell{}\bb
\cell{}
\cell{}
\cell{}\rb\tp
\ht\cals@current@row=2pt
\erow
%
%R2H2 % Header
\brow
\alignC\cell{C}
\bb\cell{}\bb
\cell{}
\cell{}
\cell{}
\erow
}
\tfoot{\lastrule\strut}
%R4B2
\brow
\bb\cell{C}
\cell{}
\cell{}
\cell{}
\cell{}
\erow
%R5B3
\brow
\cell{C}
\cell{}
\cell{}
\cell{}
\cell{}
\erow
%R6B4
\brow
\cell{C}
\cell{}
\cell{}
\cell{}
\cell{}
\erow
%R7B5
\brow
\cell{C}
\cell{}
\cell{}
\cell{}
\cell{}
\erow
%R8B6
\brow
\bb\cell{C}\bb
\cell{}
\bb\cell{}
\cell{}
\cell{}\bb
\erow
%R10B9 % This last row is just to ‘fake’ double horizontal lines
\brow
\bb\rb\bp\cell{}
\cell{}
\cell{}
\cell{}\rb
\cell{}\bb
\ht\cals@current@row=2pt
\erow
\makeatletter
\end{calstable}\par
\end{document}
tabularx y amigos
Aquí está su primera tabla tipográfica contabularxy amigos. Como verá, la configuración y definición de columnas y su ancho son bastante complicadas. Para tener reglas de conexión correctas, utilicé ellínea hhpaquete.
\documentclass{article}
\usepackage{array, tabularx, multirow, hhline}
% Two shorthands to secured equal rowheigth
\newcommand*{\hz}{\vphantom{\parbox[c]{1cm}{\rule{1cm}{1.5\normalbaselineskip}}}}
\newcommand*{\vz}{\vphantom{\parbox[c]{1cm}{\rule{1cm}{2.5\normalbaselineskip}}}}
% Define four new X column types based on width. tabularx takes care of the maths involved
\newcolumntype{A}{>{\centering\arraybackslash\hsize=0.4\hsize\linewidth=\hsize}X}
\newcolumntype{B}{>{\centering\arraybackslash\hsize=0.3\hsize\linewidth=\hsize}X}
\newcolumntype{C}{>{\centering\arraybackslash\hsize=0.2\hsize\linewidth=\hsize}X}
\newcolumntype{D}{>{\centering\arraybackslash\hsize=0.1\hsize\linewidth=\hsize}X}
% Uncomment to see margins etc.
%\usepackage{showframe}
%\renewcommand*\ShowFrameColor{\color{red}}
%\renewcommand*\ShowFrameLinethickness{.15pt}
\setlength{\tabcolsep}{0.5em}
\setlength{\extrarowheight}{4pt} % Push first line of text away from rules above.
\begin{document}
\centering
\begin{tabularx}{\linewidth}{|B||C|D|C|A||C|D|C|A|}
\hhline{|*{9}{=}|}
\hz B & \multicolumn{4}{c||}{} & \multicolumn{4}{c|}{}\\
\hhline{|-||----||----|}
\hz B & \multicolumn{2}{c|}{} & & & \multicolumn{2}{c|}{} & & \\
\hhline{|-||--|-|-||--|-|-|}
\vz\multirow[c]{3}{=}{\centering B} & & & & & & & & \\
\hhline{|~||--|-|-||--|-|-|}
\hz & C & & & & & & & \\
\hhline{|-||--|-|-||--|-|-|}
\vz\multirow[c]{3}{=}{B} & & & & & & & & \\
\hhline{|~||--|-|-||--|-|-|}
\hz & C & & & & & & & \\
\hhline{|-||--|-|-||--|-|-|}
\vz \hz\multirow[c]{3}{=}{B} & & & & & & & & \\
\hhline{|~||--|-|-||--|-|-|}
\hz & C & & & & & & & \\
\hhline{|*{9}{=}|}
\end{tabularx}
\end{document}