我正在尝试定义一个模拟 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
即可。