H(高)時序字元的背景填充,以及 tikz 時序的圖表大小

H(高)時序字元的背景填充,以及 tikz 時序的圖表大小

我想為H定時字元添加填充背景,否則該字元沒有填充背景(它只是一行)。我不想使用具有背景填充的DU字符,因為它們還在頂部和底部添加線條 - 我只想在頂部添加線條。這是我使用 MWE 的進展:

測試1.png

在元字元中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參數 - 並且它似乎工作正常,但前提是您的時序序列以 an 開頭L並以 結束L。所以,最終我得出這樣的結論:

測試1a.png

……這就是我想要的背景填充;不幸的是,這將改變角色的所有行為H,而不僅僅是每個時序圖。這是 MWE(作為一點瑣事,用它來術語 - PCM 的正確含義(和起源)? - 堆疊溢位):

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

相關內容