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}
注意:我知道我可以重新排序图层以使主要内容位于底部(如,,main
),但如果我可以避免用图层包围图片的重要部分,那就更好了。background
mymain
mymain
答案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}