
Meine Frage bezieht sich aufdiese FrageUndauch dieses. Ich möchtedie Werte hinsichtlich des Dezimalpunkts perfekt ausrichten. Ich will auchPassen Sie den Inhalt mit optimaler Spaltenbreite andamit kein Platz verschwendet wird.
Die Lösung des aktuellen Problems wird zum Erstellen größerer Tabellen (mit >10 Spalten und >20 Zeilen) verwendet.
Erwartete Ausgabeformatierung:Das aktuelle Problem besteht darin, eine Tabelle zu erstellen, die wie in der Abbildung unten (erstellt in MS Word) formatiert ist und hinsichtlich des Dezimalpunkts perfekt ausgerichtet ist:
Der Wert in den Klammern stellt denT-stat für die Parameterschätzung.
BEARBEITEN:
Ich kann die Ausrichtungsprobleme in Bezug auf den Dezimalpunkt beheben. Allerdings habe ich jetzt mit einigen anderen Ausrichtungsproblemen zu kämpfen, die in der folgenden Abbildung dargestellt sind:
Ich möchte:
- Reduzieren Sie die durch grüne Pfeile angezeigten Lücken
- Beseitigen Sie die Lücken, die durch die roten Pfeile angezeigt werden
Der MWE ist unten angegeben:
\documentclass{article}
\usepackage{amsmath,booktabs,multirow,multicol,tabularx,siunitx}
\usepackage[table, dvipsnames]{xcolor}
\sisetup{
output-exponent-marker = \text{\hspace{1pt}e},
exponent-product={},
retain-explicit-plus,
input-open-uncertainty = ,
input-close-uncertainty = ,
table-align-text-pre = false,
table-align-text-post = false,
round-mode=places,
round-precision=3,
table-space-text-pre = (,
table-space-text-post = )
}
\newcommand{\cellvalItal}[1]{\begin{tabular}[l]{S[round-precision=2,math-rm=\mathit]}#1\end{tabular}}
\newcommand{\cellval}[2]{\begin{tabular}[l]{S}#1\\\cellvalItal{#2}\end{tabular}}
\newcommand{\Shifted}[1]{\begin{tabular}[l]{@{\phantom{~~~}}l@{}}#1\end{tabular}}
\newcommand{\ShiftedWithBaseCase}[2]{\begin{tabular}[l]{@{\phantom{~~~}}l}#1 \\ {[}\emph{#2}{]}\end{tabular}}
\begin{document}
\begin{table}
\begin{tabular}{l@{}S@{}S}
\toprule
\multirow{2.3}{*}{\textbf{Parameter}}
& \multicolumn{2}{@{}c}{\textbf{Estimate}} \\
\cmidrule(lr){2-3}
& {\centering\textbf{Model~M1}} & {\centering\textbf{Model~M2}}\\
\cmidrule(lr){1-1}
\cmidrule(lr){2-2}
\cmidrule(lr){3-3}
{Constant} &
\cellval{-1.316e-2}{(-23.153)} &
\cellval{-58.510}{(-4.26)}\\ % User defined functions to shorten the code length
\addlinespace
\textbf{\emph{Category}} & & \\
\ShiftedWithBaseCase{Male members}{Base case: Female members} & \cellval{0.112}{(2.04)}&
{---}\\
\bottomrule
\end{tabular}
\end{table}
\end{document}
Kann jemand helfen?
Antwort1
Dies ist wahrscheinlich nicht die eleganteste Lösung und bedarf möglicherweise noch einiger weiterer Anpassungen, kommt aber hoffentlich dem gewünschten Ergebnis näher. Relevante Änderungen im Vergleich zum ursprünglichen Beispiel werden hervorgehoben, % <---
gefolgt von einer kurzen Erläuterung der entsprechenden Änderung.
\documentclass{article}
\usepackage{amsmath,booktabs,multirow,multicol,tabularx,siunitx}
\usepackage[table, dvipsnames]{xcolor}
\sisetup{
output-exponent-marker = \text{\hspace{1pt}e},
exponent-product={},
retain-explicit-plus,
input-open-uncertainty = ,
input-close-uncertainty = ,
table-align-text-pre = false,
table-align-text-post = false,
round-mode=places,
round-precision=3,
table-space-text-pre = (,
table-space-text-post = )
}
\newcommand{\cellvalItal}[1]{\begin{tabular}[l]{S[round-precision=2,math-rm=\mathit]}#1\end{tabular}}
\newcommand{\cellvalleft}[2]{\begin{tabular}[l]{@{}S[table-format=-2.3e-1]@{}}#1\\\cellvalItal{#2}\end{tabular}} % <--- added @{} to either side of the S column specifier to remove extro horizontal space in the columns
\newcommand{\cellvalright}[2]{\begin{tabular}[l]{@{}S[table-format=-2.3]@{}}#1\\\cellvalItal{#2}\end{tabular}} % <--- added @{} to either side of the S column specifier to remove extro horizontal space in the columns, added appropriate table-format option, needed to be different than the table-format of the second cell, hence the second command.
%\newcommand{\Shifted}[1]{\begin{tabular}[l]{@{\phantom{~~~}}l@{}}#1\end{tabular}}
\newcommand{\ShiftedWithBaseCase}[2]{\begin{tabular}[l]{@{\phantom{~~~}}l}#1 \\ {[}\emph{#2}{]}\end{tabular}}
\renewcommand{\cmidrulekern}{0.25em} % <--- added do decrease space etween adjacent \cmidrule commands
\begin{document}
\begin{table}
\begin{tabular}{@{}l@{}S@{}S@{}} % <---- added @{} here to left align text with the left edge of the table
\toprule
\multirow{2.3}{*}{\textbf{Parameter}}
& \multicolumn{2}{c}{\textbf{Estimate}} \\
\cmidrule(l){2-3} % <--- removed r here in order to make sure the cmirdlue reaches the right "border" of the table
& {\textbf{Model~M1}} & {\textbf{Model~M2}}\\ % <--- removed \centering here. Text in {} is by default centered in S type columns.
\cmidrule(r){1-1} % <--- removed l here to make line left aligned with left endge of table
\cmidrule(lr){2-2}
\cmidrule(l){3-3} % <--- removed r here in order to make sure the cmirdlue reaches the right "border" of the table
{Constant} &
\cellvalleft{-1.316e-2}{(-23.153)} &
\cellvalright{-58.510}{(-4.26)}\\ % User defined functions to shorten the code length
\addlinespace
\textbf{\emph{Category}} & & \\
\ShiftedWithBaseCase{Male members}{Base case: Female members} & \cellvalleft{0.112}{(2.04)}&
{---}\\
\bottomrule
\end{tabular}
\end{table}
\end{document}