我的项目中有以下文件夹结构:
- 主文本
- 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}
。