将 Tikz 图片与周围的文本对齐

将 Tikz 图片与周围的文本对齐

我想将 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有一些可扩展的箭头也可以使用。

相关内容