使用 \addplot 中的 \input 自动绘图

使用 \addplot 中的 \input 自动绘图

tikzpicture我正在尝试使用外部生成的数据绘制一些图形。我想像pgfplots这样在里面画一条简单的线:

\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\centering
\begin{tikzpicture}[domain=0:10]
    \begin{axis}
        \addplot[blue] (x, 5 * x + 7);
    \end{axis}
\end{tikzpicture}
\end{document}

但我想在单独的文件中定义绘制的方程。这行不通:

\addplot[blue] (x, \input{math.txt});

math.txt仅包含5 * x + 7)。以下也不行:

\addplot[blue] (x, \protected\input{math.txt});

或这个:

\addplot[blue] \input{math.txt}

math.txt包含(x, 5 * x + 7);)。

在所有情况下,我都会收到类似

! Argument of \pgfplotsforeachungrouped@ has an extra }.

这对我来说并不是特别有启发意义。

有人知道如何完成这个任务吗?除了用 Perl 或其他什么东西包装整个任务?显然,这个input命令并不像我想象的那么低级。

以防万一,我在运行 MiKTeX 2.9 的 Windows 7 机器上。

答案1

您可以使用以下方法如何创建一个宏,当定义宏时,该宏可以读取文件的内容?将文件内容存储在宏中,然后可以在命令中使用\addplot

\documentclass{article}
\usepackage{pgfplots}
\usepackage{filecontents}
\usepackage{catchfile}

\begin{filecontents*}{math.txt}
5 * x + 7
\end{filecontents*}


\begin{document}

\CatchFileDef{\foo}{math.txt}{}

\centering
\begin{tikzpicture}[domain=0:10]
    \begin{axis}
        \addplot[blue] (x, \foo);
    \end{axis}
\end{tikzpicture}
\end{document}

相关内容