更改“显示背景矩形”的图层

更改“显示背景矩形”的图层

tikzbackgrounds库定义framed(又名show background rectangle)绘制背景矩形。

现在,当我们有一张涉及不同层的图片(例如,一个background和一层main)时,我们希望图片的框架绘制在更深的层上(background在我们的例子中),甚至更深。然而,看起来框架显示在main层上。

此 MWE 包含一个位于框架图片背景层上的单个节点。背景矩形填充了该main层,因此该节点不再可见。

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{backgrounds}

\tikzset{background rectangle/.style={fill=blue!5}}
\pgfdeclarelayer{background}
\pgfsetlayers{background, main}

\begin{document}

\begin{tikzpicture}[framed]
    \begin{pgfonlayer}{background}
    \node {Hello world};
    \end{pgfonlayer}
\end{tikzpicture}
\end{document}

tikz 图片显示为单个填充矩形,因为节点位于背景矩形后面。


注意:我知道我可以重新排序图层以使主要内容位于底部(如,,main),但如果我可以避免用图层包围图片的重要部分,那就更好了。backgroundmymainmymain

答案1

(我有点想当然地认为backgrounds库定义了一个名为...的层background)你完全正确,库定义了一个background层,它做的第一件事是

\pgfdeclarelayer{background}%
\pgfsetlayers{background,main}%

因此,对于您的情况,声明一个middle层并执行操作可能更有意义\pgfsetlayers{background,middle, main}

在此处输入图片描述

\documentclass[border=5mm]{standalone}

\usepackage{tikz}
\usetikzlibrary{backgrounds}

\tikzset{background rectangle/.style={fill=blue!25}}
\pgfdeclarelayer{middle}
\pgfsetlayers{background,middle, main}

\begin{document}

\begin{tikzpicture}[framed]
    \node [fill=blue] {hello};
    \begin{pgfonlayer}{middle}
    \node {Hello world};
    \end{pgfonlayer}
\end{tikzpicture}
\end{document}

相关内容