TikZ 节点内的多行文本

TikZ 节点内的多行文本

我想在 TikZ 矩形内写入多行文本。这就是我的做法。

\documentclass{article}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
\node at (0, 0) [rectangle,draw,minimum size=2cm] {
    \begin{tabular}{c} \( a^2 \) \\ \( b^2 \) \end{tabular}
};
\end{tikzpicture}

\end{document}

在此处输入图片描述

这很好用。但我想了解为什么使用其他环境(例如align*环境或显示的数学)不能像tabular环境那样很好地工作。

例如,以下代码

\documentclass{article}
\usepackage{tikz}
\usepackage{amsmath}
\begin{document}

\begin{tikzpicture}
\node at (0, 0) [rectangle,draw,minimum size=2cm] {
    \begin{align*} a^2 \\ b^2 \end{align*}
};
\end{tikzpicture}

\end{document}

导致以下错误。

! Missing \endgroup inserted.
<inserted text> 
                \endgroup 
l.8     \begin{align*} a^2 \\ b^2 \end{align*}

下面的代码

\documentclass{article}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
\node at (0, 0) [rectangle,draw,minimum size=2cm] {
    \[ a^2 \]
};
\end{tikzpicture}

\end{document}

导致以下错误。

! Missing $ inserted.
<inserted text> 
                $
l.8     \[ a^
             2 \]

以下是我的问题:

  1. 为什么tabular环境(与align*显示数学相比)的特殊性使得可以将其用作节点内的文本?
  2. Missing \endgroup inserted或错误是什么Missing $ inserted意思?

答案1

另一种解决方案是使用\shortstack[position]{... \\ ... \\ ...}

\shortstack 命令生成一个对象堆栈。有效位置为:

  • r 将对象移动到堆栈的右侧
  • l 将对象移至堆栈左侧
  • c 将对象移动到堆栈的中心(默认)
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\begin{document}

Using ``shortstack'' \\

\begin{tikzpicture}
\node at (0, 0) [rectangle,draw,minimum size=2cm] {
\shortstack{$a^2$\\$b^2$}
};
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

您可以使用arrayalined环境

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\begin{document}

Using ``array'' \\

\begin{tikzpicture}
\node at (0, 0) [rectangle,draw,minimum size=2cm] {
$\begin{array}{c} a^2 \\ b^2 \end{array}$
};
\end{tikzpicture}
\bigskip

Using ``aligned'' \\

\begin{tikzpicture}
\node at (0, 0) [rectangle,draw,minimum size=2cm] {
$\begin{aligned} a^2 \\ b^2 \end{aligned}$
};
\end{tikzpicture}

\end{document}

在此处输入图片描述

关于您对使用某个环境的担忧,我在以下问题的答案中找到了有关它的一些重要信息

1.对齐/排列方程式 - 解释选项 回答“数组是为矩阵设计的,并将其内容设置为内联数学模式,并且未针对对齐单个方程式进行优化。” -@David Carlisle

2.TikZ 节点内部的对齐方程。 评论“align 显示,设置正常文本并居中。这里需要 minipage 环境或 \parbox,因此需要指定宽度。至少对于居中而言。” – @Stefan Kottwitz

相关内容