我想将 Tikz 图片与周围的文本对齐。以下是 MWE 示例:
\documentclass[a4paper,10pt]{article}
\usepackage{tikz}
\usetikzlibrary{arrows,chains,matrix,positioning,scopes}
\makeatletter
\tikzset{joinlabel/.code=\tikzset{after node path={%
\ifx\tikzchainprevious\pgfutil@empty\else(\tikzchainprevious)%
edge[every join]#1(\tikzchaincurrent)\fi}}}
\makeatother
\tikzset{>=stealth',every on chain/.append style={join},
every join/.style={->}}
\begin{document}
Text, more text
\begin{tikzpicture}[start chain] {
\node[on chain] {$0$};
\node[on chain] {$A$} ;
\node[on chain, joinlabel={node[above] {$\scriptstyle\varphi$}}] {$B$};
\node[on chain, joinlabel={node[above] {$\scriptstyle\psi$}}] {$C$};
\node[on chain] {$0$}; }
\end{tikzpicture}
text and more text go here...
\end{document}
输出如下:
为了使事情更明确:我正在寻找一种不会对代码进行太多更改但可以让我使 TikZ 图片与周围的 Tikz 对齐的解决方案。
(我在聊天中发布信息时了解到了一些非常糟糕的解决方法。我可能会将它们汇编起来并写成 CW 答案。)
答案1
为了在一般情况下尽量减少干预,请使用baseline
选项tikzpicture
与图中节点的坐标相结合。在这种情况下,最简单的方法是用O
(字母 O)标记第一个节点并使用其基线。这是工作代码:
\begin{tikzpicture}[baseline=(O.base),start chain] {
\node (O) [on chain] {$0$};
\node[on chain] {$A$};
\node[on chain, joinlabel={node[above] {$\scriptstyle\varphi$}}] {$B$};
\node[on chain, joinlabel={node[above] {$\scriptstyle\psi$}}] {$C$};
\node[on chain] {$0$}; }
\end{tikzpicture}
然而正如 @percusse 指出的那样,对于这个特定示例,节点会自动赋予名称,chain-#
其中#
节点编号为。因此,真正的最低限度干预是
\begin{tikzpicture}[baseline=(chain-1.base),start chain] {
\node[on chain] {$0$};
\node[on chain] {$A$};
\node[on chain, joinlabel={node[above] {$\scriptstyle\varphi$}}] {$B$};
\node[on chain, joinlabel={node[above] {$\scriptstyle\psi$}}] {$C$};
\node[on chain] {$0$}; }
\end{tikzpicture}
当然,还有许多其他方法可以制作您的特定图表,无论是否使用tikz
。一种可能性是\( 0 \longrightarrow A \stackrel{\varphi}{\longrightarrow} B \stackrel{\psi}{\longrightarrow} C \longrightarrow 0 \)
:
它的箭头稍短,因此可能更适合这种内联情况(我也更喜欢垂直放置箭头)。amsmath
有一些可扩展的箭头也可以使用。