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}
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 \cmidrule
durch zwei nebeneinanderliegende mit einem kleinen Leerraum dazwischen ersetzt. Um den Code zu bereinigen, habe ich auch die wiederholten Vorkommen von \small
und entfernt \textbf
und stattdessen \bfseries
zu hinzugefügt \thedfont
:
\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 S
und X
Spaltentyp, 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}
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 \makegapedcells
Befehl 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}
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}