这是我的代码,它不起作用:
\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}};