
У меня следующая проблема: Большой проект латекса project.tex с несколькими главами. Для каждой из этих глав у меня есть несколько картинок tikz, которые я хочу экспортировать в папку tikz_pdf. Структура файла соответственно
home/chapter/chapter1/img/example_1.tikz
home/chapter/chapter1/img/example_2.tikz
home/project.tex
home/tikz_pdf
Поскольку это большой проект, я хочу автоматизировать экстернализацию с помощью макроса:
\includetikz{chapter/chapter1/img/example_1.tikz}
вместо
\input{chapter/chapter1/img/example_1.tikz}
для того, чтобы получить то же самое имя файла tikz в pdf, созданных в /tikz_pdf. Внешний pdf "chapter/chapter1/img/example1.tikz" должен, таким образом, быть "home/tikz_pdf/example1.pdf" Для этой цели я хотел бы использовать макрос, который можно применить следующим образом:
\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}
Проблема пока в том, что подчеркивания в именах файлов приводят к тому, что \input{#1} приводит только к ошибкам отсутствия $. Я уже пробовал использовать \input{\detokanize{#1}}, но без лучших результатов. Есть ли у вас какие-либо идеи, как решить эту проблему? Большое спасибо