PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kann man aus Latex heraus Dateien öffnen und verarbeiten?



elektron
10-11-2010, 21:39
Hallo liebe Latex-Gemeinde,

seit einiger Zeit treibt mich ein Gedanke den ich nimmer los werde.
Folgender Sachverhalt: Ich habe meinen Lebenslauf mit moderncv gesetzt. Das dazugehörige Anschreiben mit Hilfe der Anleitung aus dem Forum mit Komascript und den den entsprechenden Anpassungen. Den Lebenslauf habe ich als pdf mit den include-Befehl ins Anschreiben eingefügt. Das funktioniert auch alles reibungslos. Nun zu meinen Gedanken. Da im Lebenslauf immer das aktuelle Datum stehen sollte wäre es super wenn diese Datei sich beim kompilieren des Anschreibens mit aktualisiert. Das würde bedeuten, dass aus dem Anschreiben die tex-Datei des Lebenslauf geöffnet wird, kompiliert wird, das pdf ins Verzeichnis abgespeichert wird und dann mit include wieder ins Anschreiben eingefügt wird. Ist sowas möglich oder sind es nur schöne Fantasien und ich muß den Lebenslauf immer per Hand aktualisieren.
Zusammen in einer Datei geht das ja nicht weil es zwei verschiedene Dokumentenklassen sind.
Wie ist denn hier der Stand der Wissenschaft. Ich weiß verrückter Ansatz aber ich denke ne Frage wert.

Gruß elektron

rais
10-11-2010, 21:57
Moin moin,

Da im Lebenslauf immer das aktuelle Datum stehen sollte wäre es super wenn diese Datei sich beim kompilieren des Anschreibens mit aktualisiert. Das würde bedeuten, dass aus dem Anschreiben die tex-Datei des Lebenslauf geöffnet wird, kompiliert wird, das pdf ins Verzeichnis abgespeichert wird und dann mit include wieder ins Anschreiben eingefügt wird. Ist sowas möglich oder sind es nur schöne Fantasien und ich muß den Lebenslauf immer per Hand aktualisieren.
Zusammen in einer Datei geht das ja nicht weil es zwei verschiedene Dokumentenklassen sind.
Wie ist denn hier der Stand der Wissenschaft. Ich weiß verrückter Ansatz aber ich denke ne Frage wert.

das ginge mit \write18, siehe dazu ``-enable-write18'' oder ``-shell-escape''.
Alternativ könntest Du vllt auch im Lebenslauf das aktuelle Datum weglassen und in Deinem Anschreiben eben diesen eingebundenen Lebenslauf mit aktuellem Datum über(- bzw. vorweg?) schreiben, was sich evtl direkt in einer pagecommand-Option unterbringen ließe ...
Noch eine Alternative wäre vllt das combine-Paket.

MfG

Donalduck
10-11-2010, 22:10
oder einfach das übersetzen der Reihe nach von einem Batch-/Bash-Script erledigen lassen.

elektron
11-11-2010, 08:40
Danke für die schnellen Antworten. Aber ich habe festgestellt, dass AureusPhoenix hier (http://www.mrunix.de/forums/showthread.php?t=69787) genau das gleiche Problem hat. Hätte vllt. vorher mal lesen sollen. Werde mich da mal mit dranhängen.
Die Idee mit write18 klingt auch verlockend. Ich werde sie mal im Hinterkopf behalten, da ich beim Überfliegen gelesen habe, dass dann Latex nicht nur gewollte Dateien ausführen kann. Und wie schnell vergißt man mal die Einstellung zurückzusetzen bzw. das sie gesetzt ist.

Vielen Dank

Gruß elektron

elektron
30-11-2010, 00:12
So mal das Thema wieder aufkoche. Auch wenn einige von euch jetzt mit den Kopf schütteln werden, aber ich habe mich nun entschieden mit Lyx den write18 Befehl zu nutzen. Bin jetzt soweit das ich die Datei eintrage und sich ein neues Lyx-Fenster öffnet. Und wie stelle ich es an das die geöffnete Datei zu einem pdf kompiliert, abgespeichert (oder gleich in das Hauptdokument mit \include eingefügt )wird und sich das Fenster wieder schließt (muß auch gar net aufgehen). Der befehl sieht zur zeit wie folgt aus:
\immediate\write18{Dateiname.lyx} In Lyx sind wie hier (http://tug.org/PSTricks/main.cgi?file=pdf/pdfoutput#TXC) beschrieben, die Einstellungen vorgenommen wurden. Ich habe auch schon unter anderen Themen (http://mrunix.de/forums/showthread.php?t=69512&highlight=write18) was gefunden, nur reicht mein Wissen nicht aus um es zu verstehen.
Gibt es den nen Parameter, den man hinter die Datei schreibt und Lyx dann selbstständig beim Start der Datei sie zu kompilieren und abspeichert.
Vielen Dank für eure Hilfe.

rais
30-11-2010, 12:50
Moin moin,

Bin jetzt soweit das ich die Datei eintrage und sich ein neues Lyx-Fenster öffnet. Und wie stelle ich es an das die geöffnete Datei zu einem pdf kompiliert, abgespeichert (oder gleich in das Hauptdokument mit \include eingefügt )wird und sich das Fenster wieder schließt (muß auch gar net aufgehen).

so ich mich mit LyX auch nicht wirklich auskenne, bezweifle ich, daß Dein Vorhaben so damit umsetzbar wäre -- das widerspräche imho der WYSIWYG-Mentalität ...


Der befehl sieht zur zeit wie folgt aus:
\immediate\write18{Dateiname.lyx}

Exportiere (einmalig) Deine `Dateiname.lyx' zu `Dateiname.tex' und ersetze obigen Code durch


\immediate\write18{pdflatex Dateiname.tex}
\immediate\write18{pdflatex Dateiname.tex}

MfG

elektron
01-12-2010, 07:18
Danke für die Antwort. Leider funktioniert es net. Muß nachher mal das log-File posten, denn im drüben fischen macht ja auch keinen Spaß. Aber was ich mich noch frage, wieso zweimal die Codezeile?

rais
01-12-2010, 09:06
Moin moin,

Aber was ich mich noch frage, wieso zweimal die Codezeile?
eine LaTeX-Datei muß meist mindestens zweimal kompiliert werden. Vermutlich kannst Du hier den Code halbieren, weil Dein Hauptdokument (in dem Du diese \write18-Befehle aufrufst) eh schon mehrmals kompiliert wird, was Dir afair LyX abnimmt.

MfG

elektron
01-12-2010, 20:41
In der Tat das macht Lyx, also mehrmals ein Dokument durchlaufen lassen. So Fehler auch gefunden. Also a habe ich jetzt mal die Version 2.0 von Lyx verwendet. Ist zwar nur ne beta aber man sieht auch was Lyx so macht und wo es hängen bleibt. Und siehe da, es bleibt an nem Foto im Lebenslauf hängen. (Zum Glück war es nicht der Inhalt des Fotos) Und da waren sie wieder die Probleme mit den relativen und absoluten Dateiangaben. Also gibt man hier absolut an funktioniert es. Welche Vorgehensweise ist denn im LaTex sinnvoll?

Gruß elektron

murmel
22-09-2011, 13:14
Habe ebenfalls das Problem und nach langer Recherche keine Lösung gefunden. Könnte mir jemand helfen.


\immediate\write18{pdflatex ../Oberordner/Datei}
Diese Zeile als erste vor \documentclass eingegeben führt nicht zum gewünschten Ergebniss die obere Datei zuerst kompilieren zu lassen. Die .log-Datei ist allerdings leer. Als Fehler wird ausgegben !Undefined control sequence <argument> gefolgt von ein paar Zeilen aus der zu kompilierenden Datei.
Benutze TeXShop unter OSX 10.5.8.
Weiß jemand, was ich falsch mache?

beste Gruße

rais
23-09-2011, 02:11
Moin moin,



\immediate\write18{pdflatex ../Oberordner/Datei}
Diese Zeile als erste vor \documentclass eingegeben führt nicht zum gewünschten Ergebniss die obere Datei zuerst kompilieren zu lassen. Die .log-Datei ist allerdings leer.

welche? Die der `oberen' oder `unteren' .tex-Datei? Und hast Du beide unterschiedlich benannt? Sonst überschreibt wohlmöglich der eine pdfLaTeX-Aufruf die .log-Datei des anderen ...


Als Fehler wird ausgegben !Undefined control sequence <argument> gefolgt von ein paar Zeilen aus der zu kompilierenden Datei.

Ist das nicht eindeutig ein Fehler in Deiner `oberen' Datei? Kannst Du diese denn alleinstehend kompilieren?

MfG

murmel
23-09-2011, 06:27
Moin moin,

welche? Die der `oberen' oder `unteren' .tex-Datei? Und hast Du beide unterschiedlich benannt?
Ist das nicht eindeutig ein Fehler in Deiner `oberen' Datei? Kannst Du diese denn alleinstehend kompilieren?
MfG
Hallo Rainer,

danke dir für die Mühe!

Die zu kompilierenden .tex Dateien liegen in unterschiedlichen Ordnern und sind unterschiedlich benannt. Beide .log Dateien bleiben leer. Das setzen der jeweiligen .tex Dateien einzeln verläuft problemlos.

Mir ist da einiges nicht klar:
1) Wo im Quellcode soll/darf die besagte Zeile sitzen, vor \begin{document}, hinter \end{document} oder dazwischen.
2)Zwischendurch, als ich die unter 1) aufgeführten Möglichkeiten testete, gab es Pfad-Fehlermeldungen. Ich hatte den Eindruck, dass die Datei, in der die \immediate...-Zeile stand als Hauptdatei gilt, von der aus alle Pfade angepasst werden sollten. Stimmt das so?
Nach dem Anpassen war auch die Fehlermeldung weg, die Datei kompiliert, aber es wurde keine pdf-Datei generiert, die durch \immediate-Zeile erstellt werden sollte.

Wie du siehts, versuche ich in der Sache mir selbst was beizubringen. Sollte es im iNet dazu literatur geben, wäre ich für ein Link dankbar.

Hoffe, das Problem ist einigermaßen nachvollziehbar.

Gruß

Schweinebacke
23-09-2011, 07:30
Das ganze aus LyX heraus zu machen könnte schwierig sein, weil Du erst einmal herausfinden musst, in welchem Verzeichnis Du Dich beim LaTeX-Lauf aus LyX heraus befindest.

Für das pdflatex, das per \write18 gestartet wird, ist das Arbeitsverzeichnis ebenfalls das Verzeichnis, aus dem heraus es aufgerufen wird, also genau dieses Verzeichnis, aus dem heraus LyX den LaTeX-Lauf mit dem temporär exportierten tex-File startet.

Ohne LyX ist das einfacher. Wenn ich eine Datei foo/test.tex

\documentclass{article}
\begin{document}
Test

\immediate\write18{pdflatex tost/tost.tex}

\end{document} habe. Darüber hinaus eine Datei foo/tost/tost.tex:
\begin{filecontents}{tinput.tex}
Input
\end{filecontents}
\documentclass{article}
\begin{document}
\include{tinput}
\end{document} und mich dann in das Verzeichnis foo begebe und dort »pdflatex -shel-escape test« (bei MiKTeX heißt die Option zur Aktivierung von \write18 eventuell anders) ausführe, dann bekomme ich dabei eine Datei foo/tinput.tex (und eben nicht!!! foo/tost/tinput.tex) und tost.tex sucht und lädt auch diese Datei foo/tinput.tex (und eben nicht!!!! foo/tost/tinput.tex). Alle Hilfsdateien werden auch im Verzeichnis foo (und eben keine!!!! in foo/tost) angelegt. tost.pdf ist anschließend ebenfalls als foo/tost.pdf (und eben nicht!!! als foo/tost/tost.pdf) zu finden.

Anders sieht es übrigens aus, wenn ich mit \write18 statt »pdflatex tost/tost.tex« ein Script ausführen lasse, das erst per cd in das Verzeichnis tost wechselt und dort dann »pdflatex tost.tex« aufruft.

tral
26-09-2011, 13:29
Hallo,

reicht nicht schon einfach:



\immediate\write18{cd ../Oberordner; pdflatex Datei}


?

Christian.