缺少数字,在 tabularx 中视为零

缺少数字,在 tabularx 中视为零

我正在使用一个程序来生成 LaTeX 代码,利用 tabular 包。它会产生一个错误,内容如下

! Missing number, treated as zero.
<to be read again> 
                   ##
l.17 \begin{tabularx} {#}
                          {@{} l Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y@{}} \\
?

我使用的代码如下:

\documentclass[11pt, oneside]{article} 
\usepackage{booktabs}
\usepackage{tabularx}

\title{Brief Article}
\author{The Author}

\begin{document}
\maketitle
%\section{}
%\subsection{}
\begin{center}
\footnotesize
\newcolumntype{Y}{>{\raggedleft\arraybackslash}X}

\begin{tabularx} {#} {@{} l Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y@{}} \\
\toprule
 & \multicolumn{2}{c}{\textbf{surveyseason}} \\
\cmidrule(l{.75em}){2-3} 
&\textbf{1}&\textbf{} \\
&Col \%&Col \% \\
\midrule
\textbf{sex}&& \\
female&45.3&47.2 \\
male&54.5&56.8 \\
\midrule
\textbf{grade}&& \\
9th&29&23 \\
10th&26&25 \\
11th&12.8&2.5 \\
12th&2.8&21.3 \\
\midrule
\textbf{ethbest}&& \\
american indian or alaska native&3.9&3.9 \\
native hawaiian or pacific islander&1.6&1.6 \\
asian american&9.8&9.8 \\
white or caucasian&60.4&60.4 \\
other&8.8&8.8 \\
\midrule
\textbf{highsch}&& \\
san dieguito&17.6&17.6 \\
torrey pines&33.5&33.5 \\
lacosta canyon&29.0&29.0 \\
canyon crest&19.8&19.8 \\
\bottomrule
\addlinespace[.75ex]
\end{tabularx}
\par
\scriptsize{\emph{Source: }test.dta}
\normalsize
\end{center}


\end{document}  

答案1

环境的第一个参数tabularx应该是应该跨越的宽度tabularx。 在您的例子中,您传递了一个长度#,这是不正确的。 相反,传递以下内容\linewidth

\noindent
\begin{tabularx}{\linewidth}{...}
  ...
\end{tabularx}

使用/符号在tabularx 文档

\begin{tabularx}{<width>}{<preamble>}

由于这是程序生成的输出,因此您必须手动更新测量值(在 TeX 输出中),或者当然从程序中更新。

其他手动改进可能包括

  • 使用*{<num>}{<colspec>}表示重复列规范的符号。<col spec>因此<num>

    \begin{tabularx}{\linewidth}{@{} l Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y@{}}
    

    将会变成

    \begin{tabularx}{\linewidth}{@{} l *{16}{Y} @{}}
    

    有点奇怪的是,您在列规范中列出了大量的列tabularx,但您只使用了三个曾经

  • 不用\\作你的第一行tabularx

注意使用\noindent以避免过度\hbox警告。

相关内容