我正在使用一个程序来生成 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}
\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
警告。