\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}
Ich habe die obige Tabelle MWE mit tabularx
und versuche, die Zeile aus der Tabelle einzufärben. Durch die Verwendung von \aboverulesep
und \belowrulesep
habe ich jetzt jedoch Lücken über und unter meiner Tabellenzeile, die nicht gefärbt ist.
Und da ich auf beiden Seiten der Tabelle „my“ verwende, @{}
um die überschüssige Polsterung an den Seiten der Tabelle zu „entfernen“, wird die Zeilenfarbe auch auf diese Polsterung angewendet.
Frage 1:Wie kann ich die oben genannten Lücken (die durch das entstehen \aboverulesep
) einfärben und dabei die Regeltrennung beibehalten?
Frage 2:Wie entferne ich die Farbe von den beiden Seiten des Tisches?
BEARBEITEN
Dies ist eine Antwort auf Zarkos Antwort. Ich möchte die Verwendung von @{}
auf beiden Seiten beibehalten, um die Polsterung zu entfernen. Wenn ich dies in Ihre Antwort integrieren würde, etwa so:
% @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}
und daher meine zweite Frage (Frage 2) ist immer noch ungelöst. Für Frage 1 verwende ich lieber die Lösung von @Skillmon, \renewcommand{\arraystretch}{1.15}
da ich kein neues Paket hinzufügen muss.
Antwort1
Eine Möglichkeit besteht darin, cellspace
das Paket zu verwenden:
Zuerst wird der vertikale Abstand um booktabs
die Linien auf null Punkte reduziert, dann wird er per Makro vergrößert \cellspacetoplimit
und \cellspacebottomlimit
auf die gewünschte vertikale (farbige) Lücke gebracht:
\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}
Nachtrag:
umgeht den zweiten Teil der Frage. Es muss eine falsche Spalte eingeführt werden (oder es darf kein Abstand zwischen den Spalten oder ein Leerraum mit einer Breite von zwei vorhanden sein \tabcolsep
):
Diesmal ohne zusätzliches Paket, aber mit Tricks zur Verwendung \rowcolor
(Details finden Sie in der Dokumentation zum Paket 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}
Nachtrag (2):
Nach vier Jahren ... Jetzt würde ich das neue Tabellenpaket verwenden tabularray
. Die Verwendung für den MWE im obigen Nachtrag ist der Code einfacher:
\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}
Antwort2
Lösung von OP
Dies ist eine alternative Lösung zu @Zarkos Lösung in Bezug auf meine zweite Frage, wie man die störenden Farben auf beiden Seiten der Tabelle entfernt, wenn verwendet wird , während die Verwendung von in einer Umgebung \rowcolor{}
beibehalten wird . Dies hat den zusätzlichen Vorteil (im Vergleich zu Zarkos Antwort), dass keine separate Spalte in der Mitte hinzugefügt werden muss und keine zusätzlichen Ausrichtungspunkte in allen Zeilen hinzugefügt werden müssen.@{}
tabularx
In die Antwort unten habe ich auch den Vorschlag von @Skillmon \renewcommand\arraystretch{1.2}
bezüglich meiner ersten Frage eingearbeitet.
Hier ist der Code:
\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}
Erklärung des Codes
Der Hauptansatz bestand darin, die Verwendung von Überhängen durch den \columncolor
Befehl aus dem colortbl
Paket auszunutzen, der auch vom xcolor
Paket mit dem table
optionalen Argument aufgerufen wurde.
Beachten Sie, dass der \columncolor
Befehl optionale Argumente wie folgt akzeptiert:
\columncolor{colour} [left overhang][right overhang]
Also habe ich einfach den linken Überhang der äußersten linken Spalte auf 0pt gesetzt, wodurch der störende Abstand links in der gesamten Spalte entfernt wurde, und den rechten Überhang auf , \tabcolsep
was im Grunde ein Abstand ist, der die Spalten trennt. Dasselbe habe ich für den rechten Überhang der äußersten rechten Spalte getan, ihn auf 0pt gesetzt und seinen linken Überhang auf gesetzt \tabcolsep
. Dies bedeutet im WesentlichenKorrekturendie Spaltenbreiten, wie ich sie haben möchte.
\columncolor
Offensichtlich muss die Farbe beider Spalten in auf gesetzt werden white
. Eine letzte Sache, die zu beachten ist, ist, dass, wenn \rowcolor
später in der Tabelle aufgerufen wird, esaußer Kraft setzendiese white
Farbe des \columncolor
, wodurch wir weiterhin den Vorteil haben, dass die Zeilenfarbe richtig eingestellt ist.
Lesen Sie das colortbl
PakethandbuchHier.
Antwort3
Mit {NiceTabular}
of nicematrix
erhalten Sie direkt die erwartete Ausgabe.
\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}
Sie benötigen mehrere Kompilierungen (da nicematrix
im Hintergrund PGF/Tikz-Knoten verwendet werden).