使用 baseline 在 tikz 中伪造 vcenter

使用 baseline 在 tikz 中伪造 vcenter

为了\vcenter在 tikz 中伪造,我一直在使用baseline={([yshift=-.25em]current bounding box.center)}。它似乎工作得很好,但不确定它是否严格等效(比如我不确定是否.25完全相同,也不确定它是否适用于任何字体大小......)。我试过了\show\vcenter(见日志),但它没有给出定义(或者它是一个单个宏定义)。

这是正确的做法吗?

梅威瑟:

\documentclass{article}
\usepackage{tikz}

\begin{document}
\noindent ABC $\vcenter{\hbox{\begin{tikzpicture}[baseline={([yshift=-.27em]current bounding box.center)}]%
    \node[inner sep=5mm,fill=green] at (0,0){n};%
  \end{tikzpicture}}}$
$\begin{tikzpicture}[baseline={([yshift=-.25em]current bounding box.center)}]
  \node[inner sep=5mm,fill=green] at (0,0){n};
\end{tikzpicture}= 42$
\end{document}

答案1

\show\vcenter由于是 TeX 基元,因此不提供有用信息\vcenter。在数学轴上垂直居中一个框,其高度由\fontdimen22字体控制\fam=2

\documentclass{article}

\usepackage{tikz}

\begin{document}

\newdimen\axisheight
\setbox0=\hbox{$a$\global\axisheight=\fontdimen22\textfont2}%

$
\hbox{X}           % a normal X on the baseline
 -                 % minus sign to show the math axis
\vcenter{\hbox{X}} % an X centred on the math axis
\begin{tikzpicture}[baseline={([yshift=-\axisheight]current bounding box.center)}]%
    \node[inner sep=1mm,fill=green] at (0,0){X};
\end{tikzpicture}
$
  
\end{document}

在此处输入图片描述

(我对此几乎一无所知,tikz所以我猜这就是您想要实现的一致。)

相关内容