Gostaria de adicionar um fundo preenchido ao H
caractere de tempo, que de outra forma não possui (é apenas uma linha). Não quero usar caracteres D
ou U
que tenham preenchimento de fundo, porque eles também adicionam linhas na parte superior e inferior - gostaria de uma linha apenas na parte superior. Foi assim que cheguei com o MWE abaixo:
No metachar Y
, estou tentando adicionar um H
, depois um nó de fundo (mas \timing
não define uma background
camada) e, em seguida, usar B
o caractere (voltar) para redesenhar um H
no "topo" novamente, mas isso não funciona - como pode ser visto, os preenchimentos ainda estão na frente e não estão totalmente alinhados com as linhas de transição.
Como eu poderia obter um equivalente a um H
caractere devidamente "preenchido"?
Uma pergunta adicional é: como eu poderia obter o \timing
diagrama como um "nó de ajuste" (com largura e altura), para poder alinhá-lo centralizado no nó mestre? anchor=center
não faz nenhuma diferença (provavelmente porque o nó nomeado tgraph1
não tem tamanho ou apenas se refere ao início do diagrama)
O 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}
Responder1
Bem, ainda não sei sobre o tamanho e a posição do nó, espero que alguém ajude com isso - mas cheguei a algum lugar em relação ao preenchimento de plano de fundo, fuçando em kpsewhich tikz-timing.sty
. Basicamente, existem algumas macros que tratam de transições e, por algum motivo, apenas aceitarão \tikztimingdef{HL}
um fill
parâmetro - e parece estar funcionando corretamente, mas apenas enquanto sua sequência de tempo começar com an L
e terminar com an L
. Então, eventualmente, acabo com isto:
... que é o que eu queria em relação ao preenchimento de fundo; infelizmente isso mudará todo o comportamento dos H
personagens, não apenas um único diagrama de tempo. Aqui está o MWE (como uma curiosidade, usei isso paraterminologia - Significado adequado (e origem) do PCM? - Estouro de pilha):
\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}