pgf-umlsd 和 externalize

pgf-umlsd 和 externalize

最好的解决办法是什么pgf-umlsd和外部化兼容?

后者期望在第一个提供的环境\end{tikzpicture}中“隐藏”的内容sequencediagram。我想我可以将环境的开始和结束转换为两个命令,在环境的开始和结束时明确调用这两个命令tikzpicture,这两个命令原本是序列图,但它无法在pgf-umlsd.sty更新(即更改环境定义)后继续存在,需要重新进行复制粘贴。

有没有什么巧妙的方法可以以尽可能少的努力解决这个问题并避免任何复制粘贴?

是否应该说服软件包作者提供一些类似开始和结束的命令以供在tikzpicture环境内使用?

\documentclass{minimal}
\usepackage[paperwidth=48mm,paperheight=36mm,margin=0pt]{geometry}
\usepackage{parskip}
\usepackage{tikz}
\usepackage{pgf-umlsd}
\usetikzlibrary{external}
%\tikzexternalize
% uncommenting above line gives following error:
% ! File ended while scanning use of \tikzexternal@laTeX@collect@until@end@tikzpicture.
\begin{document}
\null\vfill
\begin{sequencediagram}
\newthread{a}{A}
\newinst[1]{b}{B}
\begin{call}
 {a}{call}
 {b}{return}
\end{call}
\end{sequencediagram}
\vfill
\end{document}

上述文件的输出


让我们假设作者提供了三个宏(或者:我们改变了pgf-umlsd.sty我们自己):

  • \sdinit- 开始前需要声明层数tikzpicture
  • \sdbegin- 序列图标题,用于tikzpicture
  • \sdend- 序列图页脚,用于tikzpicture

修改以上列表以使用它们:

\sdinit
\begin{tikzpicture}
\sdbegin
...
\sdend
\end{tikzpicture}

让人externalize开心,但输出却不同。

修改后的文档的输出

最右侧框阴影的右侧部分消失了。为什么?最好的解决方法是什么?

相关内容