%20destruye%20el%20dise%C3%B1o%20de%20la%20fila.png)
El siguiente código de ejemplo muestra un problema con mi \vertgap
comando, que solo pretende agregar algo de espacio encima y debajo del argumento obligatorio después de encapsularlo en un \hbox
(para contenidos altos). Funciona bien en l
columnas de tipo, pero obviamente no en p
columnas de tipo. En mis primeros intentos no lo reconocí, porque funciona longtable
(nota: el código de ejemplo carece de encabezados y pies de página), sin ignorar también el archivo de inserción automática \centering
.
Mi objetivo se puede ver en longtable
: las tres filas de la tabla tienen la misma altura. ¿Es posible lograr este comportamiento tabular
también?
Anexo: el simple uso de \hbox
en una p
columna de tipo es suficiente para mostrar el problema.
\documentclass{article}
\usepackage{longtable}
\usepackage{array}
\newcommand{\vertgap}[1]{\hbox{\vbox{\kern0.25ex\vtop{\hbox{#1}\kern0.25ex}}}}%
%\newcommand{\vertgap}[1]{\hbox{\vbox{\hrule height0.25ex\vtop{\hbox{#1}\hrule height0.25ex}}}}%
% The commented-out command above shows the inserted gaps - these seem to be ok.
\begin{document}
\begin{tabular}{|l|>{\centering}p{2in}|l|}
\hline%
aaaa: & 4711-0815 & any\\
\hline%
aaa: & \vertgap{0815} & any\\
\hline%
aa: & 4711 & any\\
\hline%
\end{tabular}
\begin{longtable}{|l|>{\centering}p{2in}|l|}
\hline%
aaaa: & 4711-0815 & any\\
\hline%
aaa: & \vertgap{0815} & any\\
\hline%
aa: & 4711 & any\\
\hline%
\end{longtable}
\end{document}
Respuesta1
\hbox
es una primitiva de TeX y no debe usarse en LaTeX a menos que sepa cómo funciona en detalle (puede tener problemas con cosas como colores o ubicación, como lo hizo). El comando LaTeX correspondiente a usar es \mbox
y eso soluciona su problema.
La razón principal es que un \hbox
no comienza un párrafo si se encuentra en modo vertical, simplemente se agrega alineado a la izquierda. Por tanto \centering
no tiene ningún efecto. \mbox
asegura que el cuadro se convierta en parte del párrafo.
Actualizar
Tal vez debería agregar que lo mismo ocurre con \kern
, \vbox
, \vtop
, es decir, no son comandos LaTeX "a nivel de documento" compatibles. Todos ellos son, por supuesto, comandos que uno necesita para crear paquetes, etc., pero a nivel de usuario es preferible evitarlos.
Dicho esto, en realidad no existe un equivalente de LaTeX, ya \vtop{\kern...\hbox{#1}\kern...}
que esto produce un cuadro vertical que es tan ancho como el hbox del interior. LaTeX solo ofrece cuadros verticales que tienen un ancho definido, por ejemplo, \parbox
y el momento en que comienza un párrafo dentro del ancho definido será el ancho del cuadro independientemente del contenido. Bueno, \shortstack{..\\[..] ...}
supongo que se podría utilizar, pero eso también sería una especie de truco. Entonces, codificar tal como está es probablemente la forma más sencilla de lograr los resultados deseados (siempre que se conozcan los efectos secundarios de estos comandos).