Durchgehende vertikale Linie mithilfe von Booktabs in der Tabularx-Tabelle?

Durchgehende vertikale Linie mithilfe von Booktabs in der Tabularx-Tabelle?

Wie können wir mithilfe von Booktabs eine durchgehende vertikale Linie in einer Tabelle zeichnen? Was ist die einfachste Methode, um die Breite einer Tabelle zu maximieren? Es gibt viele Methoden, sehr verwirrend.

\documentclass{article}
\usepackage{makecell} % for bold in table using \small
\renewcommand\theadfont{\small} % for bold in table using \small
\usepackage{tabularx, ragged2e} 
\usepackage{booktabs}

\begin{document}

\begin{table}[!ht]
\centering
    \begin{tabularx}{\textwidth}{l>{\raggedright\arraybackslash}ccc|ccc}
    \toprule
    & \multicolumn{3}{c|}{\textbf{Paired Differences1}} & \multicolumn{3}{c}{\textbf{Paired Differences2}}\\
     \cmidrule{2-7}
    & \small {\textbf{Statistic}}
     & \thead{\small {\textbf{df}}}
     & \thead{\small {\textbf{Sig.}}}
         & \small {\textbf{Statistic}}
     & \thead{\small {\textbf{df}}}
     & \thead{\small {\textbf{Sig.}}}    \\ 
\midrule
    Difference & 44.20 & 14.36 & 4.54 & .957 & 10 & .746\\
        \bottomrule
    \end{tabularx}
\caption{Testing Testing Testing%
    \label{tab:test1234}% 
    }  
\end{table}

\end{document}

Bildbeschreibung hier eingeben

Antwort1

Hier ist mein Vorschlag. Ich habe tabular*in Kombination mit verwendet @{\extracolsep{\fill}}, um die Tabelle so breit wie die Textbreite zu machen und den überschüssigen Leerraum gleichmäßig zwischen den Spalten zu verteilen. Ich habe auch die vertikale Linie entfernt und die einzelne \cmidruledurch zwei nebeneinanderliegende mit einem kleinen Leerraum dazwischen ersetzt. Um den Code zu bereinigen, habe ich auch die wiederholten Vorkommen von \smallund entfernt \textbfund stattdessen \bfserieszu hinzugefügt \thedfont:

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{makecell} % for bold in table using \small
\renewcommand\theadfont{\small\bfseries} % for bold in table using \small
\usepackage{tabularx, ragged2e} 
\usepackage{booktabs}

\begin{document}

\begin{table}[!ht]
    \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lcccccc}
    \toprule
    & \multicolumn{3}{c}{\textbf{Paired Differences1}} & \multicolumn{3}{c}{\textbf{Paired Differences2}}\\
     \cmidrule(r){2-4} \cmidrule(l){5-7}
    & \thead{Statistic}
     & \thead{df}
     & \thead{Sig.}
         & \thead{Statistic}
     & \thead{df}
     & \thead{Sig.}    \\ 
\midrule
    Difference & 44.20 & 14.36 & 4.54 & .957 & 10 & .746\\
        \bottomrule
    \end{tabular*}
\caption{Testing Testing Testing%
    \label{tab:test1234}% 
    }  
\end{table}

\end{document}

Antwort2

Mit Kombination aus Sund XSpaltentyp, ohne senkrechte Linien, mit gerundeten Zahlen ...:

\documentclass{article}
\usepackage{booktabs, tabularx}
\usepackage{xparse}
\NewExpandableDocumentCommand\mcx{O{1}m}
    {\multicolumn{#1}{>{\Centering\small\bfseries\hsize=#1\hsize}X}{#2}}
\usepackage{ragged2e}
\usepackage{siunitx}

\begin{document}
    \begin{table}[ht]
\centering
\setlength\tabcolsep{0pt}
\sisetup{round-integer-to-decimal,
         round-mode=places,
         table-format=2.2}
    \begin{tabularx}{\linewidth}{l *{6}{S} }
    \toprule
    & \mcx[3]{Paired Differences 1} 
    & \mcx[3]{Paired Differences 2}             \\
    \cmidrule(r){2-4}\cmidrule(l){5-7}
    & \mcx{Statistic}   & \mcx{df}  & \mcx{Sig.}
    & \mcx{Statistic}   & \mcx{df}  & \mcx{Sig.}    \\
    \midrule 
Difference 
    & 44.20 & 14.36 & 4.54  & 0.957 & 10     & 0.746 \\
        \bottomrule
    \end{tabularx}
\caption{Testing Testing Testing}
\label{tab:test1234}
    \end{table}
\end{document}

Bildbeschreibung hier eingeben

Antwort3

Ich würde die vertikale Linie lieber durch eine zusätzliche leere Spalte ersetzen, um eine klare Trennung zwischen den beiden Spaltengruppen zu haben. Eine andere Möglichkeit, aus ästhetischer Sicht, könnte sein, die vertikale Polsterung der horizontalen Linien zu löschen und durch den \makegapedcellsBefehl von zu ersetzen makecell, der oben und unten einen vertikalen Abstand hinzufügtalleZellen. Zur Demonstration habe ich die vertikale Linie durch eine dicke, hellgraue vertikale Linie ersetzt, die ich für das Auge angenehmer finde als die standardmäßige dünne, schwarze vertikale Linie.

\documentclass{article}
\usepackage{makecell} % for bold in table using \small
\renewcommand\theadfont{\small\bfseries} % for bold in table using \small
\usepackage{tabularx, ragged2e}
\usepackage{booktabs}
\usepackage[table, svgnames]{xcolor}

\begin{document}

\begin{table}[!ht]
\centering
    \begin{tabularx}{\textwidth}{X>{\raggedright\arraybackslash}ccccccc}
    \toprule
    & \multicolumn{3}{c}{\textbf{Paired Differences1}} & & \multicolumn{3}{c}{\textbf{Paired Differences2}}\\
     \cmidrule(lr){2-4} \cmidrule(lr){6-8}
    & \thead{Statistic}
     & \thead{df }
     & \thead{ Sig. }
      & & \thead{Statistic}
     & \thead{df}
     & \thead{Sig.} \\
\midrule
    Difference & 44.20 & 14.36 & 4.54 & & .957 & 10 & .746\\
        \bottomrule
    \end{tabularx}
\caption{Testing Testing Testing%
    \label{tab:test1234}%
    }
\end{table}

\begin{table}[!ht]
\centering
\setlength{\aboverulesep}{0pt}
\setlength{\belowrulesep}{0pt}
\setcellgapes{3pt}\makegapedcells
    \begin{tabularx}{\textwidth}{X>{\raggedright\arraybackslash}ccc!{\color{Gainsboro!50!Lavender}\vline width 0.75em}ccc}
    \toprule
    & \multicolumn{3}{c!{\color{Gainsboro!50!Lavender}\vline width 0.75em}}{\textbf{Paired Differences1}} & \multicolumn{3}{c}{\textbf{Paired Differences2}}\\\noalign{\vskip -0.033em}
     \cmidrule(lr{1.33em}){2-4} \cmidrule(lr){5-7}
    & \thead{Statistic}
     & \thead{df}
     & \thead{Sig.}
      & \thead{Statistic}
     & \thead{df}
     & \thead{Sig.} \\
    \noalign{\vskip-0.05em}
    \cmidrule[0.05em](r{0.9em}){1-4}\cmidrule[0.05em](l{0.15em}){5-7}
    Difference & 44.20 & 14.36 & 4.54 & .957 & 10 & .746\\
        \bottomrule
    \end{tabularx}
\caption{Testing Testing Testing%
    \label{tab:test1234}%
    }
\end{table}

\end{document} 

Bildbeschreibung hier eingeben

Antwort4

Wenn Sie tatsächlich vertikale Regeln zeichnen möchten, die mit den Regeln von kompatibel sind booktabs(was überhaupt nicht im Sinne von ist booktabs, sollten Sie die Umgebung {NiceTabular}von berücksichtigen nicematrix).

\documentclass{article}
\usepackage{nicematrix}
\usepackage{ragged2e} 
\usepackage{booktabs}

\begin{document}

\begin{table}[!ht]
\centering
\setlength{\tabcolsep}{7pt}
\begin{NiceTabular}{lccc|ccc}
\toprule
\RowStyle{\bfseries}
& \Block{1-3}{Paired Differences1} &&&\Block{1-3}{Paired Differences2}\\
 \cmidrule{2-7}
\RowStyle{\bfseries\small}
& Statistic
& df
& Sig.
& Statistic
& df
& Sig. \\ 
\midrule
Difference & 44.20 & 14.36 & 4.54 & .957 & 10 & .746\\
\bottomrule
\end{NiceTabular}
\caption{Testing Testing Testing%
    \label{tab:test1234}% 
    }  
\end{table}

\end{document}

Ausgabe des obigen Codes

verwandte Informationen