我正在编写一组关于一些基于命令行的工具的教程文档。本教程需要显示“屏幕会话”。内容如下:
$ git status
# on branch "master"
我希望能够:
- 用特定颜色标记 shell 提示符(我总是使用开头的 $ 来表示我在提示符上)
- 使用不同的颜色识别命令输出
- 识别 shell 命令中的关键字
我查看了该listings
包,它似乎在正确的路径上,但我找不到产生这种输出的方法。我看到了有关如何为 listings 包生成不同“语言”的文档,但我无法解决这个问题,因为我找不到太多文档。
此类“语言”规范是否有公开的实现?如果没有,您能给我一些关于如何定义的提示吗?
答案1
这可能会回答您的一些问题。对于提示,您可以使用选项literate
。显示了两种为输出着色的方法。第一种方法不是很好,但它可以完成非常简短和简单的输出。另一种方法是定义输出环境。两者的结果是不同的:使用转义字符时,您将离开列表模式,并且字母之间的间距不一样。请参见下面红色的输出文本。
\documentclass{minimal}
\usepackage{listings}
\usepackage{xcolor}
\lstnewenvironment{code}
{\lstset{%
basicstyle=\ttfamily,
escapechar=~,
morekeywords={foo,bar},
keywordstyle=\color{green},
literate={\$}{{\textcolor{blue}{\$}}}1}
}
{}
\lstnewenvironment{codeoutput}
{\lstset{basicstyle=\ttfamily\color{red}}}
{}
\begin{document}
\begin{code}
$ git status
# on branch "master"
foo in bar is blah
for short output
~\color{red}This is output\color{black}~
\end{code}
\begin{codeoutput}
This is output
\end{codeoutput}
\end{document}
输出为
答案2
我将发布我最初为 ActionScript 所做的设置:
\lstdefinelanguage{ActionScript} { %this is the name that you are going to use when you want to use the formatting
basicstyle=\ttfamily\scriptsize, %font family & size
sensitive=true, %if you want your keywords to be case sensitive
morestring=[b]",
%morestring: if single quotes open and close string or character literals in
%the same way as double quotes do in the example.
morecomment=[l][\color{flashgreen}\ttfamily]{//},
%morecomment has to do with comments in the text, read about them in the documentation
morecomment=[s][\color{flashgreen}\ttfamily]{/*}{*/},
morecomment=[s][\color{flashgreen}\ttfamily]{/**}{*/},
stringstyle=\color{flashred}, %string style (red in this case)
commentstyle=\color{flashgreen}, %comment style
showstringspaces=false, %the following are well documented in the listings docs
numberstyle=\scriptsize, %you can include almost any standard settings that you can efine in
numberblanklines=true,
showspaces=false,
showtabs=false,
emph =
{[1]
here, you, define, your, keywords, separated, by, commas, even, the, last,
one,
},
emphstyle={[1]\color{flashblue}\textbf}, %set the style of these keywords
emph =
{[2]
%more keywords with different style
},
emphstyle={[2]\color{flashlblue}\textbf}
}
如果有任何不清楚的地方请直接询问,我会尽力帮助您。