\documentclass[]{article}
\usepackage[table,dvipsnames]{xcolor}
\usepackage{multicol,booktabs,tabularx}
% Table settings
\renewcommand{\aboverulesep}{1pt}
\renewcommand{\belowrulesep}{1pt}
\begin{document}
\begin{tabularx}{\textwidth}{@{}X l@{}}
This is Header 1 & This is Header 2 \\
\toprule
\rowcolor{Apricot}
This is Text 1 & This is Text 2 \\\midrule
This is Text 1 & This is Text 2 \\\midrule
This is Text 1 & This is Text 2 \\
\bottomrule
\end{tabularx}
\end{document}
Tengo la tabla anterior MWE usando tabularx
y estoy tratando de colorear la fila de la tabla. Sin embargo, debido al uso de my \aboverulesep
y \belowrulesep
, ahora tengo espacios encima y debajo de la fila de mi tabla que no están coloreados.
Además, debido al uso de my @{}
en ambos lados de la tabla para "eliminar" el exceso de relleno en los lados de la tabla, el color de la fila también se aplica en esos rellenos.
Pregunta 1:¿Cómo puedo colorear los espacios antes mencionados (que surgen debido a \aboverulesep
) manteniendo la separación de reglas?
Pregunta 2:¿Cómo quitar el color de los dos lados de la mesa?
EDITAR
Esto es en respuesta a la respuesta de Zarko. Quiero mantener el uso de @{}
ambos lados para quitar el acolchado. Si tuviera que adaptar esto a su respuesta, así:
% @Zarko's answer
\documentclass{article}
\usepackage[table,dvipsnames]{xcolor}
\usepackage{booktabs, cellspace, tabularx}
% Table settings
\renewcommand{\aboverulesep}{0pt}
\renewcommand{\belowrulesep}{0pt}
\setlength\cellspacetoplimit{5pt}
\setlength\cellspacebottomlimit{5pt}
\begin{document}
\begin{tabularx}{\textwidth}{@{}SX Sl@{}}% <-- S is append for activate additional vertical space
This is Header 1 & This is Header 2 \\
\toprule
\rowcolor{Apricot}
This is Text 1 & This is Text 2 \\\midrule
This is Text 1 & This is Text 2 \\\midrule
This is Text 1 & This is Text 2 \\
\bottomrule
\end{tabularx}
\end{document}
y entonces mi segunda pregunta (Qn2) aún no está resuelto. Para Qn 1, prefiero usar la solución de @Skillmon ya \renewcommand{\arraystretch}{1.15}
que no necesito agregar un nuevo paquete.
Respuesta1
Una de las posibilidades es utilizar cellspace
el paquete:
Primero, el espacio vertical alrededor de booktabs
las reglas se reduce a cero pt, luego se aumenta mediante macro \cellspacetoplimit
y \cellspacebottomlimit
hasta el espacio vertical (coloreado) deseado:
\documentclass{article}
\usepackage[table,dvipsnames]{xcolor}
\usepackage{booktabs, cellspace, tabularx}
% Table settings
\renewcommand{\aboverulesep}{0pt}
\renewcommand{\belowrulesep}{0pt}
\setlength\cellspacetoplimit{5pt}
\setlength\cellspacebottomlimit{5pt}
\begin{document}
\begin{tabularx}{\textwidth}{SX Sl}% <-- S is append for activate additional vertical space
This is Header 1 & This is Header 2 \\
\toprule
\rowcolor{Apricot}
This is Text 1 & This is Text 2 \\\midrule
This is Text 1 & This is Text 2 \\\midrule
This is Text 1 & This is Text 2 \\
\bottomrule
\end{tabularx}
\end{document}
Apéndice:
funciona en la segunda parte de la pregunta. Es necesario introducir una columna falsa (o tener una distancia cero entre columnas o espacios en blanco con un ancho de dos \tabcolsep
):
Esta vez sin paquete adicional pero con trucos de uso \rowcolor
(para más detalles consulte la documentación del paquete colortbl
):
\documentclass{article}
\usepackage[table,dvipsnames]{xcolor}
\usepackage{booktabs, tabularx}
% Table settings
\renewcommand{\aboverulesep}{0pt}
\renewcommand{\belowrulesep}{0pt}
\begin{document}
\setlength\tabcolsep{0pt}
\renewcommand\arraystretch{1.2}
\begin{tabularx}{\textwidth}{ X c<{\hspace{12pt}} l }
This is Header 1 && This is Header 2 \\
\toprule
\rowcolor{Apricot}%[0pt]
This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is && This is Text 2 \\\midrule
This is Text 1 && This is Text 2 \\\midrule
This is Text 1 && This is Text 2 \\
\bottomrule
\end{tabularx}
\end{document}
Anexo (2):
Después de cuatro años... Ahora usaría el nuevo paquete de tablas tabularray
. Usarlo para MWE en el apéndice anterior es un código más simple:
\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\usepackage{tabularray}
\UseTblrLibrary{booktabs}
\begin{document}
\noindent
\begin{tblr}{colspec = {@{} X[1,l] l @{}},
column{1} = {rightsep=12pt},
row{2} = {bg=Apricot},
}
This is Header 1 & This is Header 2 \\
\toprule
This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1
& This is Text 2 \\
\midrule
This is Text 1 & This is Text 2 \\
\midrule
This is Text 1 & This is Text 2 \\
\bottomrule
\end{tblr}
\end{document}
Respuesta2
Solución por OP
Esta es una solución alternativa a la solución de @Zarko con respecto a mi segunda pregunta, sobre cómo eliminar los colores falsos a ambos lados de la mesa cuando se usa \rowcolor{}
, manteniendo el uso de @{}
, en un tabularx
entorno. Esto tiene el beneficio adicional (en comparación con la respuesta de Zarko) de no requerir agregar una columna separada en el medio y tener que agregar puntos de alineación adicionales en todas las filas.
En la respuesta a continuación, también incorporé la sugerencia de uso de @Skillmon \renewcommand\arraystretch{1.2}
con respecto a mi primera pregunta.
Aquí está el código:
\documentclass{article}
\usepackage[table,dvipsnames]{xcolor}
\usepackage{booktabs, tabularx}
% Table settings
\renewcommand{\aboverulesep}{0pt}
\renewcommand{\belowrulesep}{0pt}
\begin{document}
\renewcommand\arraystretch{1.15}
\begin{tabularx}{\textwidth}{@{}>{\columncolor{white}[0pt][\tabcolsep]}X >{\columncolor{white}[\tabcolsep][0pt]}l @{}}
This is Header 1 & This is Header 2 \\
\toprule
\rowcolor{Apricot}
This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 & This is Text 2 \\\midrule
This is Text 1 & This is Text 2 \\\midrule
This is Text 1 & This is Text 2 \\
\bottomrule
\end{tabularx}
\end{document}
Explicación del código
El enfoque principal fue explotar el uso de voladizos por parte del \columncolor
comando del colortbl
paquete, también llamado por el xcolor
paquete con el table
argumento opcional.
Tenga en cuenta que el \columncolor
comando acepta argumentos opcionales como tales:
\columncolor{colour} [left overhang][right overhang]
Así que simplemente configuré el saliente izquierdo de la columna más a la izquierda en 0pt, eliminando así el espacio falso a la izquierda en toda la columna, y el saliente derecho, que \tabcolsep
es básicamente una distancia que separa las columnas. Hice lo mismo para el saliente derecho de la columna más a la derecha, lo configuré en 0pt, mientras configuré su saliente izquierdo en\tabcolsep
. Esto esencialmentearregloslos anchos de columna, como quiero.
Obviamente, el color de ambas columnas \columncolor
debe establecerse en white
, y una última cosa a tener en cuenta es que cuando\rowcolor
se llame más adelante en la tabla,anulareste white
color de \columncolor
, por lo que aún nos brinda el beneficio de tener el color de la fila configurado correctamente.
Leer elcolortbl
manual del paquete.aquí.
Respuesta3
Con {NiceTabular}
of nicematrix
, tienes directamente el resultado esperado.
\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\usepackage{booktabs, nicematrix}
\begin{document}
\renewcommand\arraystretch{1.15}
\begin{NiceTabularX}{\textwidth}{@{}Xl@{}}[colortbl-like]
This is Header 1 & This is Header 2 \\
\toprule
\rowcolor{Apricot}
This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 This is Text 1 & This is Text 2 \\\midrule
This is Text 1 & This is Text 2 \\\midrule
This is Text 1 & This is Text 2 \\
\bottomrule
\end{NiceTabularX}
\end{document}
Necesita varias compilaciones (porque nicematrix
utiliza nodos PGF/Tikz bajo el capó).