Beamer 覆盖规范和 tcblistings

Beamer 覆盖规范和 tcblistings

我有一张带有多个代码片段的投影仪幻灯片,这些代码片段使用 tcblisting 格式化并使用 tcb 光栅块显示。我想一次显示一个 tcblisting 块,但我无法正确获得覆盖规范。

这是 Beamer frame

\begin{frame}[fragile=singleslide]
  \begin{ccodeblock}{C Source}
    long plus(long x, long y);

    void sumstore(long x, long y, long *dest)
    {
      long t = plus(x, y);
      *dest = t;
    }
  \end{ccodeblock}
  \begin{tcbraster}[raster columns=2, raster equal height]
    \begin{gascodeblock}{Assembly Output (x86-64)}
      sumstore:
        pushq   %rbx
        movq    %rdx, %rbx
        call    plus
        movq    %rax, (%rbx)
        popq    %rbx
        ret
    \end{gascodeblock}
    \begin{verbatimcodeblock}{Machine Code}
      0x53 0x48 0x89 0xd3 0xe8
      0xf2 0xff 0xff 0xff 0x48
      0x89 0x03 0x5b 0xc3
    \end{verbatimcodeblock}
  \end{tcbraster}
\end{frame}

ccodeblock、和gascodeblockverbatimcodeblock使用 定义的\newtcblisting。我想要:

  • ccodeblock在所有幻灯片上
  • gascodeblock<2->
  • verbatimcodeblock<3->

我曾尝试使用\only\onlyenv等,但最终<2->在排版输出中出现了覆盖规范(例如)。

谢谢,
汤姆。

答案1

我不想猜测你的自定义tcblisting是如何定义的,所以我只是从手册中获取了一些随机代码tcolorbox

\pause如果将框架选项fragile=singleslide替换为-- ,则只需使用即可fragile,这很有意义,因为您希望在多张幻灯片上拥有易碎内容。

\documentclass[11pt]{beamer}

\usepackage[listings]{tcolorbox}

\begin{document}
\begin{frame}[fragile]
  \begin{tcblisting}{colback=red!5!white,colframe=red!75!black}
    long plus(long x, long y);

    void sumstore(long x, long y, long *dest)
    {
      long t = plus(x, y);
      *dest = t;
    }
  \end{tcblisting}
  \pause
  \begin{tcblisting}{colback=red!5!white,colframe=red!75!black}
    sumstore:
      pushq   %rbx
      movq    %rdx, %rbx
      call    plus
      movq    %rax, (%rbx)
      popq    %rbx
      ret
  \end{tcblisting}
\end{frame}


\end{document}

在此处输入图片描述

相关内容