模拟 shell 环境

模拟 shell 环境

我正在尝试定义一个模拟 shell 的新环境。我希望使用它的方式是:

\begin{shell}
\item{echo foo}{foo}
\item{echo bar}{bar}
\end{shell}

其应该产生:

This is my shell prompt
1> echo foo
foo
2> echo bar
bar

我目前拥有的:

\newcommand{shellprompt}{This is my shell prompt}
\newenvironment{shell}{
  \shellprompt
  \begin{enumerate}[\hspace{15px} 1\textgreater]
    \let\olditem\item
    \renewcommand\item{\olditem}
  }{
  \end{enumerate}
}

我如何重新定义\item命令以便它接受第二个参数并将其打印在第二行?

奖金:如何将所有内容(提示 + 项目)包装在verbatim环境中?

答案1

这是有可能的:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{fancyvrb}
\DefineVerbatimEnvironment{shell}{Verbatim}{commandchars=\%\{\},formatcom=\setcounter{prompt}{0}}
\newcounter{prompt}
\newcommand{\prompt}{\stepcounter{prompt}\theprompt>}

\begin{document}
\begin{shell}
%prompt echo foo
foo
%prompt echo bar
bar
\end{shell}
\end{document}

在 shell 命令中,你需要转义%{}使用%,以便打印

% { }

你必须输入

%% %{ %}

在此处输入图片描述

如果你想在所有环境中添加相同的第一行,

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{fancyvrb}
\DefineVerbatimEnvironment{shell}{Verbatim}{commandchars=\%\{\},formatcom=\setcounter{prompt}{0}\start}
\newcounter{prompt}
\newcommand{\prompt}{\stepcounter{prompt}\theprompt>}
\newcommand{\start}{\noindent This is my shell prompt\par}

\begin{document}
\begin{shell}
%prompt echo foo{}
foo
%prompt echo bar
bar
\end{shell}
\end{document}

只需重新定义\start即可。

相关内容