Relleno de fondo para el carácter de sincronización H (alto) y tamaño del diagrama para la sincronización de tikz

Relleno de fondo para el carácter de sincronización H (alto) y tamaño del diagrama para la sincronización de tikz

Me gustaría agregar un fondo relleno al Hcarácter de sincronización, que de otro modo no lo tendría (es solo una línea). No quiero usar los caracteres Do Uque tienen un relleno de fondo, porque también agregan líneas tanto en la parte superior como en la inferior; me gustaría una línea solo en la parte superior. Esto es lo lejos que llegué con el MWE a continuación:

prueba1.png

En el metacar Y, estoy intentando agregar un Hnodo de fondo, luego un nodo (pero \timingno define una backgroundcapa), luego uso Bel carácter (atrás) para volver a dibujar un nodo Hen la "parte superior", pero eso no funciona. como puede verse, los rellenos todavía están al frente y no están del todo alineados con las líneas de transición.

¿Cómo podría obtener un equivalente a un Hcarácter "rellenado" correctamente?

Una pregunta adicional es: ¿cómo podría obtener el \timingdiagrama como un "nodo de ajuste" (con ancho y alto), para poder alinearlo en el centro del nodo maestro? anchor=centerno hace ninguna diferencia (probablemente porque el nodo nombrado tgraph1no tiene un tamaño o simplemente se refiere al inicio del diagrama)

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

Respuesta1

Bueno, todavía no sé sobre el tamaño y la posición del nodo, espero que alguien me ayude con eso, pero logré algo con respecto al relleno del fondo, husmeando en kpsewhich tikz-timing.sty. Básicamente, hay algunas macros que manejan transiciones allí y, por alguna razón, solo aceptarán \tikztimingdef{HL}un fillparámetro, y parece estar funcionando correctamente, pero solo siempre que su secuencia de tiempo comience con an Ly termine con an L. Entonces, finalmente, termino con esto:

prueba1a.png

... que es lo que quería con respecto al relleno de fondo; Desafortunadamente, eso cambiará todo el comportamiento de Hlos personajes, no solo cada diagrama de tiempo. Aquí está el MWE (como un poco de trivia, usé esto paraTerminología: ¿significado (y origen) correcto de PCM? - Desbordamiento de pila):

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

información relacionada