我的项目

我的项目

我的项目

文件树

- section
  - mysection.tex
- tools
  - mystandalone_data.csv
  - mystandalone.tex
main.tex

平均能量损失

main.tex

\documentclass{article}

\usepackage[mode=buildmissing]{standalone}
\usepackage{tikz,pgfplots,pgfplotstable}
\pgfplotsset{width=7cm,compat=1.18}
\usepackage{currfile}

\begin{document}
\input{sections/mysection}
\end{document}

mysection.tex

\documentclass{article}

\usepackage[mode=buildmissing]{standalone}
\usepackage{tikz,pgfplots,pgfplotstable}
\pgfplotsset{width=7cm,compat=1.18}

\usepackage{currfile}

\begin{document}
\begin{figure}
    \centering
    \includestandalone{tools/mystandalone}
\end{figure}

\end{document}

mystandalone.tex

\documentclass{standalone}

\usepackage{tikz,pgfplots,pgfplotstable}
\pgfplotsset{width=7cm,compat=1.18}
\usepackage{currfile}


\edef\CurrentFileDir{\currfiledir}% 
\pgfplotstableread[col sep = semicolon,header=true]{\CurrentFileDir mystandalone_data.csv}\mydata


  \begin{document}
      \begin{tikzpicture}
        \begin{axis}[table/col sep=semicolon]
            \addplot table [x=Oui,y expr=\coordindex]{\mydata};
        \end{axis}
    \end{tikzpicture}
\end{document}

mystandalone_data.csv

Oui;Non
45;45
21;23
23;45
24;48
30;45
40;48

我的问题

当我编译时:

  • mystandalone.tex,它起作用了
  • main.tex,它起作用了
  • mysection.tex它抛出以下错误
Package standalone Warning: Graphic 'tools/mystandalone.pdf' could not be build.
Shell escape activated? on input line 12.

(/compile/tools/mystandalone.tex
! Undefined control sequence.
\pgfplotstableread@filename ->\mydata 
                                      
l.15 ...table [x=Oui,y expr=\coordindex]{\mydata};

我尝试过的方法

目前,我已经尝试过:

  • 扩大currfiledir\edef\CurrentFileDir{\currfiledir}
  • 使用/扩展currfileabsdir

这些解决方案均不起作用。

答案1

standalone包重新定义了\documentclass宏,以便\begin{document}忽略子文件之前的所有内容。

\mydata宏的定义

\pgfplotstableread[col sep = semicolon,header=true]{\CurrentFileDir mystandalone_data.csv}\mydata

从 以外的其他文件编译时不会被读取mystandalone.tex。将其移到\begin{document}和之间\end{document}

\documentclass{standalone}

\usepackage{tikz,pgfplots,pgfplotstable}
\pgfplotsset{width=7cm,compat=1.18}
\usepackage{currfile}

\begin{document}
  \pgfplotstableread[col sep = semicolon,header=true]{\currfiledir mystandalone_data.csv}\mydata
    \begin{tikzpicture}
      \begin{axis}[table/col sep=semicolon]
          \addplot table [x=Oui,y expr=\coordindex]{\mydata};
      \end{axis}
  \end{tikzpicture}
\end{document}

相关内容