![覆盖列和逐字环境](https://linux22.com/image/354628/%E8%A6%86%E7%9B%96%E5%88%97%E5%92%8C%E9%80%90%E5%AD%97%E7%8E%AF%E5%A2%83.png)
我想使用 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}