Tikz 节点文本垂直对齐换行符

Tikz 节点文本垂直对齐换行符

我想垂直对齐节点链中的文本。一个节点有换行符。最好的方法是什么?这是我当前的示例:

\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{chains}
\begin{document}
    \begin{tikzpicture}[
        start chain,
        every node/.style={
            draw,
            text height=1.5ex,
            text depth=.0ex,
            text width=7em,
            text centered,
            anchor=base,
            minimum height=3em
        }]

        \node[on chain, join] {node with\\linebreak};
        \node[on chain, join] {node};
    \end{tikzpicture}
\end{document}

我希望我的第一个节点垂直对齐。

答案1

像这样?

在此处输入图片描述

上图的代码是:

\documentclass[border=3mm, tikz]{standalone}
\usetikzlibrary{chains}

\begin{document}
    \begin{tikzpicture}[
      start chain = going right,
every node/.style = {
    draw,
    minimum height=3em,
    text width=7em,
    align=center,
    on chain, join}
            ]
        \node  {node with\\linebreak};
        \node  {node};
    \end{tikzpicture}
\end{document}

如您所见,我只更改了 的参数every node/.style ...。如果您定义了文本高度和深度,那么 TikZ 将使用文本高度作为文本的第一行,其他行放在其下方。因此更好的方法是声明minimum height=...。文本居中的新语法是align=center

答案2

您可以使用minipage来允许节点内的换行。

\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{chains}
\begin{document}
    \begin{tikzpicture}[
        start chain,
        every node/.style={
            draw,
            text height=1.5ex,
            text depth=.0ex,
            text width=7em,
            text centered,
            anchor=base,
            minimum height=3em
        }]

        \node[on chain, join] {\begin{minipage}{\textwidth}\centering
        node with \\ linebreak
        \end{minipage}};
        \node[on chain, join] {node};
    \end{tikzpicture}
\end{document}

相关内容