我有以下代码,但节点总是被垂直线隐藏。我该如何解决这个问题(world 和 first 被垂直线隐藏)?
\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{calc}
%opening
\title{}
\author{}
\begin{document}
\maketitle
\begin{abstract}
\end{abstract}
\section{}
\pgfdeclarelayer{-1}
\pgfsetlayers{-1,main}
\tikzset{zlevel/.style={%
execute at begin scope={\pgfonlayer{#1}},
execute at end scope={\endpgfonlayer}
}}
\tikzset{every picture/.style=thick}
\begin{figure}[h]
\begin{tikzpicture}[
scale=0.6, every node/.style={scale=0.6}
,every node/.append style={very thick,rounded corners=0.1mm}
]
%\begin{pgfonlayer}{tp} % select the background layer
\node[draw,rectangle] (Server) at (9,0) {Remote};
\begin{scope}[zlevel=main]
\node[draw=blue!50,rectangle,thick] (Network) at (0,-1) {first};
\end{scope}
\node[draw,rectangle] (User) at (0,0) {brocken};
\begin{scope}[zlevel=-1]
\draw [] (User) -- (Network)--(0,-10);
\end{scope}
%obj1
\begin{scope}[zlevel=main]
\node[draw=blue!50,rectangle,thick] (Network) at (0,-2.5) {world};
\end{scope}
%\end{pgfonlayer}
\node[draw=blue!60, rectangle,thick] (Network) at (0,-4.5) {hallo};
\begin{scope}[zlevel=-1]
\draw [very thick] (Server)--++(0,-10);
\end{scope}
\end{tikzpicture}
\end{figure}
\end{document}
答案1
我确信这个问题有更好的解决方案,但您可以先画出线条(如评论中所建议的那样),然后用白色填充矩形。
\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\pgfdeclarelayer{-1}
\pgfsetlayers{-1,main}
\tikzset{zlevel/.style={%
execute at begin scope={\pgfonlayer{#1}},
execute at end scope={\endpgfonlayer}
}}
\tikzset{every picture/.style=thick}
\begin{figure}[h]
\begin{tikzpicture}[
scale=0.6, every node/.style={scale=0.6},every node/.append style={very thick,rounded corners=0.1mm}]
\draw (0,-1) -- (0,0)--(0,-10);
\node[draw,rectangle, fill=white] (Server) at (9,0) {Remote};
\begin{scope}[zlevel=main]
\node[draw=blue!50,rectangle,thick, fill=white] (Network) at (0,-1) {first};
\end{scope}
\node[draw,rectangle,fill=white] (User) at (0,0) {brocken};
%obj1
\begin{scope}[zlevel=main, fill=white]
\node[draw=blue!50,rectangle,thick, fill=white] (Network) at (0,-2.5) {world};
\end{scope}
\node[draw=blue!60, rectangle,thick, fill=white] (Network) at (0,-4.5) {hallo};
\begin{scope}[zlevel=-1]
\draw [very thick, fill=white] (Server)--++(0,-10);
\end{scope}
\end{tikzpicture}
\end{figure}
\end{document}
答案2
默认情况下,nodes
(以及图形)没有背景。
我引用该手册第 126 页的内容:
12.2.4 添加背景
默认情况下,图片没有任何背景,也就是说,透明的在所有未绘制任何内容的部分上。
我引用该手册第 214 页的内容:
17.2 节点及其形状
在最简单的情况下,一个节点是只是放置在某个坐标处的文本。但是,节点能周围也画有边框或者具有更复杂的背景和前景。事实上,有些节点根本没有文本,而仅由背景组成。
这是从手册第 1081 页复制的图示示例,其中我添加了两个节点。
它在前景层有一个节点,称为前景。我添加了两个节点
- 主要的放置在主层上
- 和后退放置在背景层上。
您可以看到所有节点都显示了下面绘制的所有内容,因为它们的背景是透明的。
因此,正如@Sito 所说,你必须添加一个背景到节点,以便下面没有任何东西可以显示出来。