Espaços de cores de linha em tabularx com \aboverulesep e \{}

Espaços de cores de linha em tabularx com \aboverulesep e \{}

cor da 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}

Eu tenho a tabela MWE acima usando tabularxe estou tentando colorir a linha da tabela. No entanto, devido ao uso de my \aboverulesepe \belowrulesep, agora tenho lacunas acima e abaixo da linha da tabela que não são coloridas.

Além disso, devido ao uso de my @{}em ambos os lados da mesa para 'remover' o excesso de preenchimento nas laterais da mesa, a cor da linha também está sendo aplicada nesses preenchimentos.

Pergunta 1:Como posso colorir as lacunas acima mencionadas (surgidas devido ao \aboverulesep), mantendo a separação das regras?

Pergunta 2:Como tirar a cor dos dois lados da mesa?


EDITAR

Isto é uma resposta à resposta de Zarko. Quero manter o uso de @{}ambos os lados para remover o preenchimento. Se eu adaptasse isso à sua resposta, seria assim:

% @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}

Eu obtenho isso:insira a descrição da imagem aqui

e então minha segunda pergunta (Qn2) ainda não foi resolvido. Para Qn 1, prefiro usar a solução de @Skillmon, pois \renewcommand{\arraystretch}{1.15}não preciso adicionar um novo pacote.

Responder1

Uma das possibilidades é usar cellspaceo pacote:

insira a descrição da imagem aqui

Primeiro, o espaço vertical em torno booktabsdas regras é reduzido a zero pt, depois é aumentado pela macro \cellspacetoplimite \cellspacebottomlimitpelo intervalo vertical (colorido) desejado:

\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}

Termo aditivo: contorna a segunda parte da pergunta. É necessário introduzir uma coluna falsa (ou ter distância zero entre colunas ou espaço em branco com largura de dois \tabcolsep):

insira a descrição da imagem aqui

Desta vez sem pacote adicional, mas com truques de uso \rowcolor(para detalhes consulte a documentação do pacote 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}

Adendo (2): Depois de quatro anos... Agora eu usaria o novo pacote de tabelas tabularray. Usá-lo para o MWE no adendo acima é o código mais simples:

\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}

insira a descrição da imagem aqui

Responder2

Solução por OP

Esta é uma solução alternativa à solução do @Zarko no que diz respeito à minha segunda pergunta, sobre como remover as cores espúrias de ambos os lados da mesa ao usar \rowcolor{}, mantendo o uso de @{}, em um tabularxambiente. Isso tem o benefício adicional (em comparação com a resposta de Zarko) de não exigir a adição de uma coluna separada no meio e a adição de pontos de alinhamento adicionais em todas as linhas.

Na resposta abaixo, também incorporei a sugestão de uso do @Skillmon \renewcommand\arraystretch{1.2}em relação à minha primeira pergunta.

Aqui está o 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



Explicação do código

A abordagem principal foi explorar o uso de saliências pelo \columncolorcomando do colortblpacote, também chamado pelo xcolorpacote com o tableargumento opcional.

Observe que o \columncolorcomando aceita argumentos opcionais como:

\columncolor{colour} [left overhang][right overhang]

Então, apenas defino a saliência esquerda da coluna mais à esquerda como 0pt, eliminando assim o espaço espúrio à esquerda em toda a coluna, e a saliência direita como sendo, \tabcolsepque é basicamente uma distância que separa as colunas. Fiz o mesmo para a saliência direita da coluna mais à direita, defini-a como 0pt, enquanto defini a saliência esquerda como \tabcolsep. Isto essencialmenteConsertaas larguras das colunas, como eu quero.

Obviamente, a cor de ambas as colunas \columncolordeve ser definida como white, e uma última coisa a observar é que, quando \rowcolorfor chamado posteriormente na tabela, serásobreporesta whitecor do \columncolor, ainda nos dando a vantagem de ter a cor da linha definida corretamente.

Leia o colortblmanual do pacoteaqui.

Responder3

Com {NiceTabular}of nicematrix, você tem diretamente a saída esperada.

\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}

Você precisa de várias compilações (porque nicematrixusa nós PGF/Tikz nos bastidores).

Saída do código acima

informação relacionada