方程式中 tikz 圆的垂直对齐

方程式中 tikz 圆的垂直对齐

我希望在等式中插入一个图形,并使其水平居中。

例如,以下示例中的圆圈应位于括号的中心,而不是位于括号的中间。

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{equation}
  A + B \Big \langle \tikz \draw (0,0) circle (0.5cm); \Big \rangle
\end{equation}
\end{document}

我如何实现这个目标?

我知道这次黑客攻击这里,但发现这并不合适。(对我来说,手动破解 50 多个这样的图表是不切实际的。)

答案1

在数学中将内容居中的标准方法是\vcenter将垂直材料列表与数学轴居中对齐(不可见的线、减号、等号、分数等都对齐):

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{equation}
  A + B \Big \langle \vcenter{\hbox{\tikz \draw (0,0) circle (0.5cm);}} \Big \rangle
\end{equation}
\end{document}

输出:

在此处输入图片描述

答案2

仍然值得一提的是,baseline可以以一种有效的方式帮助您:通过定义一种vertical align缩写长baseline=...命令的样式。

\documentclass{article}
\usepackage{tikz}
\begin{document}
    \tikzset{
        vertical align/.style={
            baseline=-.5*(height("$+$")-depth("$+$"))
        }
    }
    \foreach\size in{\tiny,\footnotesize,\normalsize,\Large,\huge}{
        \size
        \begin{equation}
            A+B\Big\langle\tikz[vertical align]\draw circle(0.5);\Big\rangle^{
            A+B\Big\langle\tikz[vertical align]\draw circle(0.5);\Big\rangle^{
            A+B\Big\langle\tikz[vertical align]\draw circle(0.5);\Big\rangle}}
        \end{equation}
    }
    \end{document}

可以做的是,你可以通过以下方式全局应用样式:

\tikzset{
    every picture/.style={vertical align}
}

[baseline=0pt]对于不相关的图片,您可以通过分组或说或只是来取消效果[baseline]。(或者您可以定义no vertical align/.style={baseline}


您还可以将圆的绘制编码到 中.pic。例如

\tikzset{
    cir5/.pic={
        \draw circle(0.5);
    }
}

结合全局设置baseline,代码现在简单多了

    \begin{equation}
          A+B\Big\langle\tikz\pic{cir5};\Big\rangle
    \end{equation}

对比

    \begin{equation}
        A+B\Big\langle\vcenter{\hbox{\tikz\draw circle(0.5);}}\Big\rangle
    \end{equation}

当然\def\vcentertikz#1{\vcenter{\hbox{\tikz{#1}}}},也可以像 一样进行类似操作\def\tikzvcenterpic#1{\tikz[vcenter]{\pic{#1}}}。因此,只要不需要复杂的基线设置(例如baseline=(node.anchor)),这两种方法都可以互换。


以下是完整代码。

\documentclass{article}
\usepackage{tikz}
\begin{document}
    \tikzset{
        vertical align/.style={
            baseline=-.5*(height("$+$")-depth("$+$"))
        }
    }
    \foreach\size in{\tiny,\footnotesize,\normalsize,\Large,\huge}{
        \size
        \begin{equation}
            A+B\Big\langle\tikz[vertical align]\draw circle(0.5);\Big\rangle^{
            A+B\Big\langle\tikz[vertical align]\draw circle(0.5);\Big\rangle^{
            A+B\Big\langle\tikz[vertical align]\draw circle(0.5);\Big\rangle}}
        \end{equation}
    }

    \clearpage

    \tikzset{
        every picture/.style={vertical align}
    }
    \foreach\size in{\tiny,\footnotesize,\normalsize,\Large,\huge}{
        \size
        \begin{equation}
            A+B\Big\langle\tikz\draw circle(0.5);\Big\rangle^{
            A+B\Big\langle\tikz\draw circle(0.5);\Big\rangle^{
            A+B\Big\langle\tikz\draw circle(0.5);\Big\rangle}}
        \end{equation}
    }

    \clearpage

    \tikzset{
        cir5/.pic={
            \draw circle(0.5);
        }
    }
    \foreach\size in{\tiny,\footnotesize,\normalsize,\Large,\huge}{
        \size
        \begin{equation}
              A+B\Big\langle\tikz\pic{cir5};\Big\rangle
            ^{A+B\Big\langle\tikz\pic{cir5};\Big\rangle
            ^{A+B\Big\langle\tikz\pic{cir5};\Big\rangle}}
        \end{equation}
    }

    \clearpage

    \foreach\size in{\tiny,\footnotesize,\normalsize,\Large,\huge}{
        \size
        \begin{equation}
            A + B \Big \langle \vcenter{\hbox{\tikz \draw (0,0) circle (0.5cm);}} \Big \rangle^{
            A + B \Big \langle \vcenter{\hbox{\tikz \draw (0,0) circle (0.5cm);}} \Big \rangle^{
            A + B \Big \langle \vcenter{\hbox{\tikz \draw (0,0) circle (0.5cm);}} \Big \rangle}}
        \end{equation}
    }

\end{document}

相关内容