我想知道是否可以给出一个includestandalone
在构建 pdf 时会记住的命令。
再解释一下,我喜欢将所有额外数据(如standalone
子文件)放在子文件夹中。我想使用pgfplots
子文件夹中的 CSV 文件本身(来自主文件夹)进行绘图。因此结构如下:
main.tex
Supplies/
|-standaloneplot.tex
|-Data/
|-file.csv
这些文件是file.csv
:
# Coord_X, Coord_Y
0.0 , 1.0
1.0 , 2.0
这standaloneplot.tex
:
\documentclass[]{standalone}
\providecommand{\PathS}{./}
\usepackage{tikz} %
\usepackage{pgfplots} %
\pgfplotsset{compat=newest} %
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xlabel={Space }, %
ylabel={\PathS }
]
\addplot[ color=blue, ]
table[x=Coord_X, y=Coord_Y, ignore chars={\#}, col sep=comma]
{\PathS \detokenize{Data/file}.csv};
\end{axis}
\end{tikzpicture}
\end{document}
以及main.tex
:
\documentclass{article}
\providecommand{\PathS}{./Supplies/}
\usepackage{standalone} %
\usepackage{tikz} %
\usepackage{pgfplots} %
\pgfplotsset{compat=newest} %
\begin{document}
the path is \PathS
\begin{figure}
\includestandalone[mode=build, width=0.5\linewidth]{\PathS standaloneplot.tex}
\caption{test}
\label{lab}
\end{figure}
\end{document}
我通过在主文件中定义一个命令来处理此结构standalone
。当我在模式中包含独立文件时,它可以正常工作tex
。我认为这接近建议的解决方案这里。但是当我使用构建模式时它会忘记这个命令,从我对这个模式的理解来看这似乎很自然。
因此,我想知道是否有可能解决这个问题并保留此结构以及模式和的使用standalone
。build
也许pgfplots
有一种方法可以在构建独立文件之前不会忘记命令,或者有一种方法可以让独立文件更像 tex 模式。
你认为这可能吗?
答案1
如果使用mode=build
,则独立文件将单独编译。因此,主文件中定义的命令在独立文件中是未知的。但是可以通过像这样调用编译器在 TeX 文件之前定义命令:
pdflatex <some options> '\newcommand{\SomeMacro}{content}\input{texfile}'
然后\SomeMacro
在中定义texfile.tex
。
standalone
提供设置构建命令的选项build
(请参阅手册的第 5.4 节和表 3)。这里command
设置整个命令(默认情况下:)build={command=\latex\space\latexoptions\space\file}
。最后一部分(\file
,包含给定的文件名\includestandalone
)必须在编译文件之前更改为定义宏。必要的引号由提供\quote
,因此这与所使用的操作系统无关。并且必须使用保护某些命令以防止扩展\string
。因此,通过编写
build={command={\latex\space\latexoptions\space\quote\string\newcommand{\string\PathS}{\PathS}\string\input{\file}\quote}}
你可以实现你的目标。原则上,你可以通过这种方式定义许多命令,\string\newcommand{\string...}{...}
只要根据需要重复即可。请注意,你必须保护要定义的命令,但另一方面,你可以使用它\PathS
而不是重复路径。
该选项可以与或 与 一起build
使用,位于文档中的某处或序言中。includestandalone
\standaloneconfig{...}
备注:在日志文件main.tex
末尾附近有一行以 开头,其中runsystem(
包含用于构建绘图的命令。这对于检查build
选项是否设置正确很有用。
这是新的 main.tex(其他文件保持不变):
\documentclass{article}
\providecommand{\PathS}{./Supplies/}
\usepackage{standalone} %
\usepackage{tikz} %
\usepackage{pgfplots} %
\pgfplotsset{compat=newest} %
% set option build in the preamble, good for global path
\standaloneconfig{build={command={\latex\space\latexoptions\space\quote\string\newcommand{\string\PathS}{\PathS}\string\input{\file}\quote}}}
\begin{document}
% set option build somewhere in the document, good if path changes every couple of figures
%\standaloneconfig{build={command={\latex\space\latexoptions\space\quote\string\newcommand{\string\PathS}{\PathS}\string\input{\file}\quote}}}
the path is \PathS
\begin{figure}
% use option build directly, good for individual paths
%\includestandalone[build={command={\latex\space\latexoptions\space\quote\string\newcommand{\string\PathS}{\PathS}\string\input{\file}\quote}},mode=build, width=0.5\linewidth]{\PathS standaloneplot}
\includestandalone[mode=build, width=0.5\linewidth]{\PathS standaloneplot}
\caption{test}
\label{lab}
\end{figure}
\end{document}