Output externer Programme einbinden? Parameter übergeben?

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: Output externer Programme einbinden? Parameter übergeben?

von RalfR » Do 11. Nov 2010, 19:30

Stimmt.
\immediate\write18{dir >temp.tex}
funktioniert auch.

von KOMA » Do 11. Nov 2010, 10:06

RalfR hat geschrieben:Jeder DOS-Befehl braucht also ein cmd vorangestellt,
damit die Eingabeaufforderung gestartet und der dir-Befehl
korekt wird ausgeführt wird.
\write18 ruft bei MiKTeX selbst den Command-Line-Interpreter auf. Das ist üblicherweise cmd. Siehe dazu den Link in die MiKTeX-Anleitung, der Dir bereits sehr früh in dieser Diskussion gegeben wurde.

Wenn die Frage damit beantwortet ist, solltest Du den Status entsprechend anpassen. Wenn die Frage noch nicht beantwortet ist, bitte angeben, was noch fehlt.

Markus
(Moderator)

von RalfR » Mi 10. Nov 2010, 19:11

Nach einigem Recherchieren konnte das Problem (bzw. die Probleme)
wie folgt gelöst werden:

1. Erstmal konnte der Kommandozeilenaufruf nicht funktionieren,
er muß folgendermaßen heißen:
\immediate\write18{cmd /C dir >temp.tex}
Jeder DOS-Befehl braucht also ein cmd vorangestellt,
damit die Eingabeaufforderung gestartet und der dir-Befehl
korekt wird ausgeführt wird.

2. die leere Logdatei kam dadurch zustande, dass ich
den LaTeX-Lauf nicht beendet hatte, bevor ich die Logdatei
geöffnet habe. Das kann in TeXWorks leicht passieren,
es ist daher wichtig, darauf zu achten, dass - wenn eine
Fehlermeldung kommt - der Prozess durch
Eingabe von "X"inder TexWoks-Konsole oder Klick auf das Abbrechen-Icon oder CTRL-T in TeXWorks
manuell abgeschlossen wird.

3. In der nun vorhandenen Logdatei war dann die folgende Fehlermeldung zu lesen:
runsystem(cmd /C dir >temp.tex)...disabled (restricted).
Heißt: write18 ist nicht enabled

4. Beim "Enablen" sind dann auch noch zumindest
zwei Dinge zu beachten:

(a) Im TexWorks-Dialog Bearbeiten->Einstellungen->Textsatz
ist das richtige Verarbeitungsproramm (d.h. das zu der im
Hauptprogramm ausgewählten Modus passende) auszuwählen.

(b) Bei mir war das "pdfLaTeX+MakeIndex+BibTeX"
Da dieses aber nicht TeX oder LaTeX, sonder textify.exe
aufruft, ist die Option dort nicht
--enable-write18
sondern
----tex-option=--enable-write18
5. Zudem mußte ich den LaTeX-Code noch ein bißchen anpassen:
\documentclass{article}
\usepackage{listings}
\begin{document}
\immediate\write18{cmd /C dir >temp.tex}
\lstinputlisting{temp}
\end{document} 
Damit hat es dann (endlich!) funktionert.

von KOMA » Mi 3. Nov 2010, 17:27

Wie wäre es, wenn Du nicht zwischen Eingabeaufforderung und TeXworks hin und her springen würdest, sondern Du zunächst die Antwort auf Dein Problem mit der Eingabeaufforderung beachten würdest? Wenn es auf der Eingabeaufforderung funktioniert, ist das schon einmal ein wichtiger Schritt. Dann geht es nur noch darum, wie man das in TeXworks integriert. Das muss Dir dann jemand beantworten, der TeXworks verwendet - wenn Du es durch Studium der Anleitung nicht selbst herausfindest.

von RalfR » Mi 3. Nov 2010, 17:08

Welche Option bei MikTex meinst Du?

Ich habe wie gesagt im TeXWorks-Editor
als Argument
--enable-write18
hinzugefügt.

Mein Minimalbeispiel sieht immer noch so aus:
\documentclass{article}
\begin{document}
\immediate\write18{dir > temp.tex}
\input{temp}
\end{document} 
Wenn ich also, um es etwas zu vereinfachen,
nur weiter versuche, im TeXWorks-Editor
den richten Aufruf hinzubekommen,
nehme ich dort NUR
--enable-write18
als Argument hinzu.
Und dann bekomme ich immer noch den
gleichen Fehler wie eingangs beschrieben:
! LaTeX Error: File `temp.tex' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: tex)

Enter file name: 
Das Problem ist hier also erstmal, dass
die Datei nicht erzeugt wird.

Meine Frage also: kann ich genauer herausfinden,
warum nicht?

Die Log-Datei ist leer, die Aux-Datei ist leer,
wie finde ich denn überhaupt heraus,
ob write18 abgelehnt wird, oder ob
der dir-Befehl fehlschlägt oder {was
sonst auch immer passieren kann} - passiert?

von CrazyHorse » Mi 3. Nov 2010, 16:28

RalfR hat geschrieben:Immer noch das gleiche Problem.

Fehler:
latex: invalid command line option
Gibt Windows nicht den Laufwerksbuchstaben mit \C: aus?
dann hast du doch gleich ein Problem beim Einlesen.

Herbert

von KOMA » Mi 3. Nov 2010, 16:10

RalfR hat geschrieben:
latex -shell-excape test_write18
Fehler:
latex: invalid command line option
Wundert Dich das? Wenn Du MiKTeX verwendest, solltest Du schon die Optionen verwenden, die in der MiKTeX-Anleitung an der Stelle angegeben sind, auf die mein Link verweist.
RalfR hat geschrieben:
latex --enable-write18 test_write18

Da gibt es den Fehler:
!Undefined control sequence
L.4
Leider hast Du uns den entscheidenden Teil der Fehlemeldung, der angibt, welche control sequence nicht definiert ist, ebenso unterschlagen wie die Angabe wie ganz genau Dein Minimalbeispiel nun aussieht. Daher kann ich Dir nur sagen: In Zeile 4 stimmt etwas nicht. Ich kann nur vermuten: In der von "dir" erzeugten Datei temp.tex steht etwas, womit TeX nichts anfangen kann. Wenn temp.tex keine LaTeX-Syntax hat, dann kann man sie natürlich nicht einfach mit \input laden. Dann muss man die entweder vorverarbeiten oder speziell laden, beispielsweise mit \verbatiminput (siehe Paket verbatim) oder \lstinputlisting (siehe Paket listings).

von RalfR » Mi 3. Nov 2010, 15:45

Das verstehe ich nicht ganz:
im Moment arbeite ich mit TeXWorks.
Kann ich den dafür nicht mehr benutzen?

TeXWorks ruft anscheinend LaTeXmk an
der Kommandozeile auf.

Für den Aufruf habe ich die Optionen
 --enable-write18
-shell-escape tex
hinzugefügt:
Immer noch das gleiche Problem.

Habe auch an der Kommandolzeile beides ausprobiert:
latex -shell-excape test_write18
Fehler:
latex: invalid command line option

und
latex --enable-write18 test_write18

Da gibt es den Fehler:
!Undefined control sequence
L.4

von CrazyHorse » Mi 3. Nov 2010, 15:06

RalfR hat geschrieben: Ich habe versucht, das einzuschalten,
Mit
tex --enable-write18 an der Windows-Kommandozeile
beeindruckt das System aber nicht sehr:
ist das denn richtig so?

Der Fehler ist noch der Gleiche.
Du musst dein Beispiel mit "latex -shell-escape "datei"laufen lassen oder
eben ein TeX-Dokument benutzen. Und wenn latex, dann auch richtig:
\documentclass{article}
\begin{document}
\immediate\write18{dir > temp.tex}
\input{temp}
\end{document}
funktioniert tadellos.

Herbert

von RalfR » Mi 3. Nov 2010, 15:00

Danke für den Hinweis u. Link.

Ich habe versucht, das einzuschalten,
Mit
tex --enable-write18 an der Windows-Kommandozeile
beeindruckt das System aber nicht sehr:
ist das denn richtig so?

Der Fehler ist noch der Gleiche.

Nach oben