我是 Latex 的新手,我需要创建一个用户定义的命令或宏。我需要在 pdf 上打印 unix shell 命令,代码如下所示
\begin{lstlisting}[language=bash]
$sudo apt-get install build-essential
\end{lstlisting}
必须对每个 unix 命令执行此操作,而我有太多这样的命令。因此,我认为我可以创建一个名为的新命令,\shell
如下所示
\newcommand{\shell}[1]{
\begin{lstlisting}[language=bash]
#1
\end{lstlisting}
}
我遇到了一些!Emergency stop
错误。有人能告诉我我做错了什么吗?谢谢。
答案1
尝试使用此命令,您将不会收到紧急停止错误:
\newcommand{\shell}[1]{\lstinline[language=bash] {#1} }
我不确定使用newcommand
while 的正确性,实际上,你正在定义newenvironment
。如果您有兴趣定义新环境,则可以使用此处提到的语法:https://en.wikibooks.org/wiki/LaTeX/Macros#New_environments
答案2
正如评论中所述,我不建议尝试包装lstlisting
到自定义环境中。它们确实很脆弱,并且与“正常”tex 命令的行为不同。但listings
它本身提供了定义自己的能力lstnewenvironment
,从而节省了您[language=bash]
每次输入的时间。
\documentclass{article}
\usepackage{listings}
\lstnewenvironment{shell}{\lstset{language=bash}}{}
\begin{document}
\begin{shell}
$sudo apt-get install build-essential
\end{shell}
\end{document}