我有这段代码,我希望蓝色圆圈节点在突出显示时不展开整个表格。使用附加的最小尺寸选项,表格保持不变,但节点会移动,这很丑陋:
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{frame}[fragile]
\begin{tikzpicture}
\footnotesize
\matrix (m) [matrix of nodes, row sep=1\pgflinewidth, column sep=1\pgflinewidth,
nodes={rectangle, draw=gray, minimum height=2em,
anchor=center, align=center,
inner sep=0pt, outer sep=0pt}]{
1 & 5 & 6 & 6 & 6 & 7 & 7 & 7 & 8 & 8 & 9 & 10 \\
\alt<2->{11 & 11 & 11 & 12 & 12 & 12 & 12 & 13 & 13 & 13 & 14 & |[draw, circle, blue, text width=1.5em]| 14}
{11 & 11 & 11 & 12 & 12 & 12 & 12 & 13 & 13 & 13 & 14 & 14 }\\
14 & 14 & 15 & 16 & 17 & 17 & 17 & 18 & 18 & 18 & 18 & 19 \\
19 & 20 & 20 & 20 & 23 & 26 & 29 & 29 & 31 & 32 & 32 & 34\\
} ;
\end{tikzpicture}
\end{frame}
\end{document}
此外,如果有人知道一种更优雅的方式来混合 Beamer 和 TikZ 矩阵以改变节点方面,欢迎他!谢谢。
答案1
这是实现此目的的一种方法。还请注意,使用此方法,代码会简化(我添加了一个minimum width
值仅用于示例,但如果您不想使用它,可以将其删除):
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{matrix}
\tikzset{onslide/.code args={<#1>#2}{%
\only<#1>{\pgfkeysalso{#2}}%
}
}
\begin{document}
\begin{frame}[fragile]
\begin{tikzpicture}
\footnotesize
\matrix (m) [
matrix of nodes,
row sep=1\pgflinewidth,
column sep=1\pgflinewidth,
nodes={
rectangle,
draw=gray,
minimum height=2em,
anchor=center,
align=center,
minimum width=2em,
inner sep=0pt,
outer sep=0pt
}
]
{
1 & 5 & 6 & 6 & 6 & 7 & 7 & 7 & 8 & 8 & 9 & 10 \\
11 & 11 & 11 & 12 & 12 & 12 & 12 & 13 & 13 & 13 & 14 & |[onslide=<2->{circle,overlay,blue}]|14 \\
14 & 14 & 15 & 16 & 17 & 17 & 17 & 18 & 18 & 18 & 18 & 19 \\
19 & 20 & 20 & 20 & 23 & 26 & 29 & 29 & 31 & 32 & 32 & 34\\
};
\end{tikzpicture}
\end{frame}
\end{document}
结果动画: