在易碎幻灯片中缩进 \end{frame}

在易碎幻灯片中缩进 \end{frame}

此问题已修复投影机 v3.37,如果你仍然遇到此问题,请尝试更新到最新版本的 beamer

突然,我无法再使用\end{frame}该选项缩进幻灯片fragile,例如

\documentclass{beamer}

\begin{document}

    \begin{frame}[fragile]
        test
    \end{frame}

\end{document}

不起作用,但给出错误File ended while scanning use of \next.


将日志文件与之前的演示文稿进行比较,可以看到beamer软件包的不同版本,并查看最近所做的更改,我想我能够确定负责提交的2e946022在哪里

\beamer@makeinnocent\^^I % Allow tab chars

已添加到包中。

据我所知,这允许在中使用制表符listings。虽然这可能对实际使用制表符的人有帮助,但它listings破坏了与我的许多演示文稿的向后兼容性,说实话,我喜欢缩进代码的功能,因为它让我更容易阅读。


问题:

长话短说:我能以某种方式在本地恢复吗?最好不要破解我本地的 LaTeX 发行版,以便修复可以在后续更新中继续存在?

答案1

看起来您已经准确指出了导致变化的原因,这很有效(使用制表符缩进)

\documentclass{beamer}
\makeatletter
\def\beamer@verbatimreadframe{%
  \begingroup%
  \let\do\beamer@makeinnocent\dospecials%
  \count@=127%
  \@whilenum\count@<255 \do{%
    \advance\count@ by 1%
    \catcode\count@=11%
  }%
  \beamer@makeinnocent\^^L% and whatever other special cases
% \beamer@makeinnocent\^^I % Allow tab chars
  \endlinechar`\^^M \catcode`\^^M=12%
  \@ifnextchar\bgroup{\afterassignment\beamer@specialprocessframefirstline\let\beamer@temp=}{\beamer@processframefirstline}}%


\begin{document}

    \begin{frame}[fragile]
        test
    \end{frame}

\end{document}

您可能不想将其放入旧的演示文稿中,但如果您将其副本放入beamerbaseverbatim.sty与演示文稿相同的目录中并注释掉您突出显示的行,则使用制表符缩进将起作用(尽管这可能不是一个好主意)

相关内容