beamer表

beamer表

beamer

桌子看起来像一个块中展示了两种方法,使表格看起来类似于类block中的环境beamer。两者都要求拆分标题行和内容行:前者放入的参数中\begin{block},后者构成该环境的内容。为了方便起见,下面重复了略作修改的代码。

\documentclass[xcolor=table]{beamer}  
\usetheme{Berlin}  
\setbeamertemplate{blocks}[rounded][shadow=true]
\usepackage{tikz}

% reuse table markup
\mode<article>{
  \usepackage{booktabs}
}
\mode<presentation>{
  \definecolor{TableHeader}{RGB}{38,38,134}
  \definecolor{TableBody}{RGB}{233,233,243}
  \newcommand{\midrule}{\rowcolor{TableBody}}% ≈ \hline
  \newcommand{\toprule}{\rowcolor{TableHeader}}% ≈ \firsthline
  \newcommand{\bottomrule}{}% ≈ \lasthline
}

\begin{document}

%% zebra-striped tables
\rowcolors{1}{}{yellow}

\begin{frame}[t]{Problem: mismatched \texttt{tabular} and \texttt{block} style}
\begin{center}
\begin{tabular}{*2{p{0.45\textwidth}}}
% Header row:
  \toprule
  Left Header Cell & Right Header Cell \\ 
  \midrule
% Content rows:
  \begin{itemize}\item a \item b\end{itemize} &
  \begin{enumerate}\item c \item d \end{enumerate} \\
  e & \alert{f} \\ 
  \bottomrule
\end{tabular}
\end{center}
\begin{block}{Block caption}
  Block contents
\end{block}
\end{frame}

\begin{frame}[t]{Method 1: split \texttt{tabular}}
\begin{block}{% Header row:
\begin{center}
\begin{tabular}{*2{p{0.45\textwidth}}}
  \toprule
  Left Header Cell & Right Header Cell \\    % don’t put \midrule or \hline here
\end{tabular}
\end{center}%
}
% Content rows:
\begin{center}
\begin{tabular}{*2{p{0.45\textwidth}}}
  \midrule
  \begin{itemize}\item a \item b\end{itemize} &
  \begin{enumerate}\item c \item d \end{enumerate} \\
  e & \alert{f} \\ 
  \bottomrule
\end{tabular}
\end{center}
\end{block}
\end{frame}

\begin{frame}[t]{Method 2: aligned TikZ blocks}
\tikzset{blocknode/.style={inner sep=2,text width=0.5\textwidth,below right}}
\begin{block}{\tikz{% Header row:
  \node[blocknode] {Left Header Cell}; 
  \node[blocknode] at (0.5\textwidth,0) {Right Header Cell};
}}% Content rows:
\begin{tikzpicture}
  \node[blocknode] {\begin{itemize}\item a\item b\end{itemize}};
  \node[blocknode] at (0.5\textwidth,0) {\begin{enumerate}\item c\item d\end{enumerate}};
  \node[blocknode] at (0,-2) {e};
  \node[blocknode] at (0.5\textwidth,-2) {\alert{f}};
\end{tikzpicture}
\end{block}
\end{frame}

\end{document}

隐式表格标记

普通表格通常使用水平线,如果使用包的话,水平线由\*hline或 由生成。通常标题行由两条线包围,有时标题包含几行。底部可能有一个页脚行,用于指示总数或类似内容,该行也由水平线包围。在足够简单的表格中,几乎不需要另一条线来显示在屏幕演示中。\*rulebooktabs

% vertically structured table
\begin{tabular}{…}
\firsthline
Header rows \\
\hline
Content rows \\
\hline
Footer rows \\
\lasthline
\end{tabular}
% … with booktabs.sty
\begin{tabular}{…}
\toprule
Header rows \\
\midrule
Content rows \\
\midrule
Footer rows \\
\bottomrule
\end{tabular}

问题

\mode在用于生成演示文稿和打印讲义的双重用途(切换)文档中(但一般也如此):

  1. 是否可以重用这个隐式表格标记,使表格看起来像块,而不需要实际上将每个表格包装在另一个环境中?
    1. block(分手后)
    2. tikzpicture
  2. 是否应该更好地介绍表格结构的语义标记

并发症1:总和行也应该具有不同的背景颜色,并且 - 根据主题 - 在左下角和右下角有圆角。

并发症2: 斑马条纹\rowcolors)和手册行突出显示(要么\hline/midrule要么\rowcolor)应该可以工作。因此TikZ 解决方案可能已经出局。

相关内容