我有以下代码,当我有小数时它会对齐,但当我输入 0 时它却无法对齐。
代码如下
\documentclass{article}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{ragged2e}
\newcolumntype{L}{ >{\RaggedRight}X }
\usepackage{siunitx}
\usepackage{makecell}
\renewcommand\theadfont{\normalfont\bfseries}
\setlength\parindent{0pt}
\newcolumntype{Y}{ >{\Centering}X}
\usepackage[justification=centering]{caption}
\setlength\parindent{0pt}
\newcolumntype{L}{>{\RaggedRight\arraybackslash}X}
\newcolumntype{C}{>{\Centering\arraybackslash}X}
\renewcommand\theadfont{\normalfont\bfseries}
\newcommand\mc[1]{\multicolumn{2}{c}{#1}}
\setlength\parindent{0pt}
\usepackage[round,sort,comma]{natbib}
\usepackage{indentfirst}
\noindent
\newcolumntype{Y}{ >{\Centering}X}
\begin{tabularx}{\textwidth}{@{} lYY S[table-format=1.4] @{}}
\toprule
\thead[lc]{Category }& \thead{Passive Total Return} & {\thead{Value Weighted\\ Return Index}} & {\thead{Equal Weighted\\ Return Index}} \\
\midrule
Momentum & 0 & 0 & 0 \\ \addlinespace
Size & 0 & 0.72 & 0.72 \\ \addlinespace
Value & 0 & 0.37 & 1.00 \\ \addlinespace
\bottomrule
\end{tabularx}
\enddocument
但是,在更改为个位数后,我的代码仅对齐零,而第二行则不同,我觉得这很奇怪。它看起来如下:
有人可以提供一些建议吗?
谢谢
答案1
第四列有小数对齐,但两个表中第三列的对齐效果很差,0 未居中,而是位于该列数字条目的“单位列”中。使用小数对齐列指定两列会更加一致S
。
请注意,如果小数对齐列中有一个整数(例如示例中的 0),它将与其他行中小数点左侧的“单位”对齐,而不是居中。
答案2
像这样?
在 MWE 中,以下是 David Carlisle 的评论和回答。附加值与主题无关:
- 只需定义一次新命令即可
- 对于具有数字的列的相等宽度,使用技巧:列标题
\multicolumn
与修改后的X
列类型一起使用
完整的 MWE 是:
\documentclass{article}
\usepackage{booktabs,makecell,tabularx}% for tables
\usepackage{ragged2e}
\renewcommand\theadfont{\normalfont\bfseries}
\newcolumntype{L}{>{\RaggedRight\arraybackslash}X}
\newcolumntype{C}{>{\Centering\arraybackslash}X}
\newcommand\mcxh[1]{\multicolumn{1}{C}{\thead{#1}}}
\usepackage{siunitx}
\setlength\parindent{0pt}
\begin{document}
\begin{tabularx}{\textwidth}{l *{3}{S[table-format=1.2]}}
\toprule
\thead[l]{Category}
& \mcxh{Passive\\ Total Return}
& \mcxh{Value Weighted\\ Return Index}
& \mcxh{Equal Weighted\\ Return Index} \\
\midrule
Momentum & 0 & 0 & 0 \\
Size & 0 & 0.72 & 0.72 \\
Value & 0 & 0.37 & 1.00 \\
\bottomrule
\end{tabularx}
\end{document}