灵活的表格,计算列宽从除以 10 开始失败

灵活的表格,计算列宽从除以 10 开始失败

我收到了一个表格模板,我打算使用 Java 动态生成数据。但是当表格变得太大时,使用 LaTeX 编译会失败。这个模板的具体特点是,它将表格宽度拉伸到最大页面宽度,并且所有数据列(第一列除外)的列宽都相同。

这是完整模板的最小版本,但仍然可以正常工作:

\documentclass[final,authoryear,3p,twocolumn]{elsarticle}

\usepackage{amssymb,amsmath}
\usepackage{calc}
\usepackage{array}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}
\usepackage{eurosym}
\usepackage{microtype}
\usepackage{needspace}
\usepackage{fp}

\usepackage{graphicx}
\DeclareGraphicsExtensions{.pdf}
\input{pgfexternal}

\newcommand\tabt{\rule{0pt}{2.6ex}}
\newcommand\tabb{\rule[-1.2ex]{0pt}{0pt}}

\begin{document}

\begin{table*}[t]
    \footnotesize
    \begin{tabular*}{\linewidth}{@{}L{2em}@{}*9{R{(\linewidth-2em)/9}@{}}}\hline\tabt
$i$ & $1$ & $2$ & $3$ & $4$ & $5$ & $6$ & $7$ & $8$ & $9$\tabb\tabularnewline\hline\tabt
$1$ &  & $48.87$ & $0.01$ & $0.05$ & $1.23$ & $0.00$ & $0.20$ & $5.67$ & $2.35$\tabularnewline
    \end{tabular*}
\end{table*}

\end{document}

但是,当通过另一列扩展此示例时,表格看起来将类似于以下示例,但它失败了:

\begin{table*}[t]
    \footnotesize
    \begin{tabular*}{\linewidth}{@{}L{2em}@{}*10{R{(\linewidth-2em)/10}@{}}}\hline\tabt
$i$ & $1$ & $2$ & $3$ & $4$ & $5$ & $6$ & $7$ & $8$ & $9$ & a\tabb\tabularnewline\hline\tabt
$1$ &  & $48.87$ & $0.01$ & $0.05$ & $1.23$ & $0.00$ & $0.20$ & $5.67$ & $2.35$ & b\tabularnewline
    \end{tabular*}
\end{table*}

无论我添加多少列,这都会失败。到目前为止,对我来说,除以 10 似乎是一个问题。难道 LaTeX 默认情况下无法正确处理这个问题?我该如何解决这个问题,并使用此模板让更大的表格也能正常工作。或者这是我尚未发现的其他问题?感谢您的帮助!

答案1

*10*{1}{0}

因此0将被视为列说明符重复 1 次并生成

! Package array Error:  Illegal pream-token (0): `c' used.

使用*{10}

由于你无论如何都要强制宽度,你可以使用tabular而不是`tabular*,这会导致你因舍入误差而成为小数

Underfull \hbox (badness 10000) in alignment at lines 24--27

相关内容