我希望以我在示意图中经常看到的方式绘制一条线:---||---,所以一条线被两个垂直条打断(像电容器符号),两个垂直条非常接近,也略微向右倾斜。同样,向上的线也是如此。我一直在查看 tikz 手册,但我不知道该怎么做。我尝试了midway
节点装饰,但我不知道如何获得打破路径(并且倾斜)的平行线 -\|
这不是我需要的。
(目标是模拟线左侧的事物(框)沿着这条路径重复多次)。
谢谢你!
答案1
以下是使用装饰来产生两种所需风格的另一种选择:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\def\MarkLt{6pt}
\def\MarkSep{3pt}
\tikzset{
TwoMarks/.style={
postaction={decorate,
decoration={
markings,
mark=at position #1 with
{
\begin{scope}[xslant=0.2]
\draw[line width=\MarkSep,white,-] (0pt,-\MarkLt) -- (0pt,\MarkLt) ;
\draw[-] (-0.5*\MarkSep,-\MarkLt) -- (-0.5*\MarkSep,\MarkLt) ;
\draw[-] (0.5*\MarkSep,-\MarkLt) -- (0.5*\MarkSep,\MarkLt) ;
\end{scope}
}
}
}
},
TwoMarks/.default={0.5},
OneMark/.style={
postaction={decorate,
decoration={
markings,
mark=at position #1 with
{
\draw[-] (0,-\MarkLt) -- (0,\MarkLt) ;
}
}
}
},
OneMark/.default={0.5}
}
\begin{document}
\begin{tikzpicture}[>=latex]
\draw[TwoMarks,->] (0,0) -- (0,2);
\draw[TwoMarks] (0,0) -- (2,0);
\draw[TwoMarks,->] (0,0) -- (2,2);
\draw[OneMark,<-] (2,0) -- (2,2);
\draw[OneMark] (0,2) -- (2,2);
\draw[TwoMarks=0.25,->] (3,2) -- ++(2,0);
\draw[TwoMarks,->] (3,1) -- ++(2,0);
\draw[TwoMarks=0.75,->] (3,0) -- ++(2,0);
\draw[OneMark=0.25,->] (6,2) -- ++(2,0);
\draw[OneMark,->] (6,1) -- ++(2,0);
\draw[OneMark=0.75,->] (6,0) -- ++(2,0);
\end{tikzpicture}
\end{document}
特征:
使用
\MarkLt
和\MarkSep
一个通道改变双标记的线长和线之间的分离。默认情况下,装饰位于路径的中间,但使用
TwoMarks=<value>
或OneMark=<value>
可以改变位置。
答案2
节点sloped
可以使用白色背景,并将符号作为您想要使用的内容:
\documentclass{article}
\usepackage{tikz}
\tikzstyle{cont} = [
sloped,
node contents={//},
fill=white,
inner xsep=.1em,
inner ysep=0pt,
]
\begin{document}
\begin{tikzpicture}
\draw
(0, 0) -- node[pos=.5, cont] {} (2, 2)
(0, 0) -- node[pos=.5, cont] {} ++(2, 0)
-- node[pos=.5, cont] {} ++(0, 2)
-- node[pos=.5, cont] {} ++(-2, 0)
-- node[pos=.5, cont] cycle
;
\end{tikzpicture}
\end{document}
结果还显示了延续节点的白色背景:
答案3
考虑到@HeikoOberdiek 的想法,一个简单的解决方案:
\documentclass[border=4pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[par/.style={sloped,fill=white,inner sep=-.6ex}]
\draw (0, 0) -- node[par]{//} (2, 2)
(0, 0) -- node[par]{//} ++(2, 0)
-- node[sloped]{\textbar} ++(0, 2)
-- node[sloped]{\textbar} ++(-2, 0)
-- node[par]{//} cycle;
\end{tikzpicture}
\end{document}