在 Latex 中使用 lstinputlistings 上的覆盖

在 Latex 中使用 lstinputlistings 上的覆盖

我想在演示文稿的一张幻灯片上叠加多个 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 重新设置为透明。

相关内容