Seriendruck mit LaTeX oder externer Script-Lösung?

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


MoonKid
Forum-Meister
Forum-Meister
Beiträge: 689
Registriert: Sa 30. Jun 2012, 11:56

Seriendruck mit LaTeX oder externer Script-Lösung?

Beitrag von MoonKid »

Ich kämpfe derzeit (projektteam-gezwungen) mit MS Office hinsichtlich Seriendruck von Fragebögen und auch Briefen. Beim nächsten Mal wird es wieder *TeX! :D

Ein Szenario sind Fragebögen auf dennen (für jeden Probanden) unterschiedliche Nummern (z. B. in der Fußzeile) gedruckt werden. Das erinnert mich an die Serienbrief-Funktion von KOMA-Script, wo man mit einer externen adress-Datei arbeitet und frei Felder definieren kann. Das ist aber eben auf Briefe gemünzt.

Gibt es eine ähnliche *TeX-Lösung auch für Nicht-Brief Dokumente?

Pseudocode-Beispiel
\documentclass{...}
\datasource{meine-ids.dat}
\begin{document}
\field{ID}
\end{document}
Oder ist es einfacher bzw. flexibler sich den *TeX code mit einem eigenen Script (z. B. Python) zusammenzustöpseln? Dann hätte man am Ende ein sehr großes tex-Dokument aus dem viele 1000 PDF-Seiten generiert würden.
XeLaTeX, TeX Live, vim-latexsuite

Gast

Beitrag von Gast »

Das kommt auch den konkreten Zweck an. Aber das Prinzip der Serienbriefe bei scrlttr2, den Brief als Anweisung zu definieren und dann diese Anweisung mit unterschiedlichen Parametern immer wieder aufzurufen, ist natürlich auch auf andere Dokumente übertragbar. Man kann die Daten auch aus einer Datenbank ziehen bzw. eine dafür anlegen. Siehe dazu [d]datatool[/d].

MoonKid
Forum-Meister
Forum-Meister
Beiträge: 689
Registriert: Sa 30. Jun 2012, 11:56

Beitrag von MoonKid »

Anonymous hat geschrieben:Aber das Prinzip der Serienbriefe bei scrlttr2, den Brief als Anweisung zu definieren und dann diese Anweisung mit unterschiedlichen Parametern immer wieder aufzurufen, ist natürlich auch auf andere Dokumente übertragbar.
Das erfordert wahrscheinlich TeX-Kenntnisse? Da müsste ich passen. ;)

[d]datatool[/d] sieht für meine Zwecke sinnvoll aus.

Gibt es etwas gegen die Lösung einzuwenden, mit einem Python script basierend auf einer Datenbank/CSV sich den TeX code selbst zusammenzustöpseln? Es wäre mit XeLaTeX. Gibt es dann irgendwelche Memory Grenzen? Sagen wir mal 1000 Datensätze die jeweils 6 Seiten generieren würden - also ein 6000 Seiten PDF am Ende rauskommt.
XeLaTeX, TeX Live, vim-latexsuite

Gast

Beitrag von Gast »

MoonKid hat geschrieben:Das erfordert wahrscheinlich TeX-Kenntnisse?
Nein, nur LaTeX und das solltest du nach 6 Jahren langsam können oder dringend mal lernen. Außerdem ist das streng genommen im Serienbriefabschnitt in der KOMA-Script-Anleitung erklärt.
MoonKid hat geschrieben:Gibt es etwas gegen die Lösung einzuwenden, mit einem Python script basierend auf einer Datenbank/CSV sich den TeX code selbst zusammenzustöpseln?
Solange du im stillen Kämmerchen etwas zusammenrührst, geht uns das ohnehin nichts an. Also hat dann auch niemand etwas einzuwenden. Wenn es (beispielsweise aufgrund von Fragen in Foren) in die Öffentlichkeit gezerrt wird, sollte es allerdings nicht allzu zusammengestöpselt, sondern ordentlich entworfen und implementiert sein. Das ist dann allerdings auch keine Frage für dieses Forum mehr. Für Python suchst du dir bitte ein passendes Forum.

MoonKid
Forum-Meister
Forum-Meister
Beiträge: 689
Registriert: Sa 30. Jun 2012, 11:56

Beitrag von MoonKid »

Anonymous hat geschrieben:
MoonKid hat geschrieben:Das erfordert wahrscheinlich TeX-Kenntnisse?
Nein, nur LaTeX und das solltest du nach 6 Jahren langsam können
Es ist mir neu das man mit LaTeX oder XeTeX Schleifen "programmieren" könnte. Aber ok, wenn du meinst, weiß ich ja wonach ich suchen muss.
Anonymous hat geschrieben:
MoonKid hat geschrieben:Gibt es etwas gegen die Lösung einzuwenden, mit einem Python script...
(snipped)
Da habe ich mich wahrscheinlich unklar ausgedrückt. Meine Frage bezog sich nicht auf Python, sondern darauf, ob so etwas (mehrere tausend Seiten) zu einem Speicherproblem für *TeX werden könnte. Da gibt es ja irgendwelche Grenzen bei den Registern.
XeLaTeX, TeX Live, vim-latexsuite

Gast

Beitrag von Gast »

Was hat die Anzahl der Seiten damit zu tun, wieviele Register und wieviel Speicher benötigt wird? Sobald eine Seite ausgegeben ist, belegt sie i. A. keinen Speicher mehr. Probier es einfach aus:
\documentclass{article}
\usepackage{etoolbox}
\usepackage{mwe}

\begin{document}
\tableofcontents
\whileboolexpr{ test {\ifnumcomp{\value{page}}{<}{10000}} } {%
  \Blinddocument
}

\end{document}
Aber nicht wundern: Das ganze dauert vielleicht zwei, drei Minuten. Auf Overleaf sollte man das nicht unbedingt ausprobieren.
MoonKid hat geschrieben:Es ist mir neu das man mit LaTeX oder XeTeX Schleifen "programmieren" könnte.
Ich sag doch: Es wird Zeit, dass Du LaTeX lernst. Besorg Dir mal eine gutes Buch, das nicht bei den Standardklassen aufhört. Im übrigen arbeiten die Serienbriefe von KOMA-Script gar nicht mit einer Schleife. Das wurde eigentlich oben auch schon erwähnt. Auf der anderen Seite habe ich gerade gezeigt, dass es Schleifen gibt. datatool arbeitet bietet ebenfalls eine Art Schleife: Iteration über alle Datenbankeinträge. Weiterer Tipp: Anleitungen lesen!

BTW: Die Registerbegrenzung trifft bei XeLaTeX und PDFLaTeX nur noch auf wenige Dinge zu, beispielsweise File-Handles. Ansonsten basieren beide auf [d]e-TeX[/d], das die meisten Beschränkungen aufhebt. Und natürlich kann man gerne auch LuaLaTeX verwenden. Da sind all diese Beschränkungen aufgehoben, weil es nicht mehr mit statischen Arrays arbeitet. Außerdem kann man auf Lua-Ebene alles machen, was eine prozedurale Programmiersprache so hergibt. Man muss ja nicht unbedingt auf 1987 stehen bleiben (wobei es Schleifen mit LaTeX damals auch schon gab).

Antworten