PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "Serien-PDFs" bzw. mehrere (serien-)outputs aus einer tex



stefan_sch
10-08-2009, 12:33
Hallo!

Ich habe eine Frage, auf die ich bisher keine vernünftige Antwort gefunden habe... und zwar:

Ist es möglich mit LaTeX Serienbriefe zu erstellen, die jeweils nicht in ein Dokument ausgegeben werden, sondern "einzeln"?

Also folgendes Szenario: Rückmeldungen an Studierende. "Brief" mit LaTeX erzeugen - was sehr gut funktioniert. Dann aber die Rückmeldungen in einzelne PDFs aufteilen, die gleichzeitig nach der Matrikelnummer des/der Studierenden benannt sind.

Soweit ich das überblicke wären Lösungen dafür, die Dateien "extern" über z.B. Perl oder PHP zu generieren. Vielleicht ginge auch sowas wie Lesezeichen zu setzen und das Gesamt-PDF zu splitten, und diese dann wieder nach dem Lesezeichen der Seite zu benennen.

Mich würde interessieren ob es eine "interne" lösung gibt.


Vielen Dank schonmal!

stefan_sch
11-08-2009, 19:27
hmm... niemand? dürfte doch eigentlich nicht soo selten sein, das problem?

mechanicus
11-08-2009, 19:50
Hallo,

so richtig verstehe ich dein Problem nicht. Ist es dir Möglich, ein Minimalbeispiel zu erstellen?

Gruß
Marco

hakaze
11-08-2009, 20:36
Mmh.. ich verstehe dein Problem auch nicht so ganz .
;-) Warum willst erst ein pdf aller Briefe machen und es dann splitten?

Schau dir ansonsten mal die Briefklasse von KOMA-Script (http://www.ctan.org/tex-archive/help/Catalogue/entries/koma-script.html) an! V.a. in Verbindung mit dem "scraddr"-Paket, das auch Bestandteil von KOMA-Script ist.

Ich denke, das geht eher in Richtung deiner Anforderungen.

EDIT: Möglicherweise wäre auch adrconv (http://www.ctan.org/tex-archive/help/Catalogue/entries/adrconv.html) dafür geeignet.

stefan_sch
11-08-2009, 21:08
ich verstehe, muss mich ein wenig verständlicher machen.

minimalbeispiel wäre in etwa:

\documentclass{scrartcl}

\usepackage{csvtools}

\begin{document}

\applyCSVfile{scores.csv}{

\newpage

Ihre Nummer ist \insertID. Sie haben einen Wert von \insertScore erreicht.

}

\end{document}


---


wenn die scores.csv etwa so aussieht

123, 50
456, 60
789, 70

bekommt man ein PDF mit 3 Seiten, die jeweils etwa so aussehen:

Ihre Nummer ist 123. Sie haben einen Wert von 50 erreicht.

Ihre Nummer ist 456. Sie haben einen Wert von 60 erreicht.

Ihre Nummer ist 789. Sie haben einen Wert von 70 erreicht.


was ich "will" sind aber 3 PDFs mit je einer seite, die nicht den namen des projekts haben sondern (nach diesem bsp.) 123.pdf, 456.pdf, 789.pdf

Ist das verständlicher?

das ganze sind auswertungen für mehrere tausend studenten... deswegen sind "serienbriefe" nicht mehr ganz up-to-date. ;)

hakaze
12-08-2009, 08:44
Also in dem Fall würde ich extern Perl nutzen, um aus dem CVS-Datensatz schon fertig durchnummerierte tex-Files zu erstellen, und die dann in einem Staplelauf zu PDFs zu setzen.

u_fischer
12-08-2009, 08:59
Also in c.t.t. hat vor einigen Monaten Ulrich Diez vorgeschlagen, für sowas vom Dokument aus weitere pdflatex-Läufe zu starten mit neuem --jobname (per write18, dh. du musst pdflatex mit --enable-write18 oder wie auch immer es bei dir heißt, starten).

Dabei hat er folgendes Beispiel geschickt:



\documentclass{article}

\ifx\conditionmacro\undefined
\immediate\write18{%
pdfLaTeX --jobname="\jobname1"
\gdef\string\conditionmacro{1}\string\input\space\ jobname
}%
\immediate\write18{%
pdfLaTeX --jobname="\jobname2"
\gdef\string\conditionmacro{2}\string\input\space\ jobname
}%
\immediate\write18{%
pdfLaTeX --jobname="\jobname3"
\gdef\string\conditionmacro{3}\string\input\space\ jobname
}%
\expandafter\stop
\fi

\begin{document}
\ifnum\conditionmacro=1 Condition is 1\fi
\ifnum\conditionmacro=2 Condition is 2\fi
\ifnum\conditionmacro=3 Condition is 3\fi

\verb|\conditionmacro| is \texttt{\meaning\conditionmacro}.
\end{document}

Ich habe es aber nicht getestet.

stefan_sch
12-08-2009, 09:43
Vielen Dank euch beiden, hat mir schon sehr geholfen!

Mir scheint spontan in anbetracht der Masse die perl-lösung unkomplizierter. Fände aber eine "interne" lösung schöner... ich werd' mal etwas rumtüfteln! :)