有条件/逐步显示图表

有条件/逐步显示图表

我想通过多个阶段展示我的图。例如,我想首先显示蓝色图,然后显示蓝色和红色图,最后显示所有三个图,而无需多次复制文件并注释掉代码。

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}

这是最终结果,我可以选择性地打开给定图中的特定曲线。

在此处输入图片描述

相关内容