帮助满足 tabularx 非常具体的设计要求

帮助满足 tabularx 非常具体的设计要求

正如下面的 MWE 所示,我使用它tabularx来创建一个交替颜色的表格。出于不同的原因,我定义了三种新的列类型LC它们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}

从技术上讲,您只需要重新定义最右边的列,但将其添加到所有列中并没有什么坏处。

相关内容