表格由 25 行组成

表格由 25 行组成

我需要将一些数据导入到 LaTeX 文档形式的 CSV 文件中,使用许多网站所建议的datatool包。

但我会将这些数据分成多个表,方式如下:

Table #1
========
row1
row2
row3
...
row25


(New Page)

Table #2
=========
row26
row27
...
row50

(New Page)
Table #3
=========
row51
....
row75

等等...

编辑:感谢 Werner 提供的解决方案。但我在表格标题方面遇到了一些困难。这是我的代码:

    \documentclass{article}

    \usepackage[paperwidth=20em]{geometry}% Just for this example

    \usepackage{datatool}

    \usepackage{filecontents}
    \begin{filecontents*}{data.csv}
    rowID
    row1   ,1           
    row2   ,1
    row3    ,1
    row4,1
    row5,1
    row6,1
    row7,1
    row8,1
    row9,1
    row10,1

    \end{filecontents*}
    \newcounter{rowmax}
    \newcommand{\nextrow}{\stepcounter{rowmax}}
    \newcommand{\restartrow}{\setcounter{rowmax}{0}}

    \begin{document}

    \DTLloaddb{mytable}{data.csv}

    \begin{tabular}{cc}
      \textbf{RowID} & \textbf{N} \\
      \DTLforeach{mytable}{\rowID=rowID}{%
        \ifnum\value{rowmax}=5
          \restartrow
          \end{tabular}
          \newpage
          \begin{tabular}{cc}
          \textbf{RowID} & \textbf{N} \\
        \fi
        \\% Start a new row
        \rowID & 1
      \nextrow
      }
    \end{tabular}

    \end{document}

这是错误信息:

! Incomplete \ifnum; all text was ignored after line 43.
<inserted text>
                \fi
l.43   }

答案1

这是一个使用选项datatool\DTLforeach

在此处输入图片描述

\documentclass{article}

\usepackage[paperwidth=20em]{geometry}% Just for this example

\usepackage{datatool}

\usepackage{filecontents}
\begin{filecontents*}{data.csv}
rowID
row1
row2
row3
row4
row5
row6
row7
row8
row9
row10
row11
row12
row13
row14
row15
row16
row17
row18
row19
row20
row21
row22
row23
row24
row25
row26
row27
row28
row29
row30
row31
row32
row33
row34
row35
row36
row37
row38
row39
row40
row41
row42
row43
row44
row45
row46
row47
row48
row49
row50
row51
row52
row53
row54
row55
row56
row57
row58
row59
row60
row61
row62
row63
row64
row65
row66
row67
row68
row69
row70
row71
row72
row73
row74
row75
row76
row77
row78
row79
row80
row81
row82
row83
row84
row85
row86
row87
row88
row89
row90
row91
row92
row93
row94
row95
row96
row97
row98
row99
\end{filecontents*}
\newcounter{rowmax}
\newcommand{\nextrow}{\stepcounter{rowmax}}
\newcommand{\restartrow}{\setcounter{rowmax}{0}}

\begin{document}

\DTLloaddb{mytable}{data.csv}

\begin{tabular}{c}
  \textbf{RowID}
  \DTLforeach{mytable}{\rowID=rowID}{%
    \ifnum\value{rowmax}=25
      \restartrow
      \end{tabular}
      \newpage
      \begin{tabular}{c}
      \textbf{RowID}
    \fi
    \\% Start a new row
    \rowID\nextrow
  }
\end{tabular}

\end{document}

如果您希望以这种方式分布多个列tabular,则列之间可能会出现一些分组问题。以下是解决该问题的一种方法:

在此处输入图片描述

\documentclass{article}

\usepackage[paperwidth=20em]{geometry}% Just for this example

\usepackage{datatool}

\usepackage{filecontents}
\begin{filecontents*}{data.csv}
rowID,otherID
row1   ,1
row2   ,2
row3    ,3
row4,1
row5,2
row6,3
row7,1
row8,2
row9,3
row10,1
\end{filecontents*}

\newcounter{rowmax}
\newcommand{\nextrow}{\stepcounter{rowmax}}
\newcommand{\restartrow}{\setcounter{rowmax}{0}}
\newcommand{\newpagenewtabular}{%
  \restartrow
  \end{tabular}
  \newpage
  \begin{tabular}{cc}
  \textbf{RowID} & \textbf{N}
}

\begin{document}

\DTLloaddb{mytable}{data.csv}

\begin{tabular}{cc}
  \textbf{RowID} & \textbf{N}
  \DTLforeach{mytable}{\rowID=rowID,\otherID=otherID}{%
    \ifnum\value{rowmax}=5
      \expandafter\newpagenewtabular
    \fi
    \\% Start a new row
    \nextrow\rowID & \otherID%
  }
\end{tabular}

\end{document}

第二种(多列)方法背后的主要思想是将 -and-tabular中断存储\newpage在宏中并完成\if...\fi结构第一的使用\expandafter\newpagenewtabular

相关内容