H(높은) 타이밍 문자에 대한 배경 채우기 및 tikz 타이밍에 대한 다이어그램 크기

H(높은) 타이밍 문자에 대한 배경 채우기 및 tikz 타이밍에 대한 다이어그램 크기

타이밍 문자 에 채워진 배경을 추가하고 싶습니다 H. 그렇지 않으면 문자가 하나도 없습니다(그냥 한 줄임). 배경 채우기가 있는 D또는 문자는 상단과 하단 모두에 선을 추가하기 때문에 사용하고 싶지 않습니다 U. 상단에만 선을 원합니다. 아래 MWE를 통해 얻은 결과는 다음과 같습니다.

test1.png

Metachar에서 배경 노드( 레이어 를 정의하지는 않음 ) 를 추가한 다음 (뒤로) 문자를 사용하여 "맨 위"에 다시 그리려고 Y하는데 작동하지 않습니다. 보시다시피 채우기는 여전히 앞에 있고 전환 선과 제대로 정렬되지 않습니다.H\timingbackgroundBH

제대로 "채워진" 문자에 해당하는 문자를 어떻게 얻을 수 있나요 H?

추가 질문은 다이어그램을 \timing"맞춤 노드"(너비와 높이 포함)로 가져와 마스터 노드의 중앙에 정렬할 수 있는 방법입니다. anchor=center아무런 차이가 없습니다(아마 명명된 노드에 tgraph1크기가 없거나 다이어그램의 시작 부분만 참조하기 때문일 수 있음)

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}

답변1

글쎄, 여전히 노드 크기와 위치에 대해 모릅니다. 누군가 도움을 주기를 바랍니다. 하지만 kpsewhich tikz-timing.sty. 기본적으로 거기에는 전환을 처리하는 일부 매크로가 있으며 어떤 이유로 만 매개 변수를 \tikztimingdef{HL}허용합니다 . 제대로 작동하는 것처럼 보이지만 타이밍 시퀀스가 ​​로 시작 하고 으로 끝나는 fill경우에만 가능합니다 . 그래서 결국 저는 다음과 같이 결론을 내렸습니다.LL

test1a.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}

관련 정보