如何创建模板 longtable/datatool 代码?

如何创建模板 longtable/datatool 代码?

考虑下面的 MWE(TexLive '15,pdflatex)。我有多个数据文件需要显示在不同的表中。目前我已经多次复制了像 MWE 这样的表代码。

问题 1:但是,什么是最好的(副作用最小的)方法所以我可以写(这里我们传递文件名、标题、标签):

\createMyTable(dbset1,'data1.csv',The Caption,The caption (continued),tab:thelabel1)

问题2:现在更高级了。假设我现在有一个具有不同结构的文件(下面 MWE 中的 data3.csv 有 2 列),是否可以参数化这些列(例如Latex 代码作为字符串,即时解释)、分配和输出?那么:

\createMyTable(dbset1,'data3.csv',p{1cm}p{1cm},\textbf{Col1}&\textbf{Col2},"Col1=col1,Col2=col2","\Col1&\Col2", Caption,The caption (continued),tab:thelabel1)

梅威瑟:

\begin{filecontents}{data1.csv}
col1
1
2
\end{filecontents}
\begin{filecontents}{data2.csv}
col1
3
4
\end{filecontents}
\begin{filecontents}{data3.csv}
col1,col2
5,6
7,8
\end{filecontents}

\documentclass{article}
\usepackage{datatool}
\usepackage{geometry}
\usepackage{afterpage}
\usepackage{longtable}
\usepackage{lscape}
\usepackage{setspace}
\usepackage{booktabs}
\begin{document}

% START FUNCTION createMyTable(dbset1,'data1.csv',The Caption,The caption (continued),tab:thelabel1)

\DTLloaddb{dbset1}{data1.csv}

\afterpage{%
        \newgeometry{twoside=false,vmargin={1cm,1cm},hmargin={1cm,3cm}}
    \begin{landscape}% Landscape page
        \pagestyle{empty}
        \centering % Center table
        \vspace{0pt}
        \begin{singlespacing}
\begin{longtable}[c]{p{1cm}}
 \caption{The Caption}
 \label{tab:thelabel}\tabularnewline
 \textbf{Col1}\tabularnewline
 \midrule
 \endfirsthead
 \caption{The Caption (Continued)}\tabularnewline
  \textbf{Col1}\tabularnewline
 \midrule
 \endhead
 \bottomrule
 \multicolumn{1}{r}{\emph{Continued on next page...}}
 \endfoot
 \bottomrule
 \endlastfoot
 \DTLforeach*{dbset1}{\TheCol=col1}%
 {\DTLiffirstrow{}{\\}\TheCol}%
\end{longtable}
    \end{singlespacing}
    \end{landscape}
    \clearpage
}
\restoregeometry

% END FUNCTION

\end{document}

相关内容