\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 tabularx
e estou tentando colorir a linha da tabela. No entanto, devido ao uso de my \aboverulesep
e \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}
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 cellspace
o pacote:
Primeiro, o espaço vertical em torno booktabs
das regras é reduzido a zero pt, depois é aumentado pela macro \cellspacetoplimit
e \cellspacebottomlimit
pelo 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
):
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}
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 tabularx
ambiente. 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}
Explicação do código
A abordagem principal foi explorar o uso de saliências pelo \columncolor
comando do colortbl
pacote, também chamado pelo xcolor
pacote com o table
argumento opcional.
Observe que o \columncolor
comando 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, \tabcolsep
que é 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 \columncolor
deve ser definida como white
, e uma última coisa a observar é que, quando \rowcolor
for chamado posteriormente na tabela, serásobreporesta white
cor do \columncolor
, ainda nos dando a vantagem de ter a cor da linha definida corretamente.
Leia o colortbl
manual 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 nicematrix
usa nós PGF/Tikz nos bastidores).