覆盖列和逐字环境

覆盖列和逐字环境

我想使用 Beamer 的覆盖功能显示我的文本。

例子

按照这个顺序:

  • 介绍短语 0 --> 项目 1 --> 项目 2 --> 代码 4 等等

此外,我想知道如何将左列的文本内容与右列的代码垂直对齐(例如,代码 3 位于项目 1 和项目 2 之间,代码 6 与项目 5 对齐……)。到目前为止,我只使用 Verbatim 环境中的空格。

为了与 overlay 和 verbatim 环境配合使用,必须使用环境onlyenv。而 columns 环境中的 overlay 则使用<1->etc设置。

尽管如此,我还是无法按照我想要的方式展示我的内容。

注意:一旦显示,我希望项目/代码显示在幻灯片的其余部分,而不是相反,消失。

梅威瑟:

\documentclass[11pt, xcolor=dvipsnames]{beamer}

\usetheme[titleformat=regular, numbering=fraction,
progressbar=frametitle, sectionpage=none]{metropolis}

\usepackage{verbatim}
\usepackage{fancyvrb}
\usepackage{listings}

% ----

\begin{document}

\begin{frame}[fragile]
\frametitle{Overlay Example}
\vspace{0.8em}
\begin{columns}
\begin{column}[t]{0.70\textwidth}
Intro phrase 0
\begin{enumerate}
\item Item 1
\item Item 2 \medskip
\end{enumerate}

Intro phrase 4
\begin{itemize}
\item Item 5
\item Item 7
\item Item 9
\end{itemize}
\end{column}
\vrule{}
\begin{column}[t]{0.30\textwidth}
\begin{Verbatim}[fontsize=\small]
  Code 3


\end{Verbatim}
\begin{Verbatim}[fontsize=\small]


  Code 6


  Code 8    


  Code 10

\end{Verbatim}
\end{column}
\end{columns}   
\end{frame}

\end{document}

答案1

这个答案仅解决对齐问题,而不是覆盖问题。

它使用verbatimbox包将代码内容放入 LaTeX 框中。然后我引入宏\setverbbox[<extra -rule-depth>]来将最近创建的设置verbbox在项目的右侧。

项目输入的格式为

\item <Item text>
\begin{verbbox}[\footnotesize]
<Code>
\end{verbbox}
\setverbbox[<extra-rule-depth>]

此格式假定项目文本为一行,小于规则的宽度。如果不是,可以将项目文本放入顶部对齐的\parbox,如项目 1 的 MWE 所示。

\documentclass[11pt, xcolor=dvipsnames]{beamer}

\usetheme[titleformat=regular, numbering=fraction,
progressbar=frametitle, sectionpage=none]{metropolis}

\usepackage{verbatim}
\usepackage{fancyvrb}
\usepackage{listings}
\usepackage{verbatimbox,stackengine}
% ----
\newcommand\codewidth{3cm}
\newcommand\setverbbox[1][12pt]{\hfill\belowbaseline[-.7\ht\strutbox]{%
  \smash{\rule[-#1]{1pt}{\dimexpr#1+\ht\savedverbbox+3pt}}%
  \dp\savedverbbox=10pt\relax%
  \makebox[\codewidth][l]{\theverbbox}}\qquad\mbox{}}
\begin{document}
\begin{frame}[fragile]
\frametitle{Overlay Example}
Intro Phrase 0
\setverbbox[25pt]\\
\begin{enumerate}
\item \parbox[t]{5cm}{Item 1 is a bit longer than a single line\strut}
\begin{verbbox}[\footnotesize]
Code 3
\end{verbbox}
\setverbbox[18ex]

\item Item 2 
\end{enumerate}

Intro phrase 4\\
\begin{itemize}
\item Item 5
\begin{verbbox}[\footnotesize]
Code 6
Code 6 cont.
line 3 of code 6
\end{verbbox}
\setverbbox

\item Item 7
\begin{verbbox}[\footnotesize]
Code 8
\end{verbbox}
\setverbbox
\item Item 9
\begin{verbbox}[\footnotesize]
Code 10
2nd line code 10
\end{verbbox}
\setverbbox
\end{itemize}
\end{frame}
\end{document}

在此处输入图片描述

相关内容