独立构建模式忘记命令

独立构建模式忘记命令

我想知道是否可以给出一个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。我认为这接近建议的解决方案这里。但是当我使用构建模式时它会忘记这个命令,从我对这个模式的理解来看这似乎很自然。

因此,我想知道是否有可能解决这个问题并保留此结构以及模式和的使用standalonebuild也许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}

相关内容