我想绘制曼彻斯特代码,并且需要箭头来更好地显示信号内的下降和上升标志,如下所示:
在 LaTeX 中,可以使用包timing
。是否可以使用包在时序图中绘制箭头timing
?如果不行,还有什么其他方法可以实现?
答案1
有一个tikz
基于 的用于绘制时序图的包,称为tikz-timing
。使用它,逻辑级别可以用字母表示,例如 H 表示高,L 表示低。对于您的情况,我建议将时钟字符 C 与库一起使用clockarrows
。我知道您的信号不是时钟,但此包中的其他信号没有箭头。C 字母每次使用时都会改变其逻辑级别。小写时其长度只有宽度的一半。您的信号可以简单地写成cCCccCccCCc
,除了我刚刚发现的一些起始位置问题。
\documentclass{article}
\usepackage{tikz-timing}
\usetikztiminglibrary{clockarrows}
\begin{document}
\begin{tikztimingtable}[scale=2,timing/.cd,
c/dual arrows,c/arrow tip=latex,
c/arrow pos=.7,
metachar={v}{[timing/c/no arrows]c[timing/c/dual arrows]},
slope=0]
\shortstack[l]{Manchester-Codierung:\\(bi-phase)}
&h 0c0h0l 0c CCcvCcvCCc \\
\extracode
\begin{pgfonlayer}{background}
\vertlines[help lines,brown]{}
\foreach [count=\x] \b in {1,0,1,1,0,0,1,0} {
\node [below,font=\sffamily\bfseries\tiny,inner ysep=2pt] at (\x-.5,0) {\b};
}
\end{pgfonlayer}
\end{tikztimingtable}
\end{document}
答案2
你可以用 tikz 做你想做的事。我使用以下代码绘制了一张与示例中类似的粗略图片
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
%red vertical lines
\foreach \x in {0,1,...,8} {
\draw[color=red] (\x,0.5) -- +(0,3); };
%black lines with arrows
\draw[very thick,->] (0,2.5) -- +(0.5,0) -- +(0.5,-0.5);
\draw[very thick,->] (0.5,2) -- +(0,-0.5) -- +(1,-0.5) -- +(1,0);
\draw[very thick,->] (1.5,2) -- +(0,0.5) -- +(1,0.5) -- +(1,0);
\draw[very thick,->] (2.5,2) -- +(0,-0.5) -- +(0.5,-0.5) -- +(0.5,0.5) -- +(1,0.5) --+(1,0);
\draw[very thick,->] (3.5,2) -- +(0,-0.5) -- +(1,-0.5) -- +(1,0);
\draw[very thick,->] (4.5,2) -- +(0,0.5) -- +(0.5,0.5) -- +(0.5,-0.5) -- +(1,-0.5) -- +(1,0);
\draw[very thick,->] (5.5,2) -- +(0,0.5) -- +(1,0.5) -- +(1,0);
\draw[very thick,->] (6.5,2) -- +(0,-0.5) -- +(1,-0.5) -- +(1,0);
\draw[very thick] (7.5,2) -- +(0,0.5) -- +(0.5,0.5);
%numbers
\path (0.5,1) node{1};
\path (1.5,1) node{0};
\path (2.5,1) node{1};
\path (3.5,1) node{1};
\path (4.5,1) node{0};
\path (5.5,1) node{0};
\path (6.5,1) node{1};
\path (7.5,1) node{0};
\end{tikzpicture}
\end{document}
产生
当然,上面的代码效率不高,可以改进,但这会让你了解 TiKz 的工作原理,这样如果你无法找到具有时间解决方案,就可以用这个来解决问题。