Espacios de color en filas en tabularx con \aboverulesep y \{}

Espacios de color en filas en tabularx con \aboverulesep y \{}

color de la mesa

\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 tabularxy estoy tratando de colorear la fila de la tabla. Sin embargo, debido al uso de my \aboverulesepy \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}

Obtengo esto:ingrese la descripción de la imagen aquí

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 cellspaceel paquete:

ingrese la descripción de la imagen aquí

Primero, el espacio vertical alrededor de booktabslas reglas se reduce a cero pt, luego se aumenta mediante macro \cellspacetoplimity \cellspacebottomlimithasta 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):

ingrese la descripción de la imagen aquí

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}

ingrese la descripción de la imagen aquí

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 tabularxentorno. 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}

mesa



Explicación del código

El enfoque principal fue explotar el uso de voladizos por parte del \columncolorcomando del colortblpaquete, también llamado por el xcolorpaquete con el tableargumento opcional.

Tenga en cuenta que el \columncolorcomando 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 \tabcolsepes 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 \columncolordebe establecerse en white, y una última cosa a tener en cuenta es que cuando\rowcolor se llame más adelante en la tabla,anulareste whitecolor 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 nicematrixutiliza nodos PGF/Tikz bajo el capó).

Salida del código anterior

información relacionada