将外部程序的路径与 tikz 中的 \draw 结合起来

将外部程序的路径与 tikz 中的 \draw 结合起来

我有一个外部程序 bezierplot,它返回 tikz 路径。例如,bezierplot 'x^2'返回(-2.24,5) parabola bend (0,0) (2.24,5);分号。现在我想在 LaTeX 文档 (pdflatex) 中使用 shell-escape/write18 调用该程序,在文本模式下,它可以按预期工作:

\documentclass{article}
\usepackage{tikz}
\begin{document}
\input{|"bezierplot 'x^2' "} % this works: (-2.24,5) parabola bend (0,0) (2.24,5);
\begin{tikzpicture}
\draw \input{|"bezierplot 'x^2' "} % this does not work
\end{tikzpicture}
\end{document}

不幸的是,它在 tikzpicture 中不起作用:! Package tikz Error: Giving up on this path. Did you forget a semicolon? 似乎分号不是问题(例如,我在程序中删除了它bezierplot并使用了它\draw \input{|"bezierplot 'x^2' "};)。当我更改程序bezierplot以使其返回时\draw (-2.24,5) parabola bend (0,0) (2.24,5);,我就可以成功使用\input{|"bezierplot 'x^2' "}

我错过了什么要点?如何强制 tikz\draw\input{|"bezierplot 'x^2' "}and连接;

答案1

在此处输入图片描述

echo在这里用作返回路径的外部程序。

\documentclass{article}
\usepackage{tikz}
\makeatletter
\let\zz\@@input
\makeatother
\begin{document}

\begin{tikzpicture}
\draw \zz|"echo '(-2.24,5) parabola bend (0,0) (2.24,5)'" ;
\end{tikzpicture}
\end{document}

相关内容