在 tikz 中,如何在节点内使用 \linebreak?

在 tikz 中,如何在节点内使用 \linebreak?

这是我的代码,它不起作用:

\documentclass{article}
\usepackage{tikz}
\begin{document}
\tikz \node {start\linebreak{}stop};
\end{document}

\linebreak命令不起作用。为了使其工作,我不得不说\node[text width=5em]..。有没有其他方法可以使其工作,而无需明确指定节点文本宽度?

答案1

有一个更简单、更优雅的解决方案!来自 TikZ 手册 § 17.4.3 文本参数:多行文本的对齐和宽度:

\node[draw, align=left] {This is a\\demonstration.};

这里的关键是您必须使用该align选项以及您想要的参数。

答案2

您可以使用单列tabular来实现换行:

\documentclass{article}
\usepackage{tikz}
\begin{document}
\tikz \node {\begin{tabular}{l}
    start \\
    another \\ 
    stop
\end{tabular}};
\end{document}

类似的宏也\shortstack{start\\another\\stop}很有用。我还总是\strut在每一行中添加一个,以确保始终跳过一行。

答案3

rectangle split您可以使用(TikZ 库中的shapes)绘制分割矩形来获取节点中的多条线。设置rectangle split parts为您想要的线数,然后使用\nodepart切换到下一条线,如下例所示:

\documentclass{article}

\usepackage{tikz}

\usetikzlibrary{shapes}

\begin{document}

\begin{tikzpicture}
\draw ellipse (2cm and 1cm) node [rectangle split,rectangle split parts=2]{%
  First line
  \nodepart{second}
  second line%
  };
\end{tikzpicture}

\end{document}

代码的输出

答案4

\def\mynode#{\vtop \bgroup \hsize 0pt \parindent 0pt 
        \rightskip = 0pt minus \maxdimen \let\next=}
\tikz \node {\mynode{start\linebreak stop}};

相关内容