Ich möchte dem Timing-Zeichen einen gefüllten Hintergrund hinzufügen H
, der sonst keinen hat (es ist nur eine Linie). Ich möchte die D
oder U
Zeichen, die eine Hintergrundfüllung haben, nicht verwenden, da sie oben und unten ebenfalls Linien hinzufügen - ich möchte nur oben eine Linie. So weit bin ich mit dem MWE unten gekommen:
Im Metazeichen Y
versuche ich, ein hinzuzufügen H
, dann einen Hintergrundknoten ( \timing
definiert aber keine background
Ebene), dann B
das Zeichen (Zurück) zu verwenden, um erneut ein „oben“ zu zeichnen H
, aber das funktioniert nicht – wie man sehen kann, sind die Füllungen noch vorne und nicht ganz mit den Übergangslinien ausgerichtet.
Wie könnte ich ein Äquivalent zu einem korrekt „ausgefüllten“ H
Zeichen erhalten?
Eine weitere Frage ist: Wie kann ich das \timing
Diagramm als „passenden Knoten“ (mit Breite und Höhe) erhalten, sodass ich es mittig im Masterknoten ausrichten kann? anchor=center
Macht keinen Unterschied (wahrscheinlich, weil der benannte Knoten entweder tgraph1
keine Größe hat oder sich nur auf den Anfang des Diagramms bezieht).
Das 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}
Antwort1
Nun, ich weiß immer noch nichts über die Größe und Position der Knoten, hoffe, dass mir jemand dabei helfen kann – aber ich bin in Bezug auf die Hintergrundfüllung weitergekommen, indem ich in herumgeschnüffelt habe kpsewhich tikz-timing.sty
. Im Grunde gibt es dort einige Makros, die Übergänge handhaben, und aus irgendeinem Grund \tikztimingdef{HL}
akzeptiert nur das einen fill
Parameter – und es scheint richtig zu funktionieren, aber nur, solange Ihre Zeitsequenz mit einem beginnt L
und mit einem endet L
. Also lande ich schließlich bei Folgendem:
... was ich in Bezug auf die Hintergrundfüllung wollte; leider wird das das gesamte Verhalten der H
Charaktere ändern, nicht nur pro einzelnem Zeitdiagramm. Hier ist das MWE (als kleine Nebenbemerkung, ich habe es fürTerminologie - Richtige Bedeutung (und Ursprung) von 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}