![将嵌套表格转换为与电子表格一起使用会产生错误](https://linux22.com/image/438797/%E5%B0%86%E5%B5%8C%E5%A5%97%E8%A1%A8%E6%A0%BC%E8%BD%AC%E6%8D%A2%E4%B8%BA%E4%B8%8E%E7%94%B5%E5%AD%90%E8%A1%A8%E6%A0%BC%E4%B8%80%E8%B5%B7%E4%BD%BF%E7%94%A8%E4%BC%9A%E4%BA%A7%E7%94%9F%E9%94%99%E8%AF%AF.png)
以下示例代码由两个表组成。第一个表编译通过,第二个表不编译。这两个表都使用sinunitx
。第二个表使用spreadtab
。
第二个表格与第一个表格相同,只是它已被更改为与 一起使用spreadtab
。根据spreadtab
文档,需要@
在文本单元格中添加 ,因此我将@
随意地分散在代码中,包括我认为不需要的地方。
但是,我无法编译此版本。它给出错误:
New spreadtab: \begin{longtable}{p{3in} S[table-format=6.2, round-mode=places,
round-precision=2] }
* reading tab: ok
* computing formulas:
cell B5
* building tab: ok
! Undefined control sequence.
\@preamerr #1->\def \@tempd
{{..} at wrong position: }\PackageError {array}{...
l.40 \end{spreadtab}
还有一些补充评论。
spreadtab
似乎认为该表至少有 5 行,但实际上只有 3 行。@
如果我从的开头删除CO-OPERATIVE
,我会收到错误消息:New spreadtab: \begin{longtable}{p{3in} S[table-format=6.2, round-mode=places, round-precision=2] } * reading tab: ! FP error: Illegal character \BANK found in float number!. \FP@errmessage #1->\errmessage {FP error: #1!} l.57 \end{spreadtab}
这很奇怪,因为该单元格中已经有了@
,那么为什么另一个会产生影响?同样,@
从 XXX-XXXX00000X 的开头删除会得到。
! FP error: Illegal character \XXX found in float number!.
所有这些都使我认为spreadtab
存在一些解析问题。
该代码已通过 Debian buster 10.10 和 TeX Live 2020 测试。
\documentclass[12pt]{scrartcl}
\usepackage[group-separator={,}, group-minimum-digits={3}]{siunitx}
\usepackage{longtable}
\usepackage{spreadtab}
\usepackage{lua-ul}
\begin{document}
\begin{longtable}{p{3in}
S[table-format=6.2, round-mode=places, round-precision=2]
}
&Rs{.}\\
\underLine{Name of the Deductor, TAN and Certificate No.}
& \multicolumn{1}{c}{\begin{tabular}{@{}c@{}} TDS\\ deducted\end{tabular}}\\\cline{2-2}
XXXXXX XXX XXXXXXXXXXX\\ CO-OPERATIVE BANK LIMITED,\\ XXX-XXXX00000X & 11111.00\\
\end{longtable}
\begin{spreadtab}{{longtable}{p{3in}
S[table-format=6.2, round-mode=places, round-precision=2]
}}
&@ Rs{.}\\
@\underLine{ Name of the Deductor, TAN and Certificate No.}
& @ \multicolumn{1}{c}{\begin{tabular}{@{}c@{}} TDS\\ deducted\end{tabular}}\\\cline{2-2}
@XXXXXX XXX XXXXXXXXXXX\\ @CO-OPERATIVE BANK LIMITED,\\ XXX-XXXX00000X & 11111.00\\
\end{spreadtab}
\end{document}
答案1
更新在后续问题之后。
需要更多@
。特别是在表格内:@
和括号内(对于siunitx
}。出于显而易见的原因@{}
,不能使用,但在这里不需要它们。
\multicolumn{1}{c}{..
至少在这个例子中,这不是必需的,因为您使用嵌套表格来使行居中。
第三个示例显示了内部嵌套的表格\multicolumn
。
\documentclass[12pt]{scrartcl}
\usepackage[group-separator={,}, group-minimum-digits={3}]{siunitx}
\usepackage{longtable}
\usepackage{spreadtab}
\usepackage{lua-ul}
\begin{document}
\textbf{LONGTABLE}
\begin{longtable}{p{4in}S[table-format=6.2, round-mode=places, round-precision=2]}
&Rs{.}\\
\underLine{Name of the Deductor, TAN and Certificate No.}
&\begin{tabular}{@{}c@{}} TDS\\ deducted \\ \end{tabular}\\
\cline{2-2}
XXXXXX XXX XXXXXXXXXXX &\\
CO-OPERATIVE BANK LIMITED, &\\
XXX-XXXX00000X & 11111.00\\
\end{longtable}
\bigskip
\textbf{SPREADTAB }
\begin{spreadtab}{{longtable}{p{4in}S[table-format=6.2, round-mode=places, round-precision=2]}}
& @ Rs{.}\\
@ \underLine{Name of the Deductor, TAN and Certificate No.}
&\begin{tabular}{c} @{TDS}\\ @{deducted}\end{tabular}\\
\cline{2-2}
@ XXXXXX XXX XXXXXXXXXXX &\\
@ CO-OPERATIVE BANK LIMITED,&\\
@ XXX-XXXX00000X & @ 11111.00\\
\end{spreadtab}
\bigskip
\textbf{SPREADTAB, using \texttt{multicolumn} }
\begin{spreadtab}{{longtable}{p{4in}S[table-format=6.2, round-mode=places, round-precision=2]}}
& @ Rs{.}\\
@ \underLine{Name of the Deductor, TAN and Certificate No.}
& \multicolumn{1}{c}{\begin{tabular}{c} @{TDS}\\ @{deducted}\end{tabular}}\\
\cline{2-2}
@ XXXXXX XXX XXXXXXXXXXX &\\
@ CO-OPERATIVE BANK LIMITED,&\\
@ XXX-XXXX00000X & @ 11111.00\\
\end{spreadtab}
\end{document}
答案2
longtblr
新环境的替代解决方案tabularray
包:您不需要使用嵌套表来获取多行单元格。
\documentclass[12pt]{scrartcl}
\usepackage[group-separator={,}, group-minimum-digits={3}]{siunitx}
\usepackage{spreadtab}
\usepackage{lua-ul}
\usepackage{tabularray}
\UseTblrLibrary{siunitx}
\begin{document}
\begin{spreadtab}{{longtblr}{p{4in}S[table-format=6.2, round-mode=places, round-precision=2]}}
& @ Rs{.} \\
@ \underLine{Name of the Deductor, TAN and Certificate No.}
& @ {{{TDS \\ deducted}}} \\
\cline{2-2}
@ XXXXXX XXX XXXXXXXXXXX & \\
@ CO-OPERATIVE BANK LIMITED,& \\
@ XXX-XXXX00000X & @ 11111.00 \\
\end{spreadtab}
\end{document}