在 pgfplots/tikz 中使用带换行符的 shell-escape 输出

在 pgfplots/tikz 中使用带换行符的 shell-escape 输出

以下示例有效:

\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{}都是不可扩展的。因此,不可能找到具有给定条件的解决方案。

相关内容