Zeilenfarblücken in tabularx mit \aboverulesep und \{}

Zeilenfarblücken in tabularx mit \aboverulesep und \{}

Tischfarbe

\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 tabularxund versuche, die Zeile aus der Tabelle einzufärben. Durch die Verwendung von \aboverulesepund \belowrulesephabe 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}

Ich erhalte dies:Bildbeschreibung hier eingeben

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, cellspacedas Paket zu verwenden:

Bildbeschreibung hier eingeben

Zuerst wird der vertikale Abstand um booktabsdie Linien auf null Punkte reduziert, dann wird er per Makro vergrößert \cellspacetoplimitund \cellspacebottomlimitauf 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):

Bildbeschreibung hier eingeben

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}

Bildbeschreibung hier eingeben

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}

Tisch



Erklärung des Codes

Der Hauptansatz bestand darin, die Verwendung von Überhängen durch den \columncolorBefehl aus dem colortblPaket auszunutzen, der auch vom xcolorPaket mit dem tableoptionalen Argument aufgerufen wurde.

Beachten Sie, dass der \columncolorBefehl 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 , \tabcolsepwas 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.

\columncolorOffensichtlich muss die Farbe beider Spalten in auf gesetzt werden white. Eine letzte Sache, die zu beachten ist, ist, dass, wenn \rowcolorspäter in der Tabelle aufgerufen wird, esaußer Kraft setzendiese whiteFarbe des \columncolor, wodurch wir weiterhin den Vorteil haben, dass die Zeilenfarbe richtig eingestellt ist.

Lesen Sie das colortblPakethandbuchHier.

Antwort3

Mit {NiceTabular}of nicematrixerhalten 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 nicematrixim Hintergrund PGF/Tikz-Knoten verwendet werden).

Ausgabe des obigen Codes

verwandte Informationen