我试图实现此解决方案scope
使用绘制透明箭头transparency group
。效果很好。
不幸的是,我的图片需要叠加在一些文本上。当将overlay
选项添加到我的tikzpicture
环境中时,scope
的内容就消失了。
还有希望实现这个目标吗?
从左到右:无overlay
(有效)、remember picture
有overlay
(无效)、remember picture
无overlay
(有效)。
\documentclass[margin=.5cm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (-1,-1) rectangle (1,1);
\fill[blue] circle (1);
\begin{scope}[transparency group, opacity=.5]
\fill[red] (.5,.5) circle (.5);
\fill[red] (-.3,-.3) circle (.7);
\end{scope}
\end{tikzpicture}
\begin{tikzpicture}[remember picture]
\coordinate (z) at (0,0);
\draw (-1,-1) rectangle (1,1);
\end{tikzpicture}
\begin{tikzpicture}[remember picture, overlay]
\fill[blue] (z) circle (1);
\begin{scope}[transparency group, opacity=.5]
\fill[red] (z) ++(.5,.5) circle (.5);
\fill[red] (z) ++(-.3,-.3) circle (.7);
\end{scope}
\end{tikzpicture}
\begin{tikzpicture}[remember picture]
\fill[blue] (z) circle (1);
\begin{scope}[transparency group, opacity=.5]
\fill[red] (z) ++(.5,.5) circle (.5);
\fill[red] (z) ++(-.3,-.3) circle (.7);
\end{scope}
\end{tikzpicture}
\end{document}
答案1
文档中描述了这个问题:tikz 必须知道图片的大小才能生成正确的框,但如果使用覆盖,则不存在此大小。第 115.4 节“透明度组”显示了一种解决方法。诀窍是做你通常不做的事情:将 tikz 图片放在节点内:
\documentclass[margin=.5cm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (-1,-1) rectangle (1,1);
\fill[blue] circle (1);
\begin{scope}[transparency group, opacity=.5]
\fill[red] (.5,.5) circle (.5);
\fill[red] (-.3,-.3) circle (.7);
\end{scope}
\end{tikzpicture}
\begin{tikzpicture}[remember picture]
\coordinate (z) at (0,0);
\draw (-1,-1) rectangle (1,1);
\end{tikzpicture}
\begin{tikzpicture}[remember picture, overlay]
\fill[blue] (z) circle (1);
\node[overlay] at (z)
{ \begin{tikzpicture}
\begin{scope}[transparency group, opacity=.5]
\fill[red] (z) ++(.5,.5) circle (.5);
\fill[red] (z) ++(-.3,-.3) circle (.7);
\end{scope}
\end{tikzpicture}};
\end{tikzpicture}
\begin{tikzpicture}[remember picture]
\fill[blue] (z) circle (1);
\begin{scope}[transparency group, opacity=.5]
\fill[red] (z) ++(.5,.5) circle (.5);
\fill[red] (z) ++(-.3,-.3) circle (.7);
\end{scope}
\end{tikzpicture}
\end{document}