TIKZ Externalisieren mit Dateinamen und Pfadvariable

TIKZ Externalisieren mit Dateinamen und Pfadvariable

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

verwandte Informationen