H(高)时序字符的背景填充,以及 tikz-timing 的图表大小

H(高)时序字符的背景填充,以及 tikz-timing 的图表大小

我想为H计时字符添加一个填充的背景,否则它没有背景(它只是一条线)。我不想使用有背景填充的DU字符,因为它们还会在顶部和底部添加线条 - 我只希望在顶部添加一条线。这是我使用以下 MWE 所取得的进展:

测试1.png

在 metachar 中Y,我尝试添加一个H,然后添加一个背景节点(但\timing没有定义background图层),然后使用B(后面)字符再次在“顶部”重新绘制一个H,但是这不起作用——正如所见,填充仍然在前面,并且与过渡线不完全对齐。

我怎样才能获得与正确“填充”的H字符相当的字符?

另外一个问题是 - 我怎样才能将\timing图表作为“拟合节点”(具有宽度和高度),以便我可以将其与主节点的中心对齐?anchor=center没有任何区别(可能是因为命名节点tgraph1没有大小,或者它只是指图表的开头)

妇女权利委员会:

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{fit}
\usepackage{tikz-timing}

% "The modifiers ‘@’ and ‘$’ allow the user to include macros."
\tikztimingmetachar{Y}{H@{\begin{pgfonlayer}{background}}N[rectangle,fill=gray,anchor=north east,minimum width=\xunit,minimum height=\yunit,draw=none,on background layer]{}@{\end{pgfonlayer}}BH}
% \tikzset{timing/u/.style={draw=none}} \tikztimingmetachar{Y}{U{}BH} % doesn't look good
% \tikzset{timing/h/.style={draw=red}} % nope

% %http://tex.stackexchange.com/questions/47704/how-to-establish-node-anchor-like-points-on-a-tikz-rectangle-path
\makeatletter
\tikzset{ %
  fitting node/.style={
    inner sep=0pt,
    fill=none,
    draw=none,
    reset transform,
    fit={(\pgf@pathminx,\pgf@pathminy) (\pgf@pathmaxx,\pgf@pathmaxy)}
  },
  reset transform/.code={\pgftransformreset},
}
\makeatother


\begin{document}

\begin{tikzpicture}

\node[draw,minimum width=5cm,minimum height=2.5cm] (master) at (0,0) {};

\timing[very thick,
  name=tgraph1,
  fill=black,
  %timing/h/.style={fill=black},%{,cycle},
  %fitting node, % crashes w/ "! Dimension too large."
  anchor=center,
  timing/yunit=1cm,
]
    at (master.center)
  { LLL YYL HHH HHL };

\end{tikzpicture}

\end{document}

答案1

好吧,仍然不知道节点的大小和位置,希望有人能帮忙 - 但我确实在背景填充方面取得了一些进展,通过四处寻找kpsewhich tikz-timing.sty。基本上,有一些宏处理其中的转换,出于某种原因,只有\tikztimingdef{HL}会接受一个fill参数 - 它似乎工作正常,但前提是你的计时序列以 开头L并以 结尾L。所以,最终,我得到了这个:

测试1a.png

... 这正是我想要的背景填充;不幸的是,这将改变所有H角色的行为,而不仅仅是每个时间图。这是 MWE(作为一点琐事,使用它来术语 - PCM 的正确含义(和起源)? - VoidCC):

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{fit}
\usepackage{tikz-timing}

% to have the H character filled:
% (( note - if { LL LH HL H 0.9H 0.1L}:
% must split last H to 0.9H 0.1 (so to
% end on L, without drawing beyond range)
% else the fill of H is not good. ))
\tikztimingdef{HL}{
  -- ++(\slope,-\height)
  [fill=gray] \tikztiminguse{HH}{#1-\slope}
}

\begin{document}

\begin{tikzpicture}

\node[draw,minimum width=5cm,minimum height=2.5cm] (master) at (0,0) {};

\timing[very thick,
  name=tgraph1,
  fill=black,
  %timing/h/.style={fill=black},%{,cycle},
  %fitting node, % crashes w/ "! Dimension too large."
  anchor=center,
  timing/yunit=1cm,
]
    at (master.center)
  { LLL HHL HHH HHL };

\end{tikzpicture}

\end{document}

相关内容