
Ich schreibe ein Dokument auf mehreren Maschinen. Auf einer davon ist Ubuntu 14.04 mit einer etwas veralteten Installation von TexLive installiert. Die anderen haben Ubuntu 14.10 und Arch Linux.
In meinem Dokument verwende ich diePfeile.metaBibliothek. Jetzt stecke ich mit einem Dokument fest, das auf einem meiner Rechner (dem 14.04) nicht kompiliert wird.
Gibt es eine Möglichkeit, wie ich Latex dazu bringen kann, alle problematischen Definitionen zu ignorieren? Was ich gerne hätte, ist etwas (vielleicht ein paar Zeilen Code zum Ein- und Auskommentieren), um die neueren Funktionen von TikZ zu aktivieren und zu deaktivieren, ohne die Quelldateien der eigentlichen Bilder zu ändern? Im Moment sind es 9 Bilder, die die arrows.meta-Tipps verwenden, und diese Zahl könnte noch steigen. Die Bildquelle zu ändern ist also nicht der richtige Weg.
\documentclass[tikz]{standalone}
\usepackage[T1]{fontenc} % font encoding
\usepackage[utf8]{inputenc} % input encoding
\usepackage{lmodern} % fonts
\usepackage{tikz,pgfplots} % provides TikZ
\usetikzlibrary{arrows}
%\usetikzlibrary{arrows.meta}
%\newcommand{\Stealth}{\stealth} % does not work
\begin{document}
\begin{tikzpicture}
\draw[-Stealth] (0,0) to (1,1);
\end{tikzpicture}
\end{document}
Antwort1
Die beste Lösung besteht wirklich darin, die TeX-Distribution zu aktualisieren. Das erspart in Zukunft Kopfschmerzen und die neue arrows.meta
Bibliothek bietet viele nette Funktionen.
Wenn ein Upgrade jedoch keine Option ist: Der folgende bedingte Code prüft, ob die pgf
geladene Version 3.0.0 oder höher ist (datiert am oder nach dem 18.12.2013). Wenn ja, laden wir arrows.meta
und -Stealth
können wie gewohnt verwenden. Wenn nicht, wird die aufgerufene Pfeilspitze als Alias Stealth
für die alte stealth
Spitze verwendet, die von der Bibliothek bereitgestellt wurde arrows
.
Das Endergebnis ist, dass es Stealth
verwendet wird, wenn TikZ/PGF 3.0.0 verfügbar ist, aber darauf zurückgegriffen wird, stealth
wenn sie nicht verfügbar sind, ohne dass Änderungen am Zeichencode vorgenommen werden müssen.
Einschränkungen:Pfeilstilmodifikatoren oder andere Optionen (wie -{Stealth[width=6pt]}
beispielsweise ), die mit eingeführt werden, arrows.meta
werden von diesem Code nicht erfolgreich verarbeitet.
\documentclass[tikz]{standalone}
\usepackage[T1]{fontenc} % font encoding
\usepackage[utf8]{inputenc} % input encoding
\usepackage{lmodern} % fonts
\usepackage{tikz} % provides TikZ
\usetikzlibrary{arrows}
\makeatletter
\@ifpackagelater{pgf}{2013/12/18}{
\usetikzlibrary{arrows.meta}
}{
\pgfarrowsdeclarealias{Stealth}{Stealth}{stealth}{stealth}
}
\makeatother
\begin{document}
\begin{tikzpicture}
\draw[-Stealth] (0,0) to (1,1);
\end{tikzpicture}
\end{document}