我有以下文件:
\documentclass[a4paper,10pt]{article}
\usepackage{pgfplotstable, booktabs}
\pgfplotsset{compat=1.14}
\pagenumbering{gobble}
\begin{document}
\begin{center}
\pgfplotstabletypeset [
col sep = comma,
every head row/.style={before row=\toprule, after row=\midrule},
every last row/.style={after row=\bottomrule},
display columns/0/.style={string type}
]{csv1.csv}
\end{center}
\end{document}
它使用单独的文件 csv1.csv 作为输入来生成表格:
Name,Number
Daniel,1
Mary,2
Sarah,3
假设我有数百个 CSV 文件,我想为每个文件编译一个 PDF。我唯一需要更改的是文档中的csv1.csv
。
答案1
假设您的.tex
文件名为mytable.tex
,并且如下所示:
\ifdefined\mycsvfile
\else
\def\mycsvfile{csv1.csv}
\fi
\documentclass[a4paper,10pt]{article}
\usepackage{pgfplotstable, booktabs}
\begin{document}
\begin{center}
\pgfplotstabletypeset [
col sep = comma,
every head row/.style={before row=\toprule, after row=\midrule},
every last row/.style={after row=\bottomrule},
display columns/0/.style={string type}
]{\mycsvfile}
\end{center}
\end{document}
那么您可以使用以下(Windows)批处理文件,bulkpdfs.bat
echo off
echo "batch compiling pdf files"
for %%f in (*.csv) do (
echo compiling %%f ...
pdflatex \def\mycsvfile{%%f}\input{mytable.tex} & copy mytable.pdf mytable%%~nf.pdf
)
pause
这将产生mytablecsv1.pdf
,,mytablecsv2.pdf
...
如需参考,请参阅一个.TEX 文件有两个pdf版本吗?
答案2
不确定上面的代码是一个简短的示例还是实际的文档(从您的措辞来看,我认为它是实际的)。
如果您有多个csv
文件(对于此解决方案,必须使用 格式命名csv#.csv
,其中#
为数字),并且如果所有表格都适合一页而没有任何特殊问题,那么您可以使用循环将它们排版到每页。此答案显示了一个示例,但当然,实际应用可能会因表格的大小而异。
输出(单页)
1 2
代码
\documentclass[a4paper,10pt]{article}
\usepackage{pgfplotstable, booktabs}
\usepackage{filecontents}% just for this example
\usepackage{geometry}
\pgfplotsset{compat=1.13}
\pagenumbering{gobble}
% These two are just for this example. You should have external files anyway.
\begin{filecontents*}{csv1.csv}
Name,Number
Daniel,1
Mary,2
Sarah,3
\end{filecontents*}
\begin{filecontents*}{csv2.csv}
Name,Number
Jack,24
John,5
Matthew,32
\end{filecontents*}
%%%
\begin{document}
\foreach \x in {1,2}{% <-- if you have many csv, you can say e.g. {1,...,45}
\pgfplotstabletypeset [
col sep = comma,
every head row/.style={before row=\toprule, after row=\midrule},
every last row/.style={after row=\bottomrule},
display columns/0/.style={string type}
]{csv\x.csv}%
\newpage
}%
\end{document}
答案3
这里有一种操作方法:
\documentclass[a4paper,10pt]{article}
\usepackage{pgfplotstable, booktabs}
\pgfplotsset{compat=1.14}
\pagenumbering{gobble}
% Create your own command
\newcommand\MyTable[1]{\pgfplotstabletypeset[
col sep = comma,
every head row/.style={before row=\toprule, after row=\midrule},
every last row/.style={after row=\bottomrule},
display columns/0/.style={string type}
]{#1.csv}\newpage
}
\begin{document}
\begin{center}
\MyTable{csv1}
\MyTable{csv2}
\end{center}
\end{document}