我想在演示文稿的一张幻灯片上叠加多个 lstinputlisting,这些幻灯片是用 latex 和 documentclass beamer 创建的。我找到的唯一解决方案是针对 lstlistings 的,但它们不适用于 lstinputlistings。我的代码:
\documentclass{beamer}
% Packages required for correct language representation and input
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
% Packages needed for the diagrams
\usepackage{tikz}
\usepackage[ngerman]{struktex}
\usepackage{pgf-umlcd}
\usepackage{graphicx}
\usepackage{csvsimple}
\usepackage{pgfplots}
% Packages used for the code
\usepackage{listings}
% Defining the theme for the presentation
\usetheme{JuanLesPins}
\usefonttheme{serif}
\useinnertheme{circles}
\useoutertheme{default}
\usecolortheme{beaver}
\setbeamercovered{transparent}
% Defining how lstlistings should look like
\lstset{rangeprefix=\#\{\ ,% curly left brace plus space
rangesuffix=\ \},
frame = single,
breaklines=true
breakautoindent=true,
postbreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\color{red}\hookrightarrow\space}}}
% Replacing the navigation bar by the slidenumbers
\beamertemplatenavigationsymbolsempty
\setbeamertemplate{footline}[frame number]
begin{document}
...blablabla...
\begin{frame}{Python-Skript -- Lesen der Daten 1}
\only<1->{\lstinputlisting[linerange=imp-end, includerangemarker=false,
language=Python]{../daten/einnahmen_plot.py}}
\only<2->{\lstinputlisting[linerange=reading1-end, includerangemarker=false,
language=Python]{../daten/einnahmen_plot.py}}
\end{frame}
\end{document}
到目前为止,这工作正常。但如果我用“\uncover”替换“\only”指令,我会得到很多错误(太多了,无法在这里显示)。我还尝试将 lstinputlistings 打包成半逐字,就像你可以用 lstlistings 做的那样,但它不起作用。块等也是一样。有什么想法可以解决这个问题吗?我不想只使用,我需要一个真正的覆盖,比如 reveal 之类的东西!
答案1
非常简单的解决方案。问题是我将 beamercovered 设置为透明。似乎 LaTeX 不喜欢列表/块这样。只需删除
\setbeamercovered{transparent}
或者将其设置为在列表之前不可见。
...
\setbeamercovered{invisible}
% frame with blocks and listings etc.
...
\setbeamercovered{transparent}
...
这使得列表/块与列表叠加成为可能,并将 beamercovered 重新设置为透明。