Beamer:第一行具有不同属性的矩阵

Beamer:第一行具有不同属性的矩阵

我想要一张如下所示的幻灯片:

  • 在顶部,我想要在我定义的 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=2row=1,依此类推。如果您有一个包含 7 列的矩阵,则需要

 visible on=<\the\numexpr-7+\pgfmatrixcurrentcolumn+7*\pgfmatrixcurrentrow\relax->

反而。

相关内容