Aufbauend auf dieser Frage: Öffne in Overleaf
\documentclass[12pt,parskip=true]{scrartcl} \usepackage{filecontents} \begin{filecontents*}{test.csv} Name,Vorname,Matrikelnummer Mustermann,Max,12345 Musterfrau,Margit,23456 \end{filecontents*} \usepackage[ngerman]{babel} \usepackage[utf8]{inputenc} \usepackage{datatool} \DTLsetseparator{,} \DTLloaddb{namelist}{test.csv} \begin{document} \DTLforeach*{namelist}{ \Name=Name,% \Vorname=Vorname,% \Matrikelnummer=Matrikelnummer% }{ \begin{center} \Large\bfseries\Matrikelnummer \par \bigskip \Name, \Vorname \end{center} \clearpage } \end{document} Ist es möglich, statt eines großen Dokuments jeden Durchlauf als eigenes PDF zu erhalten? Das würde den Druck deutlich erleichtern. Und wäre es dann auch möglich, für jeden Durchlauf eine tex-Datei zu bekommen? gefragt 12 Nov '17, 10:33 Hirshy |
Das parallele Schreiben einer Skriptdatei zum nachträglichen Zerlegen des Gesamt-PDFs, das saputello in seinem Kommentar skizziert, könnte für das Beispiel aus der Frage so aussehen: Öffne in Overleaf
\documentclass[12pt,parskip=true]{scrartcl} \usepackage{filecontents} \begin{filecontents*}{test.csv} Name,Vorname,Matrikelnummer Mustermann,Max,12345 Musterfrau,Margit,23456 \end{filecontents*} \newwrite\scriptfile \makeatletter \AtBeginDocument{% \immediate\openout\scriptfile \jobname.sh % oder \jobname.bat \protected@write\scriptfile{}{\string#!/bin/sh}% bei \jobname.bat weglassen! \stepcounter{abspage} } \AfterReadingMainAux{% \immediate\closeout\scriptfile } \newcounter{abspage} \usepackage[ngerman]{babel} \usepackage[utf8]{inputenc} \usepackage{datatool} \DTLsetseparator{,} \DTLloaddb{namelist}{test.csv} \begin{document} \DTLforeach*{namelist}{ \Name=Name,% \Vorname=Vorname,% \Matrikelnummer=Matrikelnummer% }{ \clearpage \setcounter{page}{1}% \begin{center} \Large\bfseries\Matrikelnummer \par \bigskip \Name, \Vorname \end{center} \csname protected@write\endcsname\scriptfile{}{pdftk \jobname.pdf cat \theabspage-\the\numexpr\value{abspage}+\value{page}-1\relax\space output \jobname-\Matrikelnummer.pdf verbose} \addtocounter{abspage}{\value{page}}% \clearpage } \end{document} Nach dem Windows-Anwender, die lieber eine batch-Datei haben wollen, lassen die Erstellung der Zeile beantwortet 12 Nov '17, 11:51 gast3 |
TeX kann bei jedem TeX-Lauf nur eine Ausgabedatei erzeugen. Um also mehrere PDF-Dateien zu erzeugen, braucht man zwingend mehrere LaTeX-Läufe. Natürlich könntest Du bei jedem Durchlauf statt die Daten direkt zu setzen, eine neue TeX-Datei erzeugen und per shell escape dafür dann einen eigenen LaTeX-Lauf durchführen. Schneller dürfte aber sein, nur eine neue Seite zu beginnen und parallel eine Skriptdatei zu erzeugen, die anschließend die Gesamt-PDF-Datei beispielsweise mit
pdftk
zerlegt.Ok, also erzeugt man mit Datatool ein großes PDF und kann es anschließend zerlegen. Für die andere Sache mit den tex-Files erstelle ich dann besser eine neue Frage, das war ein Einfall der mir eben spontan gekommen ist und eigentlich auf etwas anderes abzielt.