我想将 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}
确实,这个方法之所以有效,恰好是由于图形的性质。诚然,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 手册。