如何在 \newcommand 中转换 \defverbatim 环境?

如何在 \newcommand 中转换 \defverbatim 环境?

我的beamer演讲中有很多\defverbatim像这样的

\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{minted}
\usemintedstyle{manni}

\newminted{SQL}{fontsize=\scriptsize, 
linenos=false,
numbersep=10pt,
gobble=0,
frame=none,
framesep=5mm} 

\begin{document}

\defverbatim[colored]\interfaceTime{
    \begin{SQLcode}
    interface Time: Object {
    ...
    unsigned short   hour();
    boolean          is_equal(in Time other_date);
    Interval         subtract_time(in Time other_time);
    };

\end{SQLcode}
}

\newcommand{\Code}[2]{\verbatim{\begin{#2} #1 \end{#2}}}

    \begin{frame}
        \interfaceTime
    \end{frame}

    \begin{frame}
        \Code{CREATE TABLE EMP;}{SQLcode}
    \end{frame}

\end{document}

我想创建一个\newcommand带有一些参数的自定义,以避免创建大量的\defverbatim。这是我收到的消息

(no line number):
Runaway argument?
{\begin {SQLcode} CREATE TABLE EMP; \end {SQLcode}} \end {beamer@fram\ETC.
! File ended while scanning use of \@xverbatim.
<inserted text> 
    \par 
<*> main.tex

答案1

不需要让事情变得比必要的更复杂,我只需\begin{SQLcode} ... \end{SQLcode}直接使用而不需要将其包装在额外的命令层中。

\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{minted}

\newminted{SQL}{fontsize=\scriptsize, 
linenos=false,
numbersep=10pt,
gobble=0,
frame=none,
framesep=5mm} 

\begin{document}

\begin{frame}[fragile]
text

\begin{SQLcode} 
CREATE TABLE EMP; 
\end{SQLcode}

text
\end{frame}

\end{document}

相关内容