正如下面的 MWE 所示,我使用它tabularx
来创建一个交替颜色的表格。出于不同的原因,我定义了三种新的列类型L
,C
它们R
将自动填充整个表格\textwidth
,并左对齐、居中对齐和右对齐。
但是,这个 MWE 不断失败,我无法找到让它工作的方法,也不知道如何解释错误消息:
- 放错位置的 \noalign。\end{tabularx}
- 额外的对齐标签已更改为 \cr。\end{tabularx}
\documentclass[11pt, oneside, a4paper]{article}
\usepackage{fontspec}
\setmainfont[BoldFont=Calibri, ItalicFont=CalibriLightItalic]{Calibri Light}
% captions
\usepackage[font={color=red, small}, justification=justified, singlelinecheck=false, tableposition=top]{caption}
% colors
\usepackage[table]{xcolor}
\usepackage{colortbl}
% tables
\usepackage{float}
\floatstyle{plaintop}
\restylefloat{table}
\usepackage{xltabular}
\usepackage{tabularx}
\renewcommand{\tabularxcolumn}[1]{m{#1}}
\usepackage{array}
\newcolumntype{L}{>{\raggedright}X}
\newcolumntype{R}{>{\raggedleft}X}
\newcolumntype{C}{>{\centering}X}
\renewcommand{\arraystretch}{0.75}
\setlength\arrayrulewidth{1pt}
\setlength\tabcolsep{0pt}
\begin{document}
\begin{table}[H]
\rowcolors{1}{white}{gray!50}
\color{red}{
\begin{tabularx}{\textwidth}{C C C}
\arrayrulecolor{gray}
\hline
\textbf{Band No.} & \textbf{Spectral Range} & \textbf{Resolution} \\
\hline
1 & 0.435 & 30 \\
2 & 0.452 & 30 \\
\hline
\end{tabularx}
}
\caption{Sensor specifications Landsat 8}
\label{tab:specs_landsat8}
\end{table}
\end{document}
我可以使用如下列定义来使其工作:
\begin{tabularx}{\textwidth}{
>{\arraybackslash}p{0.35\textwidth}
>{\raggedright\arraybackslash}p{0.3\textwidth}
>{\arraybackslash}p{0.35\textwidth}
}
...
答案1
\raggedright
和朋友重新定义,\\
所以它不再意味着new row
,\arraybackslash
恢复tabular
的定义\\
。因此最好使用
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\newcolumntype{R}{>{\raggedleft\arraybackslash}X}
\newcolumntype{C}{>{\centering\arraybackslash}X}
从技术上讲,您只需要重新定义最右边的列,但将其添加到所有列中并没有什么坏处。