我正在尝试用 绘制一个箭头opacity=.35
,但形状重叠,导致不透明度堆叠。
我尝试了解决方案如何在 TikZ 中绘制半透明箭头而没有内部重叠?。
但它对我来说不起作用,因为我正在使用tikzpicture
选项overlay
。
平均能量损失:
\documentclass[varwidth, border=50]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\tikzset{->/.style={ultra thick, -{.Latex}, blue}}
\begin{tikzpicture}[overlay]
\draw[->, opacity=.35] (0,.5) -- (1,0.5);
\begin{scope}[opacity=.35]
\draw[->] (0,0) -- (1,0);
\end{scope}
\begin{scope}[transparency group, opacity=0.5]
\draw[->, red] (0,-0.5) -- (1,-0.5);
\end{scope}
\end{tikzpicture}
\end{document}
第三个箭头没有显示。
事实上,当使用overlay
和transparency group
时,示波器的任何内容都不会显示。当我删除其中任何一个选项时,示波器内容再次可见。
为什么范围不可见,以及我怎样才能使其可见?
编辑:显然,这个问题是已知的,手册建议将内容放在\transparencygroup
节点内的 tikzpicture 中作为解决方法。像这样:
\node[left] at (1.15,-0.5) {
\begin{tikzpicture}
\pgfsetfillopacity{0.35}
\pgftransparencygroup
\draw[->, red] (0,-0.5) -- (1,-0.5);
\endpgftransparencygroup
\end{tikzpicture}
};
这种解决方法的主要缺点是,它需要手动调整位置,这有点违背了使用 TikZ 的目的。有人知道更好的方法吗?
答案1
作为手册各州之间transparency group
相处overlay
并不融洽:
请注意,当创建透明度组时,Ti钾Z 必须正确确定组内材料的大小。通常,这没有问题,但是当你使用诸如
overlay
或transform canvas
类的东西时,可能会出现麻烦。在这种情况下,请咨询第115条在这种情况下如何避免这个问题。
第 115 节建议将整个图表放在另一个 TikZ 图片内的节点中,但这不是必需的。您可以使用pgfinterruptboundingbox
。
在这个环境中,PGF/TikZ 会跟踪边界框(以及transparency group
起作用),但在最后,会恢复环境之前存在的边界框(这里是空的)。
代码
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\tikzset{->/.style={ultra thick, -{.Latex}, blue}}
\begin{tikzpicture}
\begin{pgfinterruptboundingbox}
\draw[->, opacity=.35] (0,.5) -- (1,0.5);
\scoped[opacity=.35]
\draw[->] (0,0) -- (1,0);
\scoped[transparency group, opacity=0.5]
\draw[->, red] (0,-0.5) -- (1,-0.5);
\end{pgfinterruptboundingbox}
\end{tikzpicture}
\end{document}