我希望在等式中插入一个图形,并使其水平居中。
例如,以下示例中的圆圈应位于括号的中心,而不是位于括号的中间。
\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
答案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}