我想通过多个阶段展示我的图。例如,我想首先显示蓝色图,然后显示蓝色和红色图,最后显示所有三个图,而无需多次复制文件并注释掉代码。
main.tex
\documentclass[border=2mm]{standalone}
\usepackage{pgfplots}
\begin{document}
Describing plot v1.
\input{plot}. % v1
Describing plot v2.
\input{plot}. % v2
Describing plot v3.
\input{plot}. % v3
\end{document}
plot.tex
\begin{tikzpicture}
\begin{axis}
\addplot+ [domain=0:360, samples=101, mark=none] {sin(1*x)/1}; % show in v1,2,3
\addplot+ [domain=0:360, samples=101, mark=none] {sin(2*x)/2}; % show in v2,3
\addplot+ [domain=0:360, samples=101, mark=none] {sin(3*x)/3}; % show in v3
\end{axis}
\end{tikzpicture}
我猜应该有一种方法可以通过 发送参数\input{}
,然后在 中使用条件语法tikzpicture
。我只是不确定如何在 LaTeX 中做到这一点。
答案1
这就是你要去的地方吗?它会产生三页,每页都有不同的情节。您可以使用 的 [page=...] 选项\includegraphics
。
顺便说一句,您可能更喜欢ifthen
包协议。我一般不介意。
\documentclass[border=2mm,multi={tikzpicture}]{standalone}
\usepackage{pgfplots}
\begin{document}
\foreach \x in {1,2,3} {\begin{tikzpicture}
\begin{axis}
\addplot+ [domain=0:360, samples=101, mark=none] {sin(1*x)/1}; % show in 1,2,3
\ifnum\x>1 \addplot+ [domain=0:360, samples=101, mark=none] {sin(2*x)/2};\fi % show in 2,3
\ifnum\x>2 \addplot+ [domain=0:360, samples=101, mark=none] {sin(3*x)/3};\fi % show in 3
\end{axis}
\end{tikzpicture}}
\end{document}
答案2
事实证明,我真正想要的是 TeX 的标记机制(我第一次发布问题时甚至不知道有这个东西)。其行为的文档可以在LaTeX 维基百科。
因此,情况main.tex
如下。
\documentclass{minimal}
\usepackage{pgfplots}
\begin{document}
% Deactivate indentation
\setlength{\parindent}{0pt}
% Defining flags
\newif\ifA\newif\ifB\newif\ifC
% Activate A only
Describing plot A.
\Atrue\input{plot} % A
% Activate also B
Describing plot A \& B.
\Btrue\input{plot} % A & B
% Activate also C
Describing plot A \& B \& C.
\Ctrue\input{plot} % A & B & C
\end{document}
这是plot.tex
。
\vspace{1ex}
\begin{tikzpicture}
\begin{axis}[width=5cm]
\pgfplotsset{
every axis plot post/.style={domain=0:360, samples=101, mark=none}
}
\ifA\addplot {sin(1*x)/1};\fi
\ifB\addplot {sin(2*x)/2};\fi
\ifC\addplot {sin(3*x)/3};\fi
\end{axis}
\end{tikzpicture}
这是最终结果,我可以选择性地打开给定图中的特定曲线。