
Ich habe folgendes Problem: Ein großes Latex-Projekt project.tex mit mehreren Kapiteln. Für jedes dieser Kapitel habe ich mehrere Tikz-Bilder, die ich in den Ordner tikz_pdf auslagern möchte. Die Dateistruktur ist dementsprechend
home/chapter/chapter1/img/example_1.tikz
home/chapter/chapter1/img/example_2.tikz
home/project.tex
home/tikz_pdf
Da es sich um ein großes Projekt handelt, möchte ich die Externalisierung mithilfe eines Makros automatisieren:
\includetikz{chapter/chapter1/img/example_1.tikz}
anstatt
\input{chapter/chapter1/img/example_1.tikz}
um den gleichen Tikz-Dateinamen in den in /tikz_pdf erstellten PDFs zu erhalten. Das externalisierte PDF von „chapter/chapter1/img/example1.tikz“ soll daher „home/tikz_pdf/example1.pdf“ sein. Zu diesem Zweck möchte ich ein Makro verwenden, das wie folgt angewendet werden kann:
\documentclass[12pt,lot, lof]{puthesis}
\usepackage{filemod}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfplotsset{plot coordinates/math parser=false}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize[prefix=tikz/]
% THIS IS THE MACRO
\makeatletter
\DeclareRobustCommand{\includetikz}[1]{%
\begingroup
\def\textendash{-}%
\includetikz@parse{#1}%
\edef\includetikz@base{\detokenize\expandafter{\includetikz@base}}%
\tikzsetnextfilename{\filename@base}%
\input{#1}%
\endgroup
}
\makeatother
\begin{document}
\begin{figure}
\includetikz{chapter/chapter1/img/example_1.tikz}
\end{figure}
\begin{figure}
\includetikz{chapter/chapter1/img/example_2.tikz}
\end{figure}
\end{document}
Das Problem ist bisher jedoch, dass die Unterstriche in den Dateinamen dazu führen, dass \input{#1} nur zu Fehlern mit fehlenden $ führt. Ich habe bereits versucht, \input{\detokanize{#1}} zu verwenden, ohne bessere Ergebnisse. Haben Sie eine Idee, wie man dieses Problem lösen kann? Vielen Dank