Lange Dateinamen

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


tome28
Forum-Anfänger
Forum-Anfänger
Beiträge: 14
Registriert: So 10. Mai 2009, 09:54

Lange Dateinamen

Beitrag von tome28 »

Hallo,

ich bin gerade dabei ein VBNET Programm zu schreiben, aus dem ich "pdflatex.exe" heraus aufrufe (via Process.Start()).

Mein Ziel ist es, eine Art "Template.tex" nach Platzhaltern zu durchsuchen und mit entsprechenden Inhalten zu ersetzen. Ist das getan kopiere ich die neue .tex Datei in ein spezielles Verzeichnis, in dem ich anschließend auch mit Hilfe von Latex kompilieren möchte.

Soweit funktioniert das auch. Allerdings bekomme ich von Latex die Meldung "!Undefined control sequence" mit dem, von mir angegebenen, Verzeichnis. Ich vermute mal, dass Latex Probleme mit dem Verzeichnisnamen hat.

Weiß jemand wie ich das Problem beheben kann?

Vielen Dank im voraus


lg Torsten

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Momentan kann das keiner wissen, denn wir wissen nicht, was du tust. Vor deinem Verzeichnisnamen steht scheinbar ein Backslash. Warum ist der dort?

Versuch bitte ein Minimalbeispiel zu erstellen, damit wir dein Problem nachvollziehen können.
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

Besserwisser

Beitrag von Besserwisser »

Übrigens würde ich statt nach irgendwelchen Platzhaltern zu suchen und diese zu ersetzen schlicht mit Befehlen arbeiten, also beispielsweise:
\documentclass{article}
\providecommand*{\BeispielA}{???BeispielA wurde nicht gesetzt!!!}
\begin{document}
Das ist \BeispielA.
\end{document}
Diese Datei "TemplateA.tex" legt man dann im Suchpfad von LaTeX ab. Für die "ausgefüllte" Datei benötigt man dann nur
\newcommand*{\BeispielA}{erste Beispiel}
\input{TemplateA.tex}
Da "TemplateA.tex" im Suchpfad von LaTeX liegt (ggf. kann man auch die Umgebungsvariable TEXINPUTS entsprechend setzen) benötigt man in der Datei mit den ausgefüllten Feldern keinerlei Pfadangaben. Vor dem Aufruf von pdflatex wechselt man am besten in das Verzeichnis der erzeugten "ausgefüllten" Datei. Dann werden auch alle Hilfs- und Logdateien dort erzeugt.

tome28
Forum-Anfänger
Forum-Anfänger
Beiträge: 14
Registriert: So 10. Mai 2009, 09:54

Beitrag von tome28 »

Hallo nochmal,

ich kann leider die notwendige Hardcopy nicht hochladen :(

Vor meinem Verzeichnisnamen steht kein Backslash. Aber nochmal langsam. Ich hoffe, der Code ist verständlich.
Dim information As New ProcessStartInfo

information.FileName = "C:\MiKTeX\miktex\bin\pdflatex.exe"
information.Arguments = "D:\Factory Acceptance Tests\relayboard\13059.tex"

Process.Start(information)
Mit diesen vier Zeilen starte ich Latex. Wie gesagt, der Aufruf funktioniert auch soweit. Es öffnet sich das Commandwindow von Windows. Mir ist aber eben noch aufgefallen, dass die Ausgabe "! I can't find file D:Acceptance" angezeigt wird. Soll heißen, Latex hat offensichtlich ein Problem mit meiner Parameterübergabe. Ich denke mal es kommt mit den Backslashes oder den Leerzeichen nicht klar.



lg Torsten

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Also ich sehe da ganz viele Backslashes. Benutze Forwardslashes / als Verzeichnistrenner!

Ich habe deinen Code oben markiert, hier siehst du schon, dass die Backslash magic machen. Diese leiten in LaTeX nämlich Befehle/Kontrollsequenzen ein.

Übrigens sind Uploads momentan leider nicht möglich.
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

tome28
Forum-Anfänger
Forum-Anfänger
Beiträge: 14
Registriert: So 10. Mai 2009, 09:54

Beitrag von tome28 »

Das hatte ich schon versucht. Ich habe die Backslashes im Argument durch Slashes ersetzt. Hat leider nichts gebracht.

Irgendwie muss es aber funktionieren, denn Programme wie "Eclipse" können das ja auch. Ich habe aber aus den Ausgabeinformationen von "Eclipse" auch keine Idee ziehen können.

lg Torsten

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4300
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Neben den falschen Backslashes hast du auch ein Leerzeichen im Verzeichnisnamen. D.h du brauchst zusätzliche Quotes.

dknof
Forum-Anfänger
Forum-Anfänger
Beiträge: 48
Registriert: So 29. Jul 2012, 13:30

Beitrag von dknof »

Hallo Torsten,

ich hatte auch ein VBA-Skript mit Aufruf von LaTeX erstellt (siehe http://www.golatex.de/serienbrief-ueber ... t9780.html).
Mein Aufruf von LaTeX erfolgt dabei mit
  Dim objShell
  Set objShell = CreateObject("WScript.Shell")
  objShell.CurrentDirectory = ActiveWorkbook.Path
  objShell.Run "pdflatex '" & Ausgabe & ".tex'", 0 ' 0: versteckt, 1: im Vordergrund
Der Dateiname (mit Leerzeichen) wird dabei noch in einfache Anführungszeichen gesetzt, also zum Beispiel
  objShell.Run "pdflatex 'Beispiel 1.tex'"
Gruß
Diether

tome28
Forum-Anfänger
Forum-Anfänger
Beiträge: 14
Registriert: So 10. Mai 2009, 09:54

Beitrag von tome28 »

G' Morgen und vielen Dank für die vielen Tipps. Ich habe alle Vorschläge durchprobiert und keiner wollte funktionieren :(

Ich gehe daher jetzt den Umweg, das Arbeitsverzeichnis zu wechseln. So kann ich die zu kompilierende Datei ohne zusätzliche Verzeichnisangabe in den Parametern angeben. Ist umständlich, aber es funktioniert.

Vielen Dank nochmal an alle :)


lg Torsten

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4300
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

tome28 hat geschrieben: Ich gehe daher jetzt den Umweg, das Arbeitsverzeichnis zu wechseln. So kann ich die zu kompilierende Datei ohne zusätzliche Verzeichnisangabe in den Parametern angeben. Ist umständlich, aber es funktioniert.
Das ist sowieso der sinnvolle Weg. pdflatex vom einem anderen Verzeichnis aus zu starten wird nicht empfohlen und kann zu vielen Schwierigkeiten führen, weil input-Dateien und Bilder usw immer vom relativ zum Verzeichnis, in dem du pdflatex aus startest, gesucht werden. Und die Ausgabedateien würden dort auch landen.

Antworten