`dottex` ist tatsächlich in diverser Hinsicht inzwischen veraltet. So definiert es beispielsweise ein eigenes `\ifpdf`, lädt aber danach noch Pakete, die inzwischen auch zum Laden des Pakets [`ifpdf`](http://www.ctan.org/pkg/ifpdf) führen, das dann wegen des bereits definieren `\ifpdf` einen Fehler meldet. Das kann man eventuell mit [`scrlfile`](http://www.ctan.org/pkg/koma-script) lösen.
Außerdem erwartet das Paket, dass irgend eines der von ihm geladenen Pakete den Ausgabe-Stream `\verbatim@out` definiert. AFAIR hat eine frühere Version von Paket `verbatim` diesen tatsächlich grundsätzlich definiert. Schon seit längerem wird er aber nur beim ersten `\verbatimwrite` angelegt, steht also nun nicht mehr generell zur Verfügung. Man kann das eventuell lösen, indem man `\verbatim@out` selbst anlegt.
Wenn `dottex` hingegen annimmt, dass `-shell-escape` nicht aktiviert ist, dann liegt das meist daran, dass es unter Windows ohne Option `miktex` verwendet wird. Das Paket kann nämlich auch nicht selbst erkennen, ob es einen Unix-Unterbau mit Unix-Shell-Befehlen oder `cmd`-Syntax für Windows verwenden muss. Daher hat es eine Option `miktex`, mit der von Unix- auf Windows-Syntax und -Befehle umgeschaltet wird. Dass es neben MiKTEX auch noch TeX Live für Windows gibt, ist dem Paket unbekannt. Man muss daher auch mit TeX Live unter Windows Option `miktex` setzen. Das löst aber nur dieses eine Problem. Besonders ungeschickt daran ist IMHO, dass die Unterscheidung zwischen Windows- und Unix-Unterbau wohl ohnehin nur für den Test, ob `shell-escape` aktiviert wurde oder nicht, benötigt wird.
Bei mir unter Linux funktioniert:
% arara: pdflatex: {shell: yes}
\documentclass{article}
\usepackage{scrlfile}
\BeforePackage{ifpdf}{\let\ifpdf\relax}
\makeatletter
\newwrite\verbatim@out
\makeatother
\usepackage{dottex}
\begin{document}
\begin{dotpic}
a -> b;
\end{dotpic}
\end{document}
Unter Windows muss man vermutlich
% arara: pdflatex: {shell: yes}
\documentclass{article}
\usepackage{scrlfile}
\BeforePackage{ifpdf}{\let\ifpdf\relax}
\makeatletter
\newwrite\verbatim@out
\makeatother
\usepackage[miktex]{dottex}
\begin{document}
\begin{dotpic}
a -> b;
\end{dotpic}
\end{document}
verwenden und zwar unabhängig von der verwendeten TeX-Distribution.
Mit dem Paket [`ifplatform`](http://www.ctan.org/pkg/ifplatform) sollte es möglich sein, die Unterscheidung zu automatisieren:
% arara: pdflatex: {shell: yes}
\documentclass{article}
\usepackage{scrlfile}
\BeforePackage{ifpdf}{\let\ifpdf\relax}
\makeatletter
\newwrite\verbatim@out
\makeatother
\usepackage{ifplatform}
\ifwindows
\usepackage[miktex]{dottex}
\else
\usepackage{dottex}
\fi
\begin{document}
\begin{dotpic}
a -> b;
\end{dotpic}
\end{document}
Was ich allerdings derzeit nicht mit MiKTeX oder TeX Live unter Windows oder OS X testen kann. Unter Linux funktioniert es bei mir.
All das ist sind jedoch nur Hacks und Workarounds für Bugs im Paket, die an den Autor gemeldet und von diesem beseitigt gehören. Ob dieser noch aktiv und über die angegebenen Adressen oder `de.comp.text.tex` erreichbar ist, kann ich nicht sagen.
Als Alternative zu `dottex` steht übrigens [`graphviz`](http://www.ctan.org/pkg/graphviz) bereit, mit dem man auch halbwegs komplexe Graphen wie den folgenden erstellen kann:
% arara: pdflatex: {shell: yes}
\documentclass{minimal}
\usepackage{minted}
\usepackage[pdf]{graphviz}
\begin{document}
\digraph[height=\textheight-2in]{process}{
/* PROGRAMS */
latex1 [label="latex -shell-escape x.tex", shape=hexagon, fontname=Courier];
latex2 [label="latex x.tex", shape=hexagon, fontname=Courier];
dvips [label="dvips -o x.ps x.dvi", shape=hexagon, fontname=Courier];
/* FILES */
xTex [label="x.tex", fontname=Helvetica, shape=ellipse];
xDvi [label="x.dvi", fontname=Helvetica, shape=ellipse];
xPS [label="x.ps", fontname=Helvetica, shape=ellipse];
subgraph cluster0 {
label="graphviz.sty magic";
dot [label="dot -Tps -o a.ps a.dot", shape=hexagon, fontname=Courier];
gvpr [label="gvpr master.graphviz", shape=hexagon, fontname=Courier];
aPS [label="a.ps", fontname=Helvetica, shape=ellipse];
sed [label="sed s/xshow/pop show/g a.ps", shape=hexagon, fontname=Courier];
aDot [label="a.dot", fontname=Helvetica, shape=ellipse];
master [label="master.graphviz", fontname=Helvetica, shape=ellipse];
};
/* COMMON EDGES */
xTex -> latex1;
xTex -> latex2;
latex2 -> xDvi;
xDvi -> dvips;
dvips -> xPS;
latex1 -> master [style=dotted, label=singlefile];
latex1 -> aDot [style=dotted, label="multiple files"];
master -> gvpr;
gvpr -> aDot;
aDot -> dot;
dot -> aPS;
aPS -> sed;
sed -> aPS;
aPS -> dvips;
aPS -> latex2;
}
\end{document}
Das Beispiel ist übrigens der Anleitung zum Paket entnommen.
entnommen und resultiert in:
![Beispiel aus der graphviz-Anleitung][1]
Für einfache Graphen kann auch das Paket [`lt3graph`](http://www.ctan.org/pkg/lt3graph) verwendet werden. Allerdings kenne ich mich mit beiden genannten Paketen selbst nicht weiter aus. Das trifft aber auch auf `dottex` zu.
Darüber hinaus sei noch einmal darauf hingewiesen, dass die Klasse `minimal` nicht als Klasse für vollständige Minimalbeispiele, sondern als minimale Klassen zum Testen des Ladens des LaTeX-Kerns gedacht ist. Bitte für vollständige Minimalbeispiele daher ggf. eine andere einfache Klasse wie `article` verwenden.
[1]: http://texwelt.de/wissen/upfiles/test10.png