在 TikZ 中更改节点内的行距

在 TikZ 中更改节点内的行距

在 TikZ 节点内部,可以通过设置节点的选项\\来强制换行。align

我想增加节点内的行距。这可以通过常规方式使用可选参数来实现\\,例如\\[1em]。不过,对每个换行符都这样做很繁琐。有没有办法增加换行符全球,以便\\节点内部的任何一个都充当\\[1em]

编辑:快到了!

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{shapes}

\begin{document}

\tikzset{
  mynode/.style={
    draw
  , align=center
  , execute at begin node=\setlength{\baselineskip}{2em}
  }
}

\begin{tikzpicture}
  \node[mynode] {
    this \\
    is \\
    \tikz \node[mynode] {a \\ break};
  };
\end{tikzpicture}

\end{document}

得出的结果为:

节点断裂

剩下的问题是如何在内部节点前放置 2em 断行。

答案1

那这个呢?

\setlength{\baselineskip}{16pt}

或者

\baselineskip=16pt

(如果不起作用,请尝试用明确的 来结束节点文本\par。)

现在来看看第二部分:这不仅不平凡,而且定义不明确。顾名思义,\baselineskip连续文本行的基线(或者 hboxes,如果你喜欢的话)。对于“内部”tikz 节点,有一个问题:它的基线位于哪里?这可以通过 tikz 选项配置baseline(这很难猜,对吧;)?),但是如果你设置它更高,然后 - 如果你添加另一行或任何其他内容以下- 距离会太小。

对你的问题最好的答案可能是\lineskip\lineskiplimit参数。实际上(嗯,据我所知,因为我办公室有一本 TeXbook),规则(大致)如下:

如果 TeX 将两个框放在垂直列表中,它会在它们之间添加胶水,因此它们之间的距离他们的基线等于\baselineskip。但是,如果底部上部盒子和顶部下部的会小于\lineskiplimit,插入的胶水等于\lineskip

因此您可能需要按以下方式进行设置:

\baselineskip=<the distance you want between the baselines>
\lineskiplimit=<the threshold distance>
\lineskip=<the distance you want between the boxes (not their baselines!) if they are close to each other>

其中“彼此接近”的意思是“比阈值更接近”。

答案2

我添加这个答案主要是因为树节点似乎Forest不支持内部\baselineskip修改。此方法使用\linespread{<scaling factor>}\selectfont。副作用是它会影响边缘和​​标签之间的间距;inner sep必须相应地重新调整。

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{shapes}
\usepackage[linguistics]{forest}

\begin{document}
    
    \tikzset{
        mynode/.style={
            draw
            , align=center
            , execute at begin node = \linespread{1.65}\selectfont
        }
    }

\begin{tikzpicture}
    \node[mynode] {
        this \\
        is \\
        \tikz \node[mynode] {a \\ break};
    };
\end{tikzpicture}

\vspace{5ex}

\begin{forest}
  [DP\\the cat, anchor=north, execute at begin node = \setlength{\baselineskip}{2em}% This command has no effect.
    [D\\the, anchor=north, execute at begin node = \linespread{1.65}\selectfont]
    [NP\\cat, anchor=north, execute at begin node = \linespread{2}\selectfont]
  ]
\end{forest}

\end{document}

在此处输入图片描述

相关内容