Output externer Programme einbinden? Parameter übergeben?

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

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.

RalfR
Forum-Anfänger
Forum-Anfänger
Beiträge: 25
Registriert: Mi 13. Okt 2010, 19:00

Beitrag von RalfR »

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.

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

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)

RalfR
Forum-Anfänger
Forum-Anfänger
Beiträge: 25
Registriert: Mi 13. Okt 2010, 19:00

Beitrag von RalfR »

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

Antworten