我想垂直对齐节点链中的文本。一个节点有换行符。最好的方法是什么?这是我当前的示例:
\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}