考虑下面的 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}