H (高) タイミング文字の背景塗りつぶしと tikz-timing の図のサイズ

H (高) タイミング文字の背景塗りつぶしと tikz-timing の図のサイズ

タイミング文字に塗りつぶしの背景を追加したいと思います。タイミング文字には背景Hがありません (単なる線です)。背景塗りつぶしのあるDまたはU文字は、上部と下部の両方に線が追加されるため、使用したくありません。上部にのみ線を追加したいのです。以下は、MWE で私が行った作業の成果です。

テスト1.png

メタ文字 でY、 を追加しH、次に背景ノード (ただしレイヤー\timingは定義しませんbackground) を追加し、B(back) 文字を使用して を再び「上」に再描画しようとしていますHが、うまくいきません。ご覧のとおり、塗りつぶしはまだ前面にあり、遷移線と完全には揃っていません。

適切に「入力された」H文字に相当するものを取得するにはどうすればよいでしょうか?

追加の質問は、図を「フィッティング ノード」(幅と高さを持つ)として取得し\timing、マスター ノードの中央に揃えるにはどうすればよいかということです。anchor=center違いはありません (おそらく、名前付きノードtgraph1にサイズがないか、図の開始を参照しているだけであるためです)

MWE:

\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場合に限り、適切に動作しているようです。そのため、最終的には次のようになります。LL

テスト1a.png

...これは背景塗りつぶしに関して私が望んでいたことです。残念ながら、これはH単一のタイミング図だけでなく、文字のすべての動作を変更してしまいます。これがMWEです(ちょっとしたトリビアとして、これは用語 - PCM の正しい意味 (および起源) は? - Stack Overflow):

\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}

関連情報