在增量叠加规范的情况下,在 beamer 类的 \item 里面使用 \lstinline 吗?

在增量叠加规范的情况下,在 beamer 类的 \item 里面使用 \lstinline 吗?

的答案在 \item 中使用 \lstinline和班级合作得相当好beamer

但是,正如以下 MCE 所指出的,当\beamerdefaultoverlayspecification{<+->}取消注释时,如果使用增量覆盖规范,它们将不起作用:不会打印项目标签。

如果存在增量覆盖规范,有没有办法\lstinline在类内部\item使用?beamer

  • 马丁的回答

    \documentclass{beamer}
    
    \usepackage{listings}
    
    \makeatletter
    \let\orig@item\item
    
    \def\item{%
        \@ifnextchar{[}%
            {\lstinline@item}%
            {\orig@item}%
    }
    
    \begingroup
    \catcode`\]=\active
    \gdef\lstinline@item[{%
        \setbox0\hbox\bgroup
            \catcode`\]=\active
            \let]\lstinline@item@end
    }
    \endgroup
    
    \def\lstinline@item@end{%
        \egroup
        \orig@item[\usebox0]%
    }
    \makeatother
    
    \begin{document}
    \begin{frame}[fragile]
      \frametitle{Foo}
    The arguments of the function are:
    
    % \beamerdefaultoverlayspecification{<+->}
    \begin{description}
    \item[\lstinline!foo!]
        Name of the file \\[1cm] % other [ ] still work as normal!
        something
    \item[\lstinline!bar!]
    Permissions
    \item[\lstinline!%^$]_!]
    verbatim
    \end{description}
    \end{frame}
    \end{document}
    
  • 埃尔隆德的回答

    \documentclass{beamer}
    
    \usepackage{listings}
    
    \newcommand*{\lstitem}[1]{
      \setbox0\hbox{\lstinline{#1}}
      \item[\usebox0]
    }
    
    \begin{document}
    \begin{frame}[fragile]
      \frametitle{Foo}
      The arguments of the function are:
    
      % \beamerdefaultoverlayspecification{<+->}
      \begin{description}
        \lstitem{foo}
        Name of the file
        \\[1cm] % other [ ] still work as normal!
        something
      \lstitem{bar}  Permissions
      \end{description}
    \end{frame}
    \end{document}
    

相关内容