我想在 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 \]
以下是我的问题:
- 为什么
tabular
环境(与align*
显示数学相比)的特殊性使得可以将其用作节点内的文本? 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
您可以使用array
或alined
环境
\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