我在使用 tikz-timing 正确获取节点位置时遇到了一些问题。我希望双箭头线位于中心脉冲的两侧,而不是从下到上。另外,我想将标签“tw”放置在双箭头线的中心下方。
\documentclass{article}
\usepackage{tikz-timing}
\begin{document}
\begin{tikztimingtable}[timing/slope=.005, yscale=2]
Comparator Out & 2L 0.8H8.2L 0.8H 11.2L\\
One-Shot Out & 2L N(A1) 4H N(A2) 5L4H 8L\\
\extracode
%\horlines[] {0,1,5}
\tableheader[]{}{Case3: Two input pulses, far apart}
\draw [<->] (A1.center) -- (A2.south);
\node[] at (A1) {tw};
\end{tikztimingtable}
\end{document}
答案1
中有一些预定义的行锚点tikztimingtable
,参见手册中的图 2.1 tikz-timing
。你可以使用其中一个mid
锚点row2
与 TikZ 的坐标规范相结合(a |- b)
,从而绘制双箭头如下
\draw [<->] (A1|-row2.mid) --node[below]{tw} (A2|-row2.mid);
坐标是一条通过 的垂直线与一条通过 的水平线(A1|-row2.mid)
的交点,即它具有前者的 x 坐标和后者的 y 坐标。A1
row2.mid
\documentclass{article}
\usepackage{tikz-timing}
\begin{document}
\begin{tikztimingtable}[timing/slope=.005, yscale=2]
Comparator Out & 2L 0.8H8.2L 0.8H 11.2L\\
One-Shot Out & 2L N(A1) 4H N(A2) 5L4H 8L\\
\extracode
%\horlines[] {0,1,5}
\tableheader[]{}{Case3: Two input pulses, far apart}
\draw [<->] (A1|-row2.mid) --node[below]{tw} (A2|-row2.mid);
\end{tikztimingtable}
\end{document}
旧答案
我不太熟悉tikz-timing
,所以可能有更好的方法,但这里有一个使用calc
库来计算脉冲垂直线的中点的方法。
快速解释一下($(A1|-A2)!0.5!(A1)$)
。($ ... $)
加载calc
库意味着美元符号之间的是某种计算,如手册中所述。 (A1|-A2)
是一个坐标规范,它定义了 x 坐标为A1
、y 坐标为 的坐标A2
,即脉冲的左上角。最后,语法$(<first coord>)!<fraction>!(<second coord>)$
意味着计算的结果是<fraction>
从第一个坐标到第二个坐标的坐标。
要将节点放置在线下方,请将其放置在路径中的node[below]{..}
紧后面--
,如下例所示。
\documentclass{article}
\usepackage{tikz-timing}
\usetikzlibrary{calc}
\begin{document}
\begin{tikztimingtable}[timing/slope=.005, yscale=2]
Comparator Out & 2L 0.8H8.2L 0.8H 11.2L\\
One-Shot Out & 2L N(A1) 4H N(A2) 5L4H 8L\\
\extracode
%\horlines[] {0,1,5}
\tableheader[]{}{Case3: Two input pulses, far apart}
\draw [<->] ($(A1|-A2)!0.5!(A1)$) -- node[below] {tw} ($(A2|-A1)!0.5!(A2)$);
\end{tikztimingtable}
\end{document}