通过将 pspicture 嵌套到 tikzpicture 中来实现外部化

通过将 pspicture 嵌套到 tikzpicture 中来实现外部化

我想使用 来外部化上千张图形pstricks(这些图形都是正文之间的内部图形),并决定使用包external的库tikz。我天真地想出了简化为以下 MWE 的代码:

\documentclass{article}

\usepackage[pdf]{pstricks}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\tikzset{external/system call={xelatex --jobname="\image" 
"\texsource"}}
\tikzset{external/optimize=false}

\usepackage{environ}
\usepackage{xargs}

\newcommandx{\NewEnvironx}[5][2,3]{%
  \expandafter\newcommandx\csname start#1\endcsname[#2][#3]{#4}%
  \NewEnviron{#1}{\csname start#1\expandafter\endcsname\BODY #5}}

\NewEnvironx{mdpicture}[1][1=]{%
    %\begin{tikzpicture}
    \begin{pspicture}[#1]%
    }
    {%
    \end{pspicture}
    %\end{tikzpicture}
    }

\begin{document}

Some text and a picture
\ $\psset{unit=0.3cm}
\begin{mdpicture}[shift=-0.16](0,0)(1,1)
\pspolygon[fillstyle=solid,fillcolor=cyan,linewidth=.5pt](0,0)(0,1)(1,1)(1,0)
\psarc[linewidth=1 pt,linecolor=blue](1,0){.5}{90}{180}
\psarc[linewidth=1 pt,linecolor=blue](0,1){.5}{-90}{0}
\end{mdpicture}$\ \ and some more text.
\end{document}

然后使用 xelatex 和 shell escape 选项进行编译。此代码本身运行良好,但取消注释上面定义的环境tikzpicture中的部分mdpicture不会产生预期的行为:tikzpictures 未排版并占据了整个页面,并且.pdf 使用该过程生成的单独文件在打开文件时会出错:

"The dimensions of this page are out of range. Page content might be truncated."

这让我相信也许我应该在里面创建一个节点tikzpicture并将其放置在某个位置,例如使用代码

\NewEnvironx{mdpicture}[1][1=]{%
    \begin{tikzpicture}
    \node at (0,0) \bgroup\begin{pspicture}[#1]%
    }
    {%
    \end{pspicture}\egroup;
    \end{tikzpicture}
    }

...但不幸的是,这产生了相同的结果:一个完全空白的页面,而不是预期的(内联)pspicture

相关内容