\pgfplotstableread 和相对路径的问题

\pgfplotstableread 和相对路径的问题

我的项目中有以下文件夹结构:

  • 主文本
  • mystyle.sty
  • 特克斯
    • mytex 目录
  • 图片
    • 图像文件
  • 数据
    • 数据文件

以及以下文件:

主要.tex:

\documentclass{scrartcl}
\usepackage{mystyle}

\begin{document}
  \input{tex/mytex}
\end{document}

mytex.tex:

\begin{figure}[ht]
  \centering
  \input{img/myimg.tex}
\end{figure}

myimg.tex:

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\IfStandalone{
  \newcommand{\fromRoot}[1]{../dat/#1}
}{
  \newcommand{\fromRoot}[1]{./dat/#1}
}
\pgfplotstableread{\fromRoot{mydat.dat}}\datatable
\begin{document}
  \begin{tikzpicture}
    \begin{axis}[width=10cm, height=6cm]
      \addplot table[x=0,y=1]{\datatable};
    \end{axis}
  \end{tikzpicture}
\end{document}

mydat.dat:

1 0.4032
2 0.40241
3 0.38704

mystyle.sty:

\ProvidesPackage{mystyle}

\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{pgfplotstable}

据我所知,当我编译主文件 main.tex 时,mydat.dat 文件的路径应该是 ./dat。但我总是收到错误消息:

(./img/myimg.tex
! Undefined control sequence.
\pgfplotstableread@filename ^^@-\datatable

答案1

默认情况下,从包含的文件中standalone删除所有前导码(即 之前的所有内容\begin{document}.tex,这就是为什么\datatable未在主文档中定义的原因。您可以加载\usepackage[subpreambles]{standalone}main.tex包含 中的前导码mytex.tex,也可以将宏移到 之后\begin{document}

相关内容