图片命令自动转换为 tikz-pgf

图片命令自动转换为 tikz-pgf

我正在尝试修改一个旧文档,其中包含使用该环境创建的一堆图像picture/pict2e
问题是我需要改进这些图像,但在这些旧环境中添加一些新功能有时需要大量工作,而在 TikZ 中只需几个参数即可。

那么,问题是:有没有办法将picture图像自动转换为 TikZ/pgf图像?

答案1

只是总结一下 Joseph 的“不”,并加上一个“但是”。如果你愿意花比简单地翻译你不幸继承的代码更长的时间,这里有一种方法。

首先,您需要为所有 pict2e 宏编写吞噬宏,其中还包括大量来自原始图片环境的宏。您如何做到这一点?例如,要吞噬宏,\picture您可以使用:

\def\picture(#1,#2)(#3,#4){%
  \def\storepiconevar{#1}
  \def\storepictwovar{#2}
  \def\storepictthreevar{#3}
  \def\storepicfourvar{#4}
  % starts the tikZ environment
  \tikzpicture
}
  % ends the tikZ environment
\def\endpicture{\endtikzpicture}

对于某些,您可能能够在两者之间开发翻译宏,例如下面的简单示例(为了简单起见,不显示任何实际计算)。

 \def\line(#1,#2)#3{\draw(#2,#1)--(#1,#1);}

在 MWE 中尝试一下:

\documentclass{article}
\usepackage{tikz}
\def\picture(#1,#2)(#3,#4){%
  \def\storepiconevar{#1}
  \def\storepictwovar{#2}
  \def\storepictthreevar{#3}
  \def\storepicfourvar{#4}
  % starts the tikZ environment
  \tikzpicture
}
\def\endpicture{\endtikzpicture}
\def\line(#1,#2)#3{\draw(#2,#1)--(#1,#1);}
\begin{document}
\unitlength=0.5cm
\begin{picture}(0,0)(2,0)
  \line(1,0){2}
\end{picture}
\end{document}

如果您想同时学习这两种方法,pict2e并且学tikZ得很好,那就值得一试。如果您能想出一个方案,请告诉我们。

相关内容