如何指定 tikzpicture 在文本中间的垂直位置?

如何指定 tikzpicture 在文本中间的垂直位置?

我想将 tikzpicture 放在文本行的中间,但我不知道如何指定垂直定位。说明:

\documentclass{article}
\usepackage[english]{babel}
\usepackage{tikz}

\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit
\begin{tikzpicture}
 \draw (2.25, 2) -- (2,0);
 \draw (.7, 0) -- (4,0) -- (2.25, 2) node[right] {$A_i$} -- (.7,0);
 \draw (3,0) -- (2.125, 1) node[right] {$A_j$} -- (1.4,0);
 \draw (1.05, 0) node[below] {$v$} (2,0) node[below] {$w$} (3.5, 0) node[below] {$x$} (4.5, 0);
\end{tikzpicture}

\end{document}

给了我类似

这种对齐

但我想得到类似的东西

另一种排列方式

我知道表格和数组存在垂直定位选项(\begin{array}[b]{rcl}例如底部对齐),但我找不到类似 tikzpictures 的东西。

感谢您的帮助。

答案1

如果您想在同一行上放置更多文本,这里有另一种可行的方法。它将图形放在一个框中,然后将框的高度降低一半。

\documentclass{article}
\usepackage[english]{babel}
\usepackage{tikz}

\newbox\mybox
\def\centerfigure#1{%
    \setbox\mybox\hbox{#1}%
    \raisebox{-0.5\dimexpr\ht\mybox+\dp\mybox}{\copy\mybox}%
}
\begin{document}
Lorem ipsum dolor sit amet,
\centerfigure{\begin{tikzpicture}
 \draw (2.25, 2) -- (2,0);
 \draw (.7, 0) -- (4,0) -- (2.25, 2) node[right] {$A_i$} -- (.7,0);
 \draw (3,0) -- (2.125, 1) node[right] {$A_j$} -- (1.4,0);
 \draw (1.05, 0) node[below] {$v$} (2,0) node[below] {$w$} (3.5, 0) node[below] {$x$} (4.5, 0);
\end{tikzpicture}} more text
\end{document} 

答案2

巧合的是,我刚刚解决了一个类似的问题。应用到您的示例中,结果是这样的:

\documentclass{article}
\usepackage{tikz}

\begin{document}
Lorem ipsum dolor sit amet,%
\begin{tikzpicture}[baseline=(AA.base)]%
 \draw (2.25, 2) -- (2,0);
 \draw (.7, 0) -- (4,0) -- (2.25, 2) node[right] {$A_i$} -- (.7,0);
 \draw (3,0) -- (2.125, 1) node[right](AA) {$A_j$} -- (1.4,0);
 \draw (1.05, 0) node[below] {$v$} (2,0) node[below] {$w$} (3.5, 0) node[below] {$x$};
\end{tikzpicture}%
more text
\end{document} 

将 tikz 图形置于基线上的中心。

确实,这个方法之所以有效,恰好是由于图形的性质。诚然,Hood Chatham 的解决方案更为通用。

更改[baseline=(AA.base)]为会[baseline=(AA.south)]产生以下结果:

替代版本

答案3

我认为使用数学模式\vcenter是使当前文本行垂直居中的一种方法:

\documentclass{article}
\usepackage[english]{babel}
\usepackage{tikz}

\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit
$\vcenter{\begin{tikzpicture}
 \draw (2.25, 2) -- (2,0);
 \draw (.7, 0) -- (4,0) -- (2.25, 2) node[right] {$A_i$} -- (.7,0);
 \draw (3,0) -- (2.125, 1) node[right] {$A_j$} -- (1.4,0);
 \draw (1.05, 0) node[below] {$v$} (2,0) node[below] {$w$} (3.5, 0) node[below] {$x$} (4.5, 0);
\end{tikzpicture}}$

\end{document}

答案4

我已经修改了斯格莫耶解决方案更加通用。似乎运行完美,但我还没有彻底测试过。

\documentclass{article}
\usepackage{tikz}

\begin{document}
Lorem ipsum dolor sit amet, consectetur adipiscing elit
\begin{tikzpicture}[baseline=(current bounding box)]
 \draw (2.25, 2) -- (2,0);
 \draw (.7, 0) -- (4,0) -- (2.25, 2) node[right] {$A_i$} -- (.7,0);
 \draw (3,0) -- (2.125, 1) node[right] {$A_j$} -- (1.4,0);
 \draw (1.05, 0) node[below] {$v$} (2,0) node[below] {$w$} (3.5, 0) node[below] {$x$} (4.5, 0);
\end{tikzpicture}

\end{document}

渲染的乳胶文档

请注意,您还可以使用baseline=(current bounding box.north)将图形定位在文本的正下方。

我发现这个解决方案pgf 手册

相关内容