TIKZ 使用文件名和路径变量进行外部化

TIKZ 使用文件名和路径变量进行外部化

我有以下问题:一个包含多个章节的大型 latex 项目 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 中创建的 pdf 中获得相同的 tikz 文件名。因此,“chapter/chapter1/img/example1.tikz”的外部化 pdf 应为“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}},但没有更好的结果。您知道如何解决这个问题吗?非常感谢

相关内容