我需要编写一个文档,其中记录了 unix 命令行界面软件(通过 bash)的输入和输出。例如,我需要显示类似以下内容的内容:
$ git log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short --all
* 1c0435a 2013-08-17 | Aggiunta del telefono (HEAD, master)
* 928406c 2013-08-17 | Il mio primo commit modificato (v1, origin/master)
* 8a3b838 2013-08-17 | Il mio primo commit (v1-beta)
其中第一行是 bash 提示符,第 2 至第 4 行是软件的输出(在本例中为 git)。
你知道,bash-prompt 的过长行需要用反斜杠 \ 作为回车符,否则 bash 不会将其算作一行,而是算作两行。所以,如果你需要中断第一行,你必须这样写
$ git log --pretty=format:"%h %ad | %s%d [%an]" \
--graph --date=short --all
显然,虽然您希望在提示符的断行上使用反斜杠,但您不希望在输出行上使用反斜杠。因此,即使您确实希望断开第 2 至第 4 行,您也不希望使用斜杠:
错误的
* 1c0435a 2013-08-17 | Aggiunta del \
telefono (HEAD, master)
* 928406c 2013-08-17 | Il mio primo commit \
modificato (v1, origin/master)
* 8a3b838 2013-08-17 | Il mio primo commit \
(v1-beta)
正确的
* 1c0435a 2013-08-17 | Aggiunta del
telefono (HEAD, master)
* 928406c 2013-08-17 | Il mio primo commit
modificato (v1, origin/master)
* 8a3b838 2013-08-17 | Il mio primo commit
(v1-beta)
完美的解决方案是让我决定在哪里用反斜杠换行,在哪里不用反斜杠换行。你对如何实现这一点有什么想法吗?我的意思是
moredelim=[is][pbreak=\small\symbol{'134}]{§§}{§§}
(我知道这个例子不起作用,它只是为了让你知道我的意思:它的目的是用 \ 打破我在§§ 内转义的行)这是我的 lstset:
\lstset{ %
language=xml, % choose the language of the code
basicstyle=\small\ttfamily,% \footnotesize, % the size of the fonts that are used for the code
numbers=left, % where to put the line-numbers
numberstyle=\footnotesize, % the size of the fonts that are used for the line-numbers
stepnumber=1, % the step between two line-numbers. If it is 1 each line will be numbered
numbersep=5pt, % how far the line-numbers are from the code
backgroundcolor=\color{white}, % choose the background color. You must add \usepackage{color}
showspaces=false, % show spaces adding particular underscores
showstringspaces=false, % underline spaces within strings
showtabs=false, % show tabs within strings adding particular underscores
frame=single, % adds a frame around the code
tabsize=2, % sets default tabsize to 2 spaces
captionpos=b, % sets the caption-position to bottom
breaklines=true, % sets automatic line breaking
prebreak=\small\symbol{'134},
breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace
moredelim=[is][\bfseries]{@@}{@@}
}