将方程式和 tikz 图片与锚点和基线对齐

将方程式和 tikz 图片与锚点和基线对齐

我试图让方程的数学部分以 tikz 图片为中心:

\begin{equation}
  \mathcal{G} = 
  \begin{tikzpicture}[]
    \tikzstyle{vertex}=[anchor=base,baseline,
    circle,fill=black!25,minimum size=18pt,inner sep=2pt]
    \node[vertex] (G1) at (0,0)   {1};
    \node[vertex] (G2) at (1,0)   {2};
    \node[vertex] (G3) at (1,1)   {3};
    \node[vertex] (G4) at (0,1)   {4};
    \draw (G1) -- (G2) -- (G3) -- (G4) -- (G1) -- cycle;
  \end{tikzpicture}
\end{equation}

但相反,它将其放在了均匀的基线上:

在此处输入图片描述

我对 tikz 部分的尝试来自相关问题:

TikZ 和 Mathmode 中的共同基线

如何将一系列 TikZ 图片在基线对齐

我想我误解了和之间的语法\tikz \node。我该如何更改才能对齐 tikz 图片而不调整原始坐标?\tikzpicture\tikzstyle

答案1

您需要baseline在 上使用tikzpicture,而不是在节点上使用。正如 Tom Bombadil 在评论中提到的,您可以使用current bounding box.center将 TikZ 图片的中心放在基线上。我还会添加一个yshift使其围绕=标志中间居中。-.5ex似乎可以做到。

\documentclass{article}
\usepackage{tikz}
\begin{document}

\begin{equation}
  \mathcal{G} = 
  \begin{tikzpicture}[baseline={([yshift=-.5ex]current bounding box.center)},vertex/.style={anchor=base,
    circle,fill=black!25,minimum size=18pt,inner sep=2pt}]
    \node[vertex] (G1) at (0,0)   {1};
    \node[vertex] (G2) at (1,0)   {2};
    \node[vertex] (G3) at (1,1)   {3};
    \node[vertex] (G4) at (0,1)   {4};
    \draw (G1) -- (G2) -- (G3) -- (G4) -- (G1) -- cycle;
  \end{tikzpicture}
\end{equation}

\end{document}

结果

答案2

您的设置有几个问题。

  1. \tikzstyle旨在成为声明全球的。这意味着它们就像是前导语句,您可以在其中初始化一些经常使用的样式。因此,您不应该将其放在 中\begin{tikzpicture}。此外(正如 Martin 正确指出的那样),请改用\tikzset\pgfkeys命令,它们更加一致)。

  2. \begin{tikzpicture}[<here>]可以在图片片段中创建临时样式。

  3. baseline是一种影响的风格tikzpicture,因此仅有的用于\begin{tikzpicture}[baseline]

有关样式及其范围的参考,您可以查看我之前的一个回答:风格范围

好的,解决方案的快速解决方法如下:

\begin{equation}
  \mathcal{G} = 
  \begin{tikzpicture}[baseline,vertex/.style={anchor=base,
        circle,fill=black!25,minimum size=18pt,inner sep=2pt}]
    \node[vertex] (G1) at (0,0)   {1};
    \node[vertex] (G2) at (1,0)   {2};
    \node[vertex] (G3) at (1,1)   {3};
    \node[vertex] (G4) at (0,1)   {4};
    \draw (G1) -- (G2) -- (G3) -- (G4) -- (G1) -- cycle;
  \end{tikzpicture}
\end{equation}

得出的结果是:

在此处输入图片描述

即与包含 的圆圈对齐1

但是,如果您希望与结构的中心对齐,则应指定基线偏移tikzpicture。 也就是说baseline=<length>
在您的情况下,可以使用库计算图形的中间calc。 这里您需要意识到两件事:

  1. baseline线的基部与位置对齐。

  2. 您宁愿与线的中间对齐。

这意味着您需要根据行的高度来计算偏移(即在偏移中包含文本高度)。

使用这种风格可以轻松完成:

baseline=($(G1.base)!.5!(G4.base)$)

这将产生:

在此处输入图片描述

相关内容