问题
一旦我调整了时间标签文本的大小,标签的中点似乎就会发生移动,如下面的代码/图像中的箭头所示。它与文本的底部对齐,而不是中间。有没有办法让 tikz-timing 标签垂直居中? 相关问题:LaTeX tikz-timing - 为每行标签独立调整字体大小
\vspace
似乎不是一个好选择
代码
\documentclass[border=4pt]{standalone}
\usepackage{tikz-timing}
\newcommand{\arr}[1]{#1 $\Longrightarrow$}
%
\begin{document}
\begin{tikztimingtable}
\arr & 4D{normal} \\
\arr{\tiny\color{red}} & 4D{tiny} \\
\arr{\scriptsize\color{orange}} & 4D{script} \\
\arr{\footnotesize\color{yellow}} & 4D{footnote} \\
\arr{\small\color{green}} & 4D{small} \\
\arr{\normalsize\color{blue}} & 4D{normal} \\
\arr{\large\color{purple}} & 4D{large} \\
\extracode
\tablegrid
\end{tikztimingtable}
\end{document}
生成的图像
为什么要移动标签?
当使用 tikz-timing 和 PGF 语法时,您可能会陷入一个困境,想要移动 tikz-timing 标签(默认情况下固定在边界框的底部)。
在下面的示例中,垂直线、节点和线标签使用\foreach
循环自动展开,所有这些都相对引用,以便更轻松地展开时序图。此外,我还利用了“模拟”波形中的 tikz-timing 宏;请参阅 analog_sig1,我想在其中说明未知的模拟输出。
我想要将“critical_point”标签稍微向上移动,以便我可以与交错的 t0...t15 线标签/节点对齐。
问题说明
下面是我与“调试”网格、标记和垂直线放在一起的示例波形。
解决方案
{\tiny\color{blue}\raisebox{1mm}{critical\_point$\Longrightarrow$}} &
答案1
由于您只想更改一行的标签,因此我timing/name <row>/.try
向样式中添加了一个样式timing/name
。处理程序使得不必为每个可能的样式.try
定义样式成为可能。timing/name <row>
<row>
我曾使用过这些name <row>
样式两次:
- 该
timing/name 1
样式设置标签节点,使得基线与 D 斜率距离的中间位于同一高度。
.6pt
已发现这是经验性的,并且涵盖了实际 D 线引入的额外高度。
- 该
timing/name 2
样式利用append after command
键来实际使用 TikZ 绘制该箭头。
代码
\documentclass[border=4pt,convert={true,density=600}]{standalone}
\usepackage{tikz-timing}
\usetikzlibrary{arrows}
\newcommand{\arr}[1]{#1 $\Longrightarrow$}
\makeatletter
\tikzset{timing/name/.append style={timing/name \the\c@tikztiming@nrows/.try}}
\makeatother
\begin{document}
\begin{tikztimingtable}[
timing/name 1/.append style={
anchor=east,
yshift=\timingdslope cm/2+.6pt,
minimum height=\timingdslope cm,
},
timing/name 2/.append style={
anchor=east,
yshift=\timingdslope cm/2+.6pt,
minimum height=\timingdslope cm,
font=\tiny,
append after command={
\pgfextra
\pgfsetinnerlinewidth{.7pt}
\pgfsetbuttcap
\draw [line width=1.3pt,implies-] (\tikzlastnode.east) -- ++(-.25cm,0);
\endpgfextra
}
}
]
\arr & 4D{normal} \\
critical\_point\hspace{.3cm} & 4D{normal} \\
\extracode
\tablegrid
\end{tikztimingtable}
\end{document}