在 TikZ 中将节点与当前行垂直居中

在 TikZ 中将节点与当前行垂直居中

考虑以下:

\documentclass{article}

\usepackage{tikz}

\begin{document}

  This is a
  \begin{tikzpicture}
    \node[draw, rectangle, align=left] {%
      And here \\[.3em]
      is
      \tikz \node[draw, rectangle, align=center] {a \\ nested};
    };
  \end{tikzpicture}
  one.
\end{document}

这产生了

在此处输入图片描述

我希望放置节点,使得外部节点垂直居中,外部文本tikzpicture,内部节点垂直居中,外部节点的“is”行。

答案1

baseline=(current bounding box.center)将选项添加到tikzpictureand\tikz命令中。这会将图表的基线置于其中心,并将与其他基线垂直对齐(!)。

但是,如果您想将其与文本的垂直中心对齐,即“is”的中心,这样看起来可能更好,请使用
baseline={([yshift=-1ex]current bounding box.center)}。根据您的喜好调整值。也许.8ex可能更好(大写字母约为 1.6ex)。

\documentclass{article}

\usepackage{tikz}

\begin{document}

  This is a
  \begin{tikzpicture}[baseline={([yshift=-.8ex]current bounding box.center)}]
    \node[draw, rectangle, align=left] {%
      And here \\[.3em]
      is
      \tikz [baseline={([yshift=-.8ex]current bounding box.center)}]
        \node[draw, rectangle, align=center] {a \\ nested};
    };
  \end{tikzpicture}
  one.
\end{document}

结果


其他一些提示:

一般来说,您可以使用\raisebox{<length>}{<content>}来升高或降低某些材料。然后您可以使用\height\depth\width\totalheight引用内容的原始尺寸。使用\dimexpr进行数学运算:

\raisebox{\dimexpr-.5\height+.5\depth+.8ex\relax}{<content>}

还有\vcenter{...}将事物垂直居中的方法,但它旨在用于数学模式。

相关内容