\newcommand 内的环境

\newcommand 内的环境

这是我的第一个问题,因此请随意以任何方式纠正。

我正在努力解决以下问题:使用environment in a \newcommand

\describe我想这样 定义命令:(它需要一个 bash 命令名称(#1)、一个使用它的示例(#2)和一个描述(#3))。

\newcommand{\describe}[3]{
\subsection*{#1}
\begin{lstlisting}
#2
\end{lstlisting}
{\colorbox{gray}{#1}\ #3}
}

我唯一得到的是

"no legal \end found"

错误。

所以我的问题是:有没有办法在新命令中使用环境?

答案1

\newcommand逐字内容环境不能一起工作(不用多说)并且我的方法并不总是有效。

逐字环境例如lstlisting需要一个明确的终点,逐字内容在此停止并且通常的内容LaTeX(即扩展)应该继续。这可以通过\scantokens{...}提供\end{tcblisting}此处作为结束标记来实现。

我决定使用tcolorbox及其列表选项,因为显然涉及到颜色框。

的配置选项有很多tcolorbox,我在这里仅限于主要功能(以及与 结合使用的专门列表环境xparse)。

xparse包允许提供v仅作为现状的逐字论据。

\documentclass{article}


\usepackage{xcolor}
\usepackage{xparse}
\usepackage[most]{tcolorbox}

\begin{document}





\NewDocumentCommand{\describe}{O{}+m+v+m}{%
  \scantokens{%
    \begin{tcblisting}{enhanced,
        before={\subsection*{#2}},
        title={#4},
        listing only,
        colback={white!80!black},
        sharp corners,
        colbacktitle={white!60!black},
        boxrule=1pt,
        left=5pt,
        #1}
      #3
    \end{tcblisting}
  }%
}


\describe{My command}{ls -ltr}{Foo}

\describe[colback=green!40!white]{Another command}{pdflatex thisniceexample}{Do you like what you see?}

\end{document}

在此处输入图片描述

相关内容