以下示例有效:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot table{
0 0
0.5 0.25
1 1
};
\end{axis}
\end{tikzpicture}
\end{document}
但是,我无法从外部程序获取数据。作为模拟,我们假设
printf '0 0\n0.5 0.25\n1 1\n'
打印所需的
0 0
0.5 0.25
1 1
现在我想写
\addplot table{
\input|"printf '0 0\n0.5 0.25\n1 1'"
};
并用 进行编译pdflatex --shell-escape
。我确信换行符是问题所在,而 catcode 表可能是一个解决方案,但我找不到合适的解决方案。
更新: 建议\string\n
通过可扩展的输入方式@@\input
类似于以下内容:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\makeatletter
\let\zz\@@input
\makeatother
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot table{
\zz|"printf '0 0\string\n0.5 0.25\string\n1 1'"
};
\end{axis}
\end{tikzpicture}
\end{document}
我想,我已经尝试了所有变体,,,,,\zz
但都没有起作用。\input
\n
\string\n
\string\n\string\n
答案1
根据 Christian Feuersänger(pgfplots 的作者)的说法,里面的所有内容addplot{}
都是不可扩展的。因此,不可能找到具有给定条件的解决方案。