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}