Erzeugen von zwei PDFs aus einer tex-Datei

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


Tassadar
Forum-Anfänger
Forum-Anfänger
Beiträge: 29
Registriert: Mi 6. Sep 2017, 00:25

Erzeugen von zwei PDFs aus einer tex-Datei

Beitrag von Tassadar »

Hallo alle zusammen,

ich habe vor kurzem mein komacv-Lebenslauf so umgeschrieben, dass ich ihn entweder in Deutsch oder in Englisch kompilieren kann. Konkret verwende ich ein if-Statement und an den entsprechenden Stellen \if \else \fi Abfragen um entweder den Deutschen oder den Englischen Inhalt einzufügen.

Gibt es irgendeine Möglichkeit das Ganze so zu erweitern oder umzuschreiben, dass wenn die Datei kompiliert wird, zwei PDFs erzeugt werden? Einmal mit dem if-Statement true und einmal false? Sodass beim Kompilieren automatisch die Deutsche und die Englische Version erzeugt werden ohne, dass ich im Code das Statement verändern und zweimal kompilieren muss?

Vielen Dank im Voraus!


gast

Re: Erzeugen von zwei PDFs aus einer tex-Datei

Beitrag von gast »

Einfach zwei tex-Dateien daraus machen und in beiden den Schalter unterschiedlich stellen.

Eine einzelner tex-Lauf kann nie zwei PDFs erzeugen. Man kann natürlich mit shell-escape aus einem tex-Dokument zwei erzeugen und für jedes einen LaTeX-Lauf starten. Das geht aber auch einfach mit einem Skript, das zwei LaTeX-Läufe startet. Man könnte auch in einem PDF beide Sprachversionen hintereinander erzeugen. Das kann man dann ggf. nachträglich zerteilen. Aber bringt auch nicht mehr, als zwei LaTeX-Läufe.


Tassadar
Forum-Anfänger
Forum-Anfänger
Beiträge: 29
Registriert: Mi 6. Sep 2017, 00:25

Re: Erzeugen von zwei PDFs aus einer tex-Datei

Beitrag von Tassadar »

Vielen Dank für die Antwort!

Die Motivation hinter meinem Ganzen vorgehen ist ja gerade, dass ich nicht zwei separate tex-files habe die ich parallel bei Bedarf aktualisieren muss. Dann würde ich eher das jetzige Vorgehen bevorzugen, dass ich ein tex-file habe und den switch zwischen den Kompilationen ändere.

Du hast eine Möglichkeit mit shell-escape angesprochen. Könntest du da vielleicht drauf eingehen oder ein kleines Beispiel geben?


gast

Re: Erzeugen von zwei PDFs aus einer tex-Datei

Beitrag von gast »

Eigentlich ist es deine Aufgabe ein Minimalbeispiel des Problems zu erstellen …

Code: Alles auswählen

\documentclass{article}
\def\englishname{test-english}
\makeatletter\@onelevel@sanitize\englishname\makeatother
\edef\cmdname{\jobname}
\makeatletter\@onelevel@sanitize\cmdname\makeatother
\ifx\cmdname\englishname
  \typeout{\jobname\space = \englishname}
  \usepackage[main=english,ngerman]{babel}
\else
  \typeout{\jobname\space != \englishname}
  \usepackage{shellesc}
  \ShellEscape{pdflatex -jobname=\englishname\space \jobname}

  \usepackage[main=ngerman,english]{babel}
\fi
\usepackage{blindtext}

\begin{document}
\tableofcontents
\blinddocument
\end{document}

Angenommen, diese Datei heißt test.tex. Dann werden beim Aufruf »pdflatex -shell-escape test.tex« zwei Dateien test.pdf und test-english.pdf erzeugt, weil bei jeden Aufruf eben auch ein Aufruf »pdflatex -jobname=test-english test« erfolgt. Der \@onelevel@sanitize-Aufruf ist notwendig, weil die catcodes von \jobname und einem normal per \def definierten String sonst eventuell nicht übereinstimmen, so dass »test-english« und »\jobname« zwar eventuell dieselben Zeichen aber nicht dieselben Token sind und dann \ifx fehlschlagen würde.

Natürlich kann man auch die Unterscheidung statt über \jobname auch über ein Markermakro machen. Man kann auch wirklich zwei Dateien erzeugen und dann zwei \ShellEscapeAufrufe machen. Es ist extrem vieles möglich. Allerdings hat man bei diesem Vorgehen eben auch das Problem, dass Fehler in der Datei dann in zwei verschiedenen Log-Dateien stehen. Im Beispiel wird auch ein interaktiver pdflatex-Aufruf gestartet. Da muss man also ggf. neben Option -jobname auch noch Option -interaction mit passendem Wert versehen.

Das ist alles etwas für Leute, die auch Manual-Pages lesen können. Rainer User und überhaupt jedem, der den oben gezeigten Code auch mit der Anleitung seiner TeX-Distribution und der verwendeten Pakete nicht versteht, würde ich hingegen zwei Dokumente empfehlen, denn tatsächlich hat man ja ohnehin zwei Dokumente, nur eben in einem verwurstelt.


Antworten