Muss alle Verzeichnisse mit ./ angeben

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Muss alle Verzeichnisse mit ./ angeben

von bur » Di 22. Jun 2010, 10:37

Ich habe das Problem mit dem Pfad jetzt so gelöst, dass ich beim Aufruf der Eingabeaufforderung den Pfad automatisch setze.

Das klappt auch soweit, dass ich dann aus dem Verzeichnis das die .tex Dateien enthält pdflatex starten kann.

Allerdings findet er die .tex-Datei dann nicht:
Tex-Datei-Verzeichnis> pdflatex main.tex
This is pdfTeX, Version 3.1415926-1.40.10 (MiKTeX 2.8)
entering extended mode
! I can't find file `main.tex'.
<*> main.tex

Please type another input file name: 
Starte ich mit pdflatex .\main.tex klappt es. Er findet dann allerdings wieder die .aux nicht... und --aux-directory .\ bringt ebenfalls nichts.

Kann es sein, dass das Problem irgendwie darin liegt, dass es sich um ein UNC/Netzlaufwerk handelt? Hat allerdings einen festen Laufwerksbuchstaben zugewiesen.

von bur » Fr 18. Jun 2010, 18:39

Der Grund für die Batch-Datei ist, dass ich nicht den ganzen Pfad zur pdflatex.exe angeben will - Umgebungsvariablen werden leider nach dem Abmelden vom System zurückgesetzt...
Ansonsten ist es natürlich nicht sinnvoll als Parametern für --output-directory den Namen einer Datei zu verwenden.
Das konnte man etwas schlecht erkennen, der Parameter für --output-directory ist .\, der Rest steht vor dem %1.

Denn seltsamerweise funktionierte folgendes nicht:

..\miktex\bin\pdflatex test.tex

Er sucht dann die test.tex im Verzeichnis von pdflatex. Daher fügt die bat automatisch das .\ vor den Dateinamen.


Ist vermutlich vom Betriebssystem verursacht, pdflatex sieht wenn man es so aufruft anscheinend sein eigenes Verzeichnis als das aktuelle an und sucht daher dort nach der .tex Datei und will auch dort die Ausgabe machen.

Eine Möglichkeit wäre vermutlich in der Batch einfach den PATH zu definieren und dann ganz normal mit pdflatex %1 aufrufen.

Kann das aber erst Montag wieder testen...

von KOMA » Fr 18. Jun 2010, 11:51

Wenn Du bereits im Verzeichnis bist, musst Du einfach nur pdflatex mit dem Namen der gewünschten Datei aufrufen, da die Ausgabe immer in dem Verzeichnis erfolgt, in dem Du gerade bist:
pdflatex %1
Dabei sollte sich das Verzeichnis mit pdflatex und den ganzen anderen MiKTeX-Binaries unbedingt in PATH befinden.

Wenn Du sonst nichts in den Batch machst, ist es allerdings witzlos dafür ein Batch zu schreiben. Dann kannst Du pdflatex auch einfach direkt aufrufen.

Ansonsten ist es natürlich nicht sinnvoll als Parametern für --output-directory den Namen einer Datei zu verwenden. Das sollte ggf. eher der Pfad der Datei ohne den Dateinamen selbst sein. Man kann in dem Fall aber auch einfach in das entsprechende Verzeichnis wechseln. Ich glaube die BATCH-Syntax dafür wäre:
@REM In das Verzeichnis der übergebenen Datei wechseln
@REM und dort dann pdflatex für diese Datei aufrufen
set filepath="%1"
for %%f in (%%filepath) do set drivename=%%~df
for %%f in (%%filepath) do set dirname=%%~dpf
for %%f in (%%filepath) do set filename=%%~nxf
%%drivename:
cd %%dirname
pdflatex %%filename
Aber verlass Dich besser nicht darauf. Es ist Jahre her, dass ich BATCHs programmiert habe. Die Hilfe zu CMD und FOR geben ggf. mehr dazu her, wie man das mit der Ermittlung von Laufwerk, Verzeichnis und Dateinamen richtig macht. Mit XSET statt SET geht das AFAIK auch direkt, also ohne FOR-Umweg.

Vermutlich wäre das ein guter Zeitpunkt zur PowerShell zu wechseln oder sich etwas wie MinSYS (einschließlich bash) zu besorgen.

Muss alle Verzeichnisse mit ./ angeben

von bur » Fr 18. Jun 2010, 10:43

Ich hoffe das ist das richtige Unterforum.

Ich rufe pdflatex über eine Batch-Datei auf:

..\miktex\bin\pdflatex --output-directory .\ .\%1

Dadurch wird die PDF-Datei direkt im aktuellen Verzeichnis mit der .tex-Datei erstellt.

Allerdings muss ich jetzt bei jeder Dateiangabe den Pfad mit angeben. Z. B. \include{./test.tex}

Außerdem findet pdflatex die .aux-Dateien nicht mehr, --aux-directory .\ als Parameter habe ich probiert, das bringt nichts.

Wie kann ich das ganze sauber hinkriegen?

Was ich möchte ist dass ich einfach in dem Ordner in dem sich die .tex-Dateien befinden eine Batch mit der zu kompilierenden Datei als Parameter aufrufe und dann im gleichen Ordner die .pdf-Datei erstellt wird.

(ich weiß, das geht mit einer IDE komfortabler, aber ich kann hier auf der Arbeit nichts installieren)

Nach oben