我想使用 来外部化上千张图形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
不会产生预期的行为:tikzpicture
s 未排版并占据了整个页面,并且.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
。