我有一张包含所有数学内容的长表。我对规范有疑问。我从答案中复制了数学列的规范这里并重复三次。
但是,我得到了“数组参数中的非法字符”错误。这是 MWE。我无法弄清楚这里的错误是什么。
\documentclass[a4paper,12pt]{article}
\usepackage{longtable}
\begin{document}
\begin{longtable}{>{$}l<{$}>{$}l<{$}>{$}l<{$}}
\hline
a&a^2\pmod{8}&a^2\pmod{4}\\
\hline\endhead
0 & 0&0 \\ \hline
\iota & 7&3 \\ \hline
2\iota & 4&0 \\ \hline
3\iota & 7&3 \\ \hline
4\iota & 0&0 \\ \hline
5\iota & 7&3 \\ \hline
6\iota & 4&0 \\ \hline
7\iota & 7&3 \\ \hline
1 & 1&1 \\ \hline
1 + \iota & 2\iota&2\iota \\ \hline
1 + 2\iota & 5 + 4\iota&1 \\ \hline
1 + 3\iota & 6\iota&2\iota \\ \hline
1 + 4\iota & 1&1 \\ \hline
1 + 5\iota & 2\iota&2\iota \\ \hline
1 + 6\iota & 5 + 4\iota&1 \\ \hline
1 + 7\iota & 6\iota&2\iota \\ \hline
2 & 4&0 \\ \hline
2 + \iota & 3 + 4\iota&3 \\ \hline
2 + 2\iota & 0&0 \\ \hline
2 + 3\iota & 3 + 4\iota&3 \\ \hline
2 + 4\iota & 4&0 \\ \hline
2 + 5\iota & 3 + 4\iota&3 \\ \hline
2 + 6\iota & 0&0 \\ \hline
2 + 7\iota & 3 + 4\iota&3 \\ \hline
3 & 1&1 \\ \hline
3 + \iota & 6\iota&2\iota \\ \hline
3 + 2\iota & 5 + 4\iota&1 \\ \hline
3 + 3\iota & 2\iota&2\iota \\ \hline
3 + 4\iota & 1&1 \\ \hline
3 + 5\iota & 6\iota&2\iota \\ \hline
3 + 6\iota & 5 + 4\iota&1 \\ \hline
3 + 7\iota & 2\iota&2\iota \\ \hline
4 & 0&0 \\ \hline
4 + \iota & 7&3 \\ \hline
4 + 2\iota & 4&0 \\ \hline
4 + 3\iota & 7&3 \\ \hline
4 + 4\iota & 0&0 \\ \hline
4 + 5\iota & 7&3 \\ \hline
4 + 6\iota & 4&0 \\ \hline
4 + 7\iota & 7&3 \\ \hline
5 & 1&1 \\ \hline
5 + \iota & 2\iota&2\iota \\ \hline
5 + 2\iota & 5 + 4\iota&1 \\ \hline
5 + 3\iota & 6\iota&2\iota \\ \hline
5 + 4\iota & 1&1 \\ \hline
5 + 5\iota & 2\iota&2\iota \\ \hline
5 + 6\iota & 5 + 4\iota&1 \\ \hline
5 + 7\iota & 6\iota&2\iota \\ \hline
6 & 4&0 \\ \hline
6 + \iota & 3 + 4\iota&3 \\ \hline
6 + 2\iota & 0&0 \\ \hline
6 + 3\iota & 3 + 4\iota&3 \\ \hline
6 + 4\iota & 4&0 \\ \hline
6 + 5\iota & 3 + 4\iota&3 \\ \hline
6 + 6\iota & 0&0 \\ \hline
6 + 7\iota & 3 + 4\iota&3 \\ \hline
7 & 1&1 \\ \hline
7 + \iota & 6\iota&2\iota \\ \hline
7 + 2\iota & 5 + 4\iota&1 \\ \hline
7 + 3\iota & 2\iota&2\iota \\ \hline
7 + 4\iota & 1&1 \\ \hline
7 + 5\iota & 6\iota&2\iota \\ \hline
7 + 6\iota & 5 + 4\iota&1 \\ \hline
7 + 7\iota & 2\iota&2\iota \\ \hline
\end{longtable}
\end{document}
答案1
- 使用
tabularray
包 - 由于表格比较窄,因此添加了将表格分成两半然后并行写入的示例:
\documentclass[a4paper,12pt]{article}
%--------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
% new:
\usepackage{tabularray}
\UseTblrLibrary{booktabs}
\SetTblrStyle{contfoot}{font=\footnotesize\itshape} % <------
\ExplSyntaxOn
\NewChildSelector{eacheight}
{
\int_step_inline:nnnn {10}{8}{\l_tblr_childs_total_tl}
{ \clist_put_right:Nn \l_tblr_childs_clist {##1} }
}
\ExplSyntaxOff
\begin{document}
\begingroup
\DefTblrTemplate{capcont}{default}{}
\begin{longtblr}[
entry=none, % <---
label=none, % <---
]{colspec ={*{3}{Q[l, wd=4em, mode=math]}},
row{eacheight} = {abovesep=2ex},
rowhead = 1,
}
\toprule
% column headers
a & a^2\bmod{8} & a^2\bmod{4} \\ % "\bmod" for tigher spacing
\midrule
% body of table
0 & 0 & 0 \\
\iota & 7 & 3 \\
2\iota & 4 & 0 \\
3\iota & 7 & 3 \\
4\iota & 0 & 0 \\
5\iota & 7 & 3 \\
6\iota & 4 & 0 \\
7\iota & 7 & 3 \\
1 & 1 & 1 \\
1 + \iota & 2\iota & 2\iota \\
1 + 2\iota & 5 + 4\iota a &1 \\
1 + 3\iota & 6\iota & 2\iota \\
1 + 4\iota & 1 & 1 \\
1 + 5\iota & 2\iota & 2\iota \\
1 + 6\iota & 5 + 4\iota & 1 \\
1 + 7\iota & 6\iota & 2\iota \\
2 & 4 & 0 \\
2 + \iota & 3 + 4\iota & 3 \\
2 + 2\iota & 0 & 0 \\
2 + 3\iota & 3 + 4\iota & 3 \\
2 + 4\iota & 4 & 0 \\
2 + 5\iota & 3 + 4\iota & 3 \\
2 + 6\iota & 0 & 0 \\
2 + 7\iota & 3 + 4\iota & 3 \\
3 & 1 & 1 \\
3 + \iota & 6\iota & 2\iota \\
3 + 2\iota & 5 + 4\iota & 1 \\
3 + 3\iota & 2\iota & 2\iota \\
3 + 4\iota & 1 & 1 \\
3 + 5\iota & 6\iota & 2\iota \\
3 + 6\iota & 5 + 4\iota & 1 \\
3 + 7\iota & 2\iota & 2\iota \\
4 & 0 & 0 \\
4 + \iota & 7 & 3 \\
4 + 2\iota & 4 & 0 \\
4 + 3\iota & 7 & 3 \\
4 + 4\iota & 0 & 0 \\
4 + 5\iota & 7 & 3 \\
4 + 6\iota & 4 & 0 \\
4 + 7\iota & 7 & 3 \\
5 & 1 & 1 \\
5 + \iota & 2\iota & 2\iota \\
5 + 2\iota & 5 + 4\iota & 1 \\
5 + 3\iota & 6\iota & 2\iota \\
5 + 4\iota & 1 & 1 \\
5 + 5\iota & 2\iota & 2\iota \\
5 + 6\iota & 5 + 4\iota & 1 \\
5 + 7\iota & 6\iota & 2\iota \\
6 & 4 & 0 \\
6 + \iota & 3 + 4\iota & 3 \\
6 + 2\iota & 0 & 0 \\
6 + 3\iota & 3 + 4\iota & 3 \\
6 + 4\iota & 4 & 0 \\
6 + 5\iota & 3 + 4\iota & 3 \\
6 + 6\iota & 0 & 0 \\
6 + 7\iota & 3 + 4\iota & 3 \\
7 & 1 &1 \\
7 + \iota & 6\iota & 2\iota \\
7 + 2\iota & 5 + 4\iota & 1 \\
7 + 3\iota & 2\iota & 2\iota \\
7 + 4\iota & 1 & 1 \\
7 + 5\iota & 6\iota & 2\iota \\
7 + 6\iota & 5 + 4\iota & 1 \\
7 + 7\iota & 2\iota & 2\iota \\
\bottomrule
\end{longtblr}
\endgroup
\clearpage
\begingroup
\DefTblrTemplate{capcont}{default}{}
\begin{longtblr}[
entry=none, % <---
label=none, % <---
]{colspec ={@{} *{3}{X[l, mode=math]} @{\hskip 5em}
*{3}{X[l, mode=math]}
@{}},
rowsep = 1pt,
row{eacheight} = {abovesep=2ex},
rowhead = 1,
}
\toprule
% column headers
a & a^2\bmod{8} & a^2\bmod{4}
& a & a^2\bmod{8} & a^2\bmod{4} \\
\midrule
% body of table
0 & 0 & 0
& 4 & 0 & 0 \\
\iota & 7 & 3
& 4 + \iota & 7 & 3 \\
2\iota & 4 & 0
& 4 + 2\iota & 4 & 0 \\
3\iota & 7 & 3
& 4 + 3\iota & 7 & 3 \\
4\iota & 0 & 0
& 4 + 4\iota & 0 & 0 \\
5\iota & 7 & 3
& 4 + 5\iota & 7 & 3 \\
6\iota & 4 & 0
& 4 + 6\iota & 4 & 0 \\
7\iota & 7 & 3
& 4 + 7\iota & 7 & 3 \\
%
1 & 1 & 1
& 5 & 1 & 1 \\
1 + \iota & 2\iota & 2\iota
& 5 + \iota & 2\iota & 2\iota \\
1 + 2\iota & 5 + 4\iota a &1
& 5 + 2\iota & 5 + 4\iota & 1 \\
1 + 3\iota & 6\iota & 2\iota
& 5 + 3\iota & 6\iota & 2\iota \\
1 + 4\iota & 1 & 1
& 5 + 4\iota & 1 & 1 \\
1 + 5\iota & 2\iota & 2\iota
& 5 + 5\iota & 2\iota & 2\iota \\
1 + 6\iota & 5 + 4\iota & 1
& 5 + 6\iota & 5 + 4\iota & 1 \\
1 + 7\iota & 6\iota & 2\iota
& 5 + 7\iota & 6\iota & 2\iota \\
2 & 4 & 0
& 6 & 4 & 0 \\
2 + \iota & 3 + 4\iota & 3
& 6 + \iota & 3 + 4\iota & 3 \\
2 + 2\iota & 0 & 0
& 6 + 2\iota & 0 & 0 \\
2 + 3\iota & 3 + 4\iota & 3
& 6 + 3\iota & 3 + 4\iota & 3 \\
2 + 4\iota & 4 & 0
& 6 + 4\iota & 4 & 0 \\
2 + 5\iota & 3 + 4\iota & 3
& 6 + 5\iota & 3 + 4\iota & 3 \\
2 + 6\iota & 0 & 0
& 6 + 6\iota & 3 + 4\iota & 3 \\
2 + 7\iota & 3 + 4\iota & 3
& 6 + 7\iota & 3 + 4\iota & 3 \\
3 & 1 & 1
& 7 & 1 &1 \\
3 + \iota & 6\iota & 2\iota
& 7 + \iota & 6\iota & 2\iota \\
3 + 2\iota & 5 + 4\iota & 1
& 7 + 2\iota & 5 + 4\iota & 1 \\
3 + 3\iota & 2\iota & 2\iota
& 7 + 3\iota & 2\iota & 2\iota \\
3 + 4\iota & 1 & 1
& 7 + 4\iota & 1 & 1 \\
3 + 5\iota & 6\iota & 2\iota
& 7 + 5\iota & 6\iota & 2\iota \\
3 + 6\iota & 5 + 4\iota & 1
& 7 + 6\iota & 5 + 4\iota & 1 \\
3 + 7\iota & 2\iota & 2\iota
& 7 + 7\iota & 2\iota & 2\iota \\
\bottomrule
\end{longtblr}
\endgroup
\end{document}
第一个例子,其中表占据三页:
第二个示例,其中表仅占用一页:
答案2
除了遵循@PeterGrill的建议加载大批包,您可能需要考虑一下如何让其longtable
更具视觉吸引力。重要的是,没有必要(甚至不建议)\hline
在每一行后绘制一条水平线(通过指令)。相反,只需省略所有这些行,并在每八行后插入一点空白(通过\addlinespace
指令,由书签包裹。
以下屏幕截图显示了结果表的前 12 行。
\documentclass[a4paper,12pt]{article}
\usepackage{longtable}
% new:
\usepackage{array}
\usepackage{booktabs} % for well-spaced horizontal rules
\newcolumntype{L}{>{$}l<{$}} % left-aligned, automatic math mode
\begin{document}
\begin{longtable}{@{} LLL @{}}
% headers and footers
\toprule
a & a^2\bmod{8} & a^2\bmod{4} \\ % "\bmod" for tigher spacing
\midrule
\endhead
\bottomrule
\endfoot
% body of table
0 & 0&0 \\
\iota & 7&3 \\
2\iota & 4&0 \\
3\iota & 7&3 \\
4\iota & 0&0 \\
5\iota & 7&3 \\
6\iota & 4&0 \\
7\iota & 7&3 \\ \addlinespace
1 & 1&1 \\
1 + \iota & 2\iota&2\iota \\
1 + 2\iota & 5 + 4\iota&1 \\
1 + 3\iota & 6\iota&2\iota \\
1 + 4\iota & 1&1 \\
1 + 5\iota & 2\iota&2\iota \\
1 + 6\iota & 5 + 4\iota&1 \\
1 + 7\iota & 6\iota&2\iota \\ \addlinespace
2 & 4&0 \\
2 + \iota & 3 + 4\iota&3 \\
2 + 2\iota & 0&0 \\
2 + 3\iota & 3 + 4\iota&3 \\
2 + 4\iota & 4&0 \\
2 + 5\iota & 3 + 4\iota&3 \\
2 + 6\iota & 0&0 \\
2 + 7\iota & 3 + 4\iota&3 \\ \addlinespace
3 & 1&1 \\
3 + \iota & 6\iota&2\iota \\
3 + 2\iota & 5 + 4\iota&1 \\
3 + 3\iota & 2\iota&2\iota \\
3 + 4\iota & 1&1 \\
3 + 5\iota & 6\iota&2\iota \\
3 + 6\iota & 5 + 4\iota&1 \\
3 + 7\iota & 2\iota&2\iota \\ \addlinespace
4 & 0&0 \\
4 + \iota & 7&3 \\
4 + 2\iota & 4&0 \\
4 + 3\iota & 7&3 \\
4 + 4\iota & 0&0 \\
4 + 5\iota & 7&3 \\
4 + 6\iota & 4&0 \\
4 + 7\iota & 7&3 \\ \addlinespace
5 & 1&1 \\
5 + \iota & 2\iota&2\iota \\
5 + 2\iota & 5 + 4\iota&1 \\
5 + 3\iota & 6\iota&2\iota \\
5 + 4\iota & 1&1 \\
5 + 5\iota & 2\iota&2\iota \\
5 + 6\iota & 5 + 4\iota&1 \\
5 + 7\iota & 6\iota&2\iota \\ \addlinespace
6 & 4&0 \\
6 + \iota & 3 + 4\iota&3 \\
6 + 2\iota & 0&0 \\
6 + 3\iota & 3 + 4\iota&3 \\
6 + 4\iota & 4&0 \\
6 + 5\iota & 3 + 4\iota&3 \\
6 + 6\iota & 0&0 \\
6 + 7\iota & 3 + 4\iota&3 \\ \addlinespace
7 & 1&1 \\
7 + \iota & 6\iota&2\iota \\
7 + 2\iota & 5 + 4\iota&1 \\
7 + 3\iota & 2\iota&2\iota \\
7 + 4\iota & 1&1 \\
7 + 5\iota & 6\iota&2\iota \\
7 + 6\iota & 5 + 4\iota&1 \\
7 + 7\iota & 2\iota&2\iota \\
\end{longtable}
\end{document}
答案3
我可以对表格提出一项改进吗?我个人不喜欢每列的左对齐。我建议将列相对于标题居中,但将每个单元格的内容相对于其他单元格左对齐或右对齐。然而,这会增加一些代码,但从视觉上改善了表格的呈现效果。
下面的代码通过以下方式在单元格中创建内部框\eqmakebox
(等式包)。优点是框在同一列中共享相同的宽度,使单元格与最长的表达式一样宽。框相对于标题居中,但其内容仍然可以左对齐、中间对齐或右对齐——请参阅确定内部左对齐的行\eqmakebox[col1][l]{...}
。l
为了以这种方式格式化单元格,我通过\collectcell...\endcollectcell
(胶原细胞包裹)。
我还定义了一个自定义运算符,\opmod
因为\pmod
它似乎创建了太多额外的空间,这对于标题来说并不理想。
以下是完整代码
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath}
\usepackage{array}
\usepackage{longtable}
\usepackage{booktabs} % improved rules
\usepackage{eqparbox} % boxes in cells with inner alignments
\usepackage{collcell} % run macros inside cells
\NewDocumentCommand\opmod{sm}{%
\ensuremath{\IfBooleanF{#1}{\;}(\operatorname{mod}#2)}}
% The following block requires two packages: eqparbox and collcell
\newcommand\colleft[1]{\eqmakebox[col1][l]{$#1$}}
\newcommand\colmid[1]{\eqmakebox[col2][r]{$#1$}}
\newcommand\colright[1]{\eqmakebox[col3][r]{$#1$}}
\newcolumntype{L}{>{\collectcell\colleft}c<{\endcollectcell}}
\newcolumntype{M}{>{\collectcell\colmid}c<{\endcollectcell}}
\newcolumntype{R}{>{\collectcell\colright}c<{\endcollectcell}}
\begin{document}
\begin{longtable}{L @{\hspace{12pt}} M R}
\toprule
\multicolumn{1}{l}{$a$}
& \multicolumn{1}{c}{$a^2\opmod{4}$}
& \multicolumn{1}{c}{$a^2\opmod{8}$} \\
\midrule\endhead
\bottomrule\endfoot
0 & 0 & 0 \\
\iota & 7 & 3 \\
2\iota & 4 & 0 \\
3\iota & 7 & 3 \\
4\iota & 0 & 0 \\
5\iota & 7 & 3 \\
6\iota & 4 & 0 \\
7\iota & 7 & 3 \\
1 & 1 & 1 \\
1 + \iota & 2\iota & 2\iota \\
1 + 2\iota & 5 + 4\iota & 1 \\
1 + 3\iota & 6\iota & 2\iota \\
1 + 4\iota & 1 & 1 \\
1 + 5\iota & 2\iota & 2\iota \\
1 + 6\iota & 5 + 4\iota & 1 \\
1 + 7\iota & 6\iota & 2\iota \\
2 & 4 & 0 \\
2 + \iota & 3 + 4\iota & 3 \\
2 + 2\iota & 0 & 0 \\
2 + 3\iota & 3 + 4\iota & 3 \\
2 + 4\iota & 4 & 0 \\
2 + 5\iota & 3 + 4\iota & 3 \\
2 + 6\iota & 0 & 0 \\
2 + 7\iota & 3 + 4\iota & 3 \\
3 & 1 & 1 \\
3 + \iota & 6\iota & 2\iota \\
3 + 2\iota & 5 + 4\iota & 1 \\
3 + 3\iota & 2\iota & 2\iota \\
3 + 4\iota & 1 & 1 \\
3 + 5\iota & 6\iota & 2\iota \\
3 + 6\iota & 5 + 4\iota & 1 \\
3 + 7\iota & 2\iota & 2\iota \\
4 & 0 & 0 \\
4 + \iota & 7 & 3 \\
4 + 2\iota & 4 & 0 \\
4 + 3\iota & 7 & 3 \\
4 + 4\iota & 0 & 0 \\
4 + 5\iota & 7 & 3 \\
4 + 6\iota & 4 & 0 \\
4 + 7\iota & 7 & 3 \\
5 & 1 & 1 \\
5 + \iota & 2\iota & 2\iota \\
5 + 2\iota & 5 + 4\iota & 1 \\
5 + 3\iota & 6\iota & 2\iota \\
5 + 4\iota & 1 & 1 \\
5 + 5\iota & 2\iota & 2\iota \\
5 + 6\iota & 5 + 4\iota & 1 \\
5 + 7\iota & 6\iota & 2\iota \\
6 & 4 & 0 \\
6 + \iota & 3 + 4\iota & 3 \\
6 + 2\iota & 0 & 0 \\
6 + 3\iota & 3 + 4\iota & 3 \\
6 + 4\iota & 4 & 0 \\
6 + 5\iota & 3 + 4\iota & 3 \\
6 + 6\iota & 0 & 0 \\
6 + 7\iota & 3 + 4\iota & 3 \\
7 & 1 & 1 \\
7 + \iota & 6\iota & 2\iota \\
7 + 2\iota & 5 + 4\iota & 1 \\
7 + 3\iota & 2\iota & 2\iota \\
7 + 4\iota & 1 & 1 \\
7 + 5\iota & 6\iota & 2\iota \\
7 + 6\iota & 5 + 4\iota & 1 \\
7 + 7\iota & 2\iota & 2\iota \\
\end{longtable}
\end{document}
以及屏幕截图