我正在尝试修改一个旧文档,其中包含使用该环境创建的一堆图像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
得很好,那就值得一试。如果您能想出一个方案,请告诉我们。