Horizontale Ausrichtung von Spalten in einer Tabularx-Umgebung

Horizontale Ausrichtung von Spalten in einer Tabularx-Umgebung

Wie kann ich die Spalten in der folgenden Tabelle mit Tabularx basierend auf Zahlen und nicht auf allen Symbolen in einer Zelle zentrieren? Momentan wird die Tabelle unter Berücksichtigung der Sterne zentriert, aber ich möchte sie nur basierend auf Zahlen zentrieren.

\documentclass{article}
\usepackage[flushleft]{threeparttable}
\usepackage{tabularx}

\newcolumntype{Y}{>{\centering\arraybackslash}X}

\begin{document}

\begin{table}[!htb]
\caption{Example table}
\footnotesize
\centering
\begin{threeparttable}
\begin{tabularx}{\linewidth}{lYYY} \hline \hline
& & & \\
& (1) & (2) & (3) \\
& & & \\
& \multicolumn{3}{c}{Example Panel} \\ \cline{2-4}
Coefficient             &  -10     &   -211** &   260*** \\
Standard Error          & (414)    &   (110)  &   (90)   \\
Observations            &  123,370 &  32,268  &  73,102  \\
Variation               &  0.08    &  0.08    &  0.06    \\
Statistics              &  13,115  &  12,826  & 14,031   \\
& & & \\
\hline \hline
\end{tabularx}
\begin{tablenotes}
\fontsize{9pt}{9pt}\selectfont
\item
\textit{Notes:}
Some table notes
\end{tablenotes}
\end{threeparttable}
\end{table}

\end{document}

Antwort1

Hier sind Sie mit tabular*eher als tabularx.

Ich habe nach Augenmaß geschätzt, dass die Breite von *** etwa ein Quad beträgt. Die Sternchen sind in einem Feld mit der Breite Null gesetzt.

Mit einem schmutzigen Trick wird versucht, das Minuszeichen richtig zu setzen (die Einträge werden als mathematische Zeichen gesetzt) ​​und das Komma zu einem gewöhnlichen mathematischen Symbol zu machen.

Beachten Sie auch die Verwendung von , captiondamit zwischen Überschrift und Tabelle der richtige Abstand eingehalten wird; der Standardwert vonarticle ist, ÜberschriftenuntenTabellen.

\documentclass{article}
\usepackage[flushleft]{threeparttable}
\usepackage{booktabs,array,caption}

\newcommand{\st}[1]{\makebox[0pt][l]{#1}}
\newcommand{\decimalcomma}{\mathcode`,=\inteval{\mathcode`,-"6000}}

\begin{document}

\begin{table}[!htbp]
\centering

\caption{Example table}

\begin{threeparttable}
\begin{tabular*}{\textwidth}{
  @{\extracolsep{\fill}}
  l
  *{3}{>{$\decimalcomma}c<{$}}
  @{\quad}}
\toprule
& \multicolumn{3}{c}{Example Panel} \\
\cmidrule(l){2-4}
& (1) & (2) & (3) \\
\midrule
Coefficient             &  -10     &   -211\st{**} &   260\st{***} \\
Standard Error          & (414)    &   (110)       &   (90)   \\
Observations            &  123,370 &  32,268       &  73,102  \\
Variation               &  0.08    &  0.08         &  0.06    \\
Statistics              &  13,115  &  12,826       &  14,031   \\
\bottomrule
\end{tabular*}
\begin{tablenotes}
\small
\item \textit{Notes:} Some table notes
\end{tablenotes}
\end{threeparttable}

\end{table}

\end{document}

Ich habe doppelte Linien und leere Zeilen entfernt. Außerdem habe ich die ersten beiden Zeilen vertauscht, da „Beispiel-Panel“ auf einer höheren Ebene als (1), (2) und (3) liegt.

Bildbeschreibung hier eingeben

Wenn Sie außerdem möchten, dass das Minuszeichen nicht an der Zentrierung teilnimmt und Sie nur *anstelle von eingeben \st{*}, können Sie das tun. Aber geben Sie mir nicht die Schuld, wenn das nicht immer funktioniert.

\documentclass{article}
\usepackage[flushleft]{threeparttable}
\usepackage{booktabs,array,caption}

\newcommand{\st}[1]{\makebox[0pt][l]{#1}}
\newcommand{\decimalcomma}{\mathcode`,=\inteval{\mathcode`,-"6000}}
\newcommand{\zerowidthminus}{%
  \mathchardef\standardminus=\mathcode`-
  \begingroup\lccode`~=`-\lowercase{\endgroup\def~}{\llap{$\standardminus$}}%
  \mathcode`-="8000
}
\newcommand{\noteasterisk}{%
  \begingroup\lccode`~=`*\lowercase{\endgroup\let~}\zwast
  \mathcode`*="8000
}
\newcommand{\zwast}{\hbox to 0pt\bgroup*\checkast}
\newcommand{\checkast}[1]{*\futurelet\next\checkastaux}
\newcommand{\checkastaux}{%
  \ifx\next*%
    \expandafter\checkast
  \else
    \expandafter\hss\expandafter\egroup
  \fi
}
\newcolumntype{N}{>{$\decimalcomma\zerowidthminus\noteasterisk}c<{$}}

\begin{document}

\begin{table}[!htbp]
\centering

\caption{Example table}

\begin{threeparttable}
\begin{tabular*}{\textwidth}{
  @{\extracolsep{\fill}}
  l
  *{3}{N}
  @{\quad}
}
\toprule
& \multicolumn{3}{c@{\quad}}{Example Panel} \\
\cmidrule(l){2-4}
& (1) & (2) & (3) \\
\midrule
Coefficient             &  -10     &   -211** &   260***\\
Standard Error          & (414)    &   (110)       &   (90)   \\
Observations            &  123,370 &  32,268       &  73,102  \\
Variation               &  0.08    &  0.08         &  0.06    \\
Statistics              &  13,115  &  12,826       &  14,031   \\
\bottomrule
\end{tabular*}
\begin{tablenotes}
\small
\item \textit{Notes:} Some table notes
\end{tablenotes}
\end{threeparttable}

\end{table}

\end{document}

Bildbeschreibung hier eingeben

Der einzige „nicht automatische“ Teil ist die Messung der Anzahl der Sternchen und ihrer Position in der letzten Spalte, damit sie nicht aus der Tabelle herausragen. Ohne diese @{\quad}würde man

Bildbeschreibung hier eingeben

Antwort2

Wenn Sie bei dertabellarischxSetup, eine Möglichkeit, Ihr Formatierungsziel zu erreichen, wäre die Verwendung des \rlapMakros - oder seines mathematischen Cousins \mathrlap​​(bereitgestellt durchMathetoolsPaket) – umhüllen **bzw. ***.

Da Sie die Möglichkeiten desdreiteiliger TischMaschinerie (z. B. keine \tnoteAnweisungen), würde ich die threeparttableUmgebung ganz weglassen. Und ich würde die \hline\hlineAnweisungen und mehrere Leerzeilen durch \toprule, \cmidrule, und \bottomruleAnweisungen ersetzen, die Makros sind, die von derBuchtabs\footnotesizePaket. Schließlich ist kein Material mehr nötig tabularx.

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{tabularx}  % for 'tabularx' env. and 'X' col. type
\newcolumntype{Y}{>{\centering\arraybackslash}X} % centered version of 'X'
\newcolumntype{Z}{>{$}Y<{$}} % automatic math mode

\usepackage{booktabs}  % for well-spaced horizontal rules
\usepackage{mathtools} % for '\mathrlap' macro
\usepackage{icomma}    % no special treatment of ',' in math mode

\begin{document}

\begin{table}[!htb]
\caption{Example table}

\smallskip
\begin{tabularx}{\linewidth}{@{} l ZZZ @{}}
\toprule
& (1) & (2) & (3) \\[1ex]
& \multicolumn{3}{c@{}}{Example Panel} \\ 
\cmidrule(l){2-4}
Coefficient    &  -10   & -211\mathrlap{^{**}} & 260\mathrlap{^{***}} \\
Standard Error & (414)    &   (110)  &   (90)   \\
Observations   &  123,370 &  32,268  &  73,102  \\
Variation      &  0.08    &  0.08    &  0.06    \\
Statistics     &  13,115  &  12,826  & 14,031   \\
\bottomrule
\end{tabularx}

\smallskip\small
\textit{Notes:} Some stuff \dots 
\end{table}

\end{document}

verwandte Informationen