我想要一张如下所示的幻灯片:
- 在顶部,我想要在我定义的 tcbtheorem 环境中有一个定理陈述。
- 在其下方,我希望在一些垂直间距之后,出现以下形式的两列。
- 第一行的每个元素都必须是我定义的形式的 tcolorbox;此外,每个元素都应该能够容纳几行文本,但又不能太宽(因此它们的高度可能比只有一行文本的框要大一些)。
- 后续行应该是比第一行看起来更为简单的 tcolorboxes(我希望能够自定义这些;因此本质上,我要求这些行采用不同的样式)。
- 我希望按以下顺序显示整个矩阵:(row1,col1),(row1,col2),(row2,col1),(row2,col2)等。
到目前为止,我仅实现了其中的一小部分目标。如果能得到任何帮助,我将不胜感激。
\documentclass{beamer}
\mode<presentation>
{
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{caption}[numbered]
}
\usepackage{tcolorbox}
\usepackage{tikz}
\usetikzlibrary{matrix,overlay-beamer-styles}
%%%%%%%%%
\usetikzlibrary{calc}
%%%%%%%%
\tcbuselibrary{theorems}
\newtcbtheorem[]{mylemmma}{Lemma}{colframe=green,colback=white, width=\textwidth}{lem}
\tcbset{colframe=green, colback=white}
\resetcounteronoverlays{tcb@cnt@mylemmma}
\begin{document}
\section{Proofs}
\newtcbtheorem[]{mydef}{Problem Statement}{colframe=white, colback=white}{ps}
\tcbset{colframe=black, colback=white}
\resetcounteronoverlays{tcb@cnt@mydef}
\begin{frame}[fragile]
\begin{mylemmma}{theorem title}{thm}
For any fixed iteration,
\[
f(x+a)\approx f(x) + f'(x)(a) + 1/2 f''(z) (a^2)
\]
\end{mylemmma}
\centering
\begin{tikzpicture}[optimization problem/.style = {%
rounded corners,
draw = blue,
thick,
fill= white,
inner ysep=5pt,
inner xsep=5pt,
align = center},
]
\matrix[matrix of nodes,row sep=1em,column sep=1em,
nodes={anchor=west,
visible on=<\pgfmatrixcurrentrow->,},
column 1/.style={nodes={optimization problem,
}},
column 2/.style={nodes={optimization problem,
alt=<-\the\numexpr\pgfmatrixcurrentcolumn-1>{opacity=0,text opacity=0}{},
}}](M){
vectors & matrices\\
reason 1 & matrix reason 1\\
reason 2 & matrix reason 2\\
};
\end{tikzpicture}
\end{frame}
\end{document}
答案1
我非常喜欢每个问题只回答一个问题,所以这个答案集中在最后一个问题上,因为答案非常简单。;-) 答案是
visible on=<\the\numexpr-2+\pgfmatrixcurrentcolumn+2*\pgfmatrixcurrentrow\relax->
(我添加了-2
感谢你的评论!或者更详细地说,
\documentclass{beamer}
\mode<presentation>
{
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{caption}[numbered]
}
\usepackage{tcolorbox}
\usepackage{tikz}
\usetikzlibrary{matrix,overlay-beamer-styles}
%%%%%%%%%
\usetikzlibrary{calc}
%%%%%%%%
\tcbuselibrary{theorems}
\newtcbtheorem[]{mylemmma}{Lemma}{colframe=green,colback=white, width=\textwidth}{lem}
\tcbset{colframe=green, colback=white}
\resetcounteronoverlays{tcb@cnt@mylemmma}
\begin{document}
\section{Proofs}
\newtcbtheorem[]{mydef}{Problem Statement}{colframe=white, colback=white}{ps}
\tcbset{colframe=black, colback=white}
\resetcounteronoverlays{tcb@cnt@mydef}
\begin{frame}[fragile]
\begin{mylemmma}{theorem title}{thm}
For any fixed iteration,
\[
f(x+a)\approx f(x) + f'(x)(a) + 1/2 f''(z) (a^2)
\]
\end{mylemmma}
\centering
\begin{tikzpicture}[optimization problem/.style = {%
rounded corners,
draw = blue,
thick,
fill= white,
inner ysep=5pt,
inner xsep=5pt,
align = center},
]
\matrix[matrix of nodes,row sep=1em,column sep=1em,
nodes={anchor=west,optimization problem,
visible on=<\the\numexpr-2+\pgfmatrixcurrentcolumn+2*\pgfmatrixcurrentrow\relax->,},
](M){
vectors & matrices\\
reason 1 & matrix reason 1\\
reason 2 & matrix reason 2\\
};
\end{tikzpicture}
\end{frame}
\end{document}
这是如何工作的?首先,tikzlibrarymatrix.code.tex
您可以找到一些不错的键和对象,它们还没有进入 pgfmanual。在这个答案中,重要的是
\pgfmatrixcurrentcolumn
,TeX 计数,表示单元格的列,以及\pgfmatrixcurrentrow
,表示列的行数的 TeX 计数。
除此之外,你还可以找到钥匙
execute at end matrix
,execute at begin cell
,execute at end cell
,execute at empty cell
,
它们是可以用来自动填充矩阵的钩子。在上面的代码中,
visible on=<\the\numexpr-2+\pgfmatrixcurrentcolumn+2*\pgfmatrixcurrentrow\relax->
使用库visible on
中的密钥overlay-beamer-styles
。选择组合使得对于覆盖层编号 1,单元格 11 变为可见,因为-2+column+2*row=1
对于column=row=1
,对于覆盖层编号 2,单元格 12 变为可见,因为-2+column+2*row=2
对于column=2
和row=1
,依此类推。如果您有一个包含 7 列的矩阵,则需要
visible on=<\the\numexpr-7+\pgfmatrixcurrentcolumn+7*\pgfmatrixcurrentrow\relax->
反而。