如何使文本在节点内居中并换行?

如何使文本在节点内居中并换行?

考虑两个里面有长文本节点的圆圈:

\documentclass{standalone}

\usepackage{tikz}

\begin{document}

    \begin{tikzpicture}
    \draw (0,0) circle (1.5cm) node[text width=3cm] {This is a relatively long text};
    \draw (5,0) circle (1.5cm) node[text width=3cm] {This is another very long text};
    \end{tikzpicture}

\end{document}

在此处输入图片描述

我想让文本居中并包裹在每个圆圈中。到目前为止,我尝试了两种解决方案:

  1. 按照建议使用label=center:<my_text>内部node这里。这会使文本居中,但不会换行。因此文本会超出圆圈。

  2. 按照建议使用pos=0.5midway内部node这里。这对于一个圆圈来说没问题,但对于两个圆圈来说就不行了。在第一个圆圈中,文本彼此叠放在一起。

我怎样才能实现我的愿望?

答案1

一种方法是将节点做成圆形,添加align=center到文本中,并赋予其最小尺寸。

\documentclass{standalone}

\usepackage{tikz}

\begin{document}

    \begin{tikzpicture}
    \draw (0,0)% circle (1.5cm) 
    node[align=center,minimum size=3cm,draw,circle] 
    {This is\\ a relatively\\ long text};
    \draw (5,0)% circle (1.5cm) 
    node[align=center,minimum size=3cm,draw,circle] 
    {This is\\ another very\\ long text};
    \end{tikzpicture}

\end{document}

在此处输入图片描述

您需要自己添加换行符,或者使用类似的方法parshape来自动跟随圆圈的轮廓。

答案2

节点内的对齐由键决定align。在这种情况下,您需要align=center

\documentclass{standalone}

\usepackage{tikz}

\begin{document}

    \begin{tikzpicture}
    \draw (0,0) circle (1.5cm) node[text width=3cm,align=center] {This is a relatively long text};
    \draw (5,0) circle (1.5cm) node[text width=3cm,align=center] {This is another very long text};
    \end{tikzpicture}

\end{document}

代码输出

相关内容