TikZ:使用选项覆盖时,范围的内容在 tikzpicture 中不可见

TikZ:使用选项覆盖时,范围的内容在 tikzpicture 中不可见

我正在尝试用 绘制一个箭头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}

第三个箭头没有显示。
事实上,当使用overlaytransparency 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并不融洽:

请注意,当创建透明度组时,TiZ 必须正确确定组内材料的大小。通常,这没有问题,但是当你使用诸如overlaytransform 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}

输出

在此处输入图片描述

相关内容