tabularx 環境中列的水平對齊

tabularx 環境中列的水平對齊

如何使用基於數字而不是單元格中的所有符號的 tabularx 將下表中的列居中。現在它是考慮到星星而居中的,但我想僅根據數字居中。

\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}

答案1

在這裡你是與tabular*而不是tabularx

我目測***的寬度大約是四邊形。星號在零寬度框中排版。

使用了一個骯髒的技巧來使減號正確(條目被排版為數學)和逗號成為普通的數學符號。

另請注意,caption標題和表格之間應使用適當的間距;預設article是放置字幕以下表。

\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}

我刪除了雙重規則和空白行。我還切換了前兩行,因為「範例面板」的等級比(1)、(2)和(3)更高。

在此輸入影像描述

如果您還希望減號不參與居中並且僅輸入*而不是\st{*},則可以。但如果這並不總是有效,請不要責怪我。

\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}

在此輸入影像描述

唯一的“非自動”部分是測量星號的數量及其在最後一列中的位置,因此它們不會突出到表格之外。沒有@{\quad}你就會得到

在此輸入影像描述

答案2

如果你想堅持表格x在設定中,實現格式化目標的一種方法是使用巨集\rlap-或其數學模式表兄弟,\mathrlap(由數學工具package) -- 分別封裝*****

由於您僅使用了非常基本的功能三部分錶機械(例如,沒有\tnote指令),我會threeparttable完全放棄環境。我會將\hline\hline指令和多個空行替換為\toprule\cmidrule\bottomrule指令,它們是由書本標籤包裹。最後,材料\footnotesize中不需要tabularx

在此輸入影像描述

\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}

相關內容