我对 tabularx 环境和添加新列有疑问。目前我有 2 列表格的代码,如下所示
[![在此处输入图片描述][1]][1]
但是当我尝试添加其他列时,例如使用以下代码,似乎会出现错误。例如,代码如下:
\documentclass{article}
\usepackage{tabularx}
\usepackage{booktabs}
\newcolumntype{L}{ >{\RaggedRight}X }
\usepackage{siunitx}
\noindent
\newcolumntype{Y}{ >{\Centering}X}
\begin{tabularx}{\textwidth}{@{} l L S[table-format=1.4] @{}}
\toprule
Category & & {Market Index} & & {Barclay's Event Driven}
& & {Hedge Fund Index} \\
\midrule
Momentum & & 0 & & 0 & & 0 \\ \addlinespace
Size & & 0 & & 0 & & 0 \\ \addlinespace
Value & & 0 & & 0 & & 0 \\ \addlinespace
Market Index & & 0.498 & & 0 & & 0 \\ \addlinespace
\bottomrule
\end{tabularx}
\enddocument
但最后我收到一条错误消息,提示“额外的对齐标签已更改为 \cr”。有人能就此提出建议吗?如果其他人能为我提供任何其他格式化建议,我将不胜感激。谢谢。
答案1
不确定您想要什么,但您声明了一个带有3
列的表并使用了 6 &
,它们与列相对应7
,就好像您认为&
需要一对来分隔列一样。我可以向您保证 1
就足够了:o)。所以我在声明中添加了一列,下面是代码和结果。对于列标题,我建议加载makecell
,它允许在单元格内换行\thead
并采用通用格式。我还将删除最后一个addlinespace
(除非有特定要求,因为bootabs
上面已经添加了一些垂直填充\bottomrule
:
\documentclass{article}
\usepackage{tabularx}
\usepackage{booktabs, ragged2e, makecell}
\renewcommand\theadfont{\normalfont\bfseries}
\newcolumntype{L}{ >{\RaggedRight}X }
\usepackage{siunitx}
\setlength\parindent{0pt}
\newcolumntype{Y}{ >{\Centering}X}
\begin{document}
\begin{tabularx}{\textwidth}{@{} lYY S[table-format=1.4] @{}}
\toprule
\thead[lc]{Category }& \thead{Market Index} & {\thead{Barclay's \\Event Driven}}
& {\thead{Hedge Fund \\Index}} \\
\midrule
Momentum & 0 & 0 & 0 \\
\addlinespace
Size & 0 & 0 & 0 \\
\addlinespace
Value & 0 & 0 & 0 \\
\addlinespace
Market Index & 0.498 & 0 & 0 \\
\bottomrule
\end{tabularx}
\end{document}