tikz-timing 信号线的样式

tikz-timing 信号线的样式

我正在使用该tikz-timing包,并希望应用任一snakes类型的样式,或者说double将双线应用于信号线。请考虑以下示例:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{arrows,chains,matrix,positioning,scopes,snakes,decorations.markings}
\usepackage{tikz-timing}
\usetikztiminglibrary[rising arrows]{clockarrows} 
\usetikztiminglibrary{advnodes}

\usepackage[graphics,tightpage,active]{preview}
\PreviewEnvironment{tikzpicture}
\newlength{\imagewidth}
\newlength{\imagescale}

\begin{document}

\begin{tikztimingtable}[timing/nodes/advanced,]
  %
  % start timing diagram
  %
  \textcolor{green}{ClockA} & [green] H N(ca01) 
    C N(ca02) C N(ca03) C N(ca04) C N(ca05) C N(ca06) C N(ca07) C N(ca08) \\ %
  \textcolor{orange}{ClockB} & [orange,snake=zigzag,double] L N(cb01) 
    C N(cb02) C N(cb03) C N(cb04) C N(cb05) C N(cb06) C N(cb07) C N(cb08)  \\ %
  %
  % end timing diagram
  %
  % there must NOT be an uncommented line before \extracode!
  %
\extracode
  \tablerules
  %\tablegrid
  \begin{background}[line width=0.35pt]
    \draw[snake=zigzag,double] (ca01) -- (cb01) ; 
  \end{background}
\end{tikztimingtable}

\end{document}

得到以下时序图:

示例图像

显然,snakesdouble适用于普通线路,但不适用于信号。

是否也可以通过这种方式来“设计”信号图线条?

答案1

在 中对线条装饰的支持非常有限tikz-timing。原因是计时符号不是绘制为一条绘图路径,而是使用多条路径。因此,大多数情况下,使用新的计时字符时,以前的样式设置都会丢失。这里的LH字符不同,实际上是在一条路径中绘制的。

最开始的第一个样式选项是整个行的全局选项,但不幸的是,TikZ 似乎需要将许多装饰样式作为实际\draw命令的本地选项。因此您的代码无法按预期工作。一些样式,例如line width明确地从一个绘图路径复制到下一个,tikz-timing但这对装饰没有帮助。

但是,您可以将某些样式添加到计时字符的样式定义中。这些样式被称为/tikz/timing/<char>并且可以修改,如下所示。请注意,目前没有HL字符的样式。我可能会在将来更改这一点,也许还会添加一种每个字符使用的样式。这应该就是这样。

\documentclass{standalone}
\renewcommand{\PreviewBorder}{2mm}
\usepackage{tikz}
\usetikzlibrary{snakes}
\usepackage{tikz-timing}
\tikzset{timing/c/.append style={snake=zigzag}}
\tikzset{timing/t/.append style={double}}
\tikzset{timing/d/.append style={snake=zigzag}}
\begin{document}
\begin{tikztimingtable}
    A &  5{hl} 5{C} 2D{A} \\
    B &  5{hl} 5{T} 2D{B} \\
\end{tikztimingtable}
\end{document}

结果


我现在对 做了一些小改动,以tikz-timing提供一种timing/every char用于每个计时字符的样式。第二种样式timing/every bg用于每个背景(例如U)。HL字符现在也有自己的样式。但是它们不会开始新的绘制路径,因此HL组合将使用最后使用的样式进行绘制。

我必须进一步测试它,然后才能将其发布到 CTAN。请随意从 SVN 存储库下载它。只需下载离散余弦变换移民局文件,然后运行 ​​INS 文件latex以提取包文件。如果您发现此版本有任何问题,请随时通过 PM 与我联系。

新的样式可以这样使用,并且可以与装饰一起使用:

\documentclass{standalone}
\renewcommand{\PreviewBorder}{2mm}
\usepackage{tikz}
\usetikzlibrary{snakes}
\usepackage{tikz-timing}
\tikzset{timing/every char/.append style={double}}
\begin{document}
\begin{tikztimingtable}
    A &  5{hl} 5{C} 2D{A} Z \\
    B &[timing/every char/.style={snake=zigzag}]  5{hl} 5{T} 2D{B} Z \\
\end{tikztimingtable}
\end{document}

新结果

相关内容