我想為H
定時字元添加填充背景,否則該字元沒有填充背景(它只是一行)。我不想使用具有背景填充的D
或U
字符,因為它們還在頂部和底部添加線條 - 我只想在頂部添加線條。這是我使用 MWE 的進展:
在元字元中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
。所以,最終我得出這樣的結論:
……這就是我想要的背景填充;不幸的是,這將改變角色的所有行為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}