包含所有数学列的长表

包含所有数学列的长表

我有一张包含所有数学内容的长表。我对规范有疑问。我从答案中复制了数学列的规范这里并重复三次。

但是,我得到了“数组参数中的非法字符”错误。这是 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}

以及屏幕截图

在此处输入图片描述

相关内容