在LaTex里写东西时往往需要插入代码,LaTex已经为我们准备了用来插入代码的包:listings包和xcolor包
这个包是用来插入代码的,如果不需要高亮显示,这个包已经完成了最基本的插入代码任务了. 例如需要插入R代码,用法如下:
\documentclass{article}
\usepackage{listings}
\begin{document}
\begin{lstlisting}[language=R]
> matrix(1:12,nrow=3,ncol=4)
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
\end{lstlisting}
输出结果如下:
代码中的关键字是加粗显示的,对于这种简单的代码,这样的setting就足够,看起来整齐又美观. 在写书时若需要插入简单的例子,建议用这种方式——不加高亮反而更好看.
不过对于某些代码,不显示高亮可读性就会降低,看起来不习惯.
xcolor包是用来高亮代码的.
代码的高亮
在\begin{document}
前加载包:
\usepackage{listings}
\usepackage{xcolor}
使用\lstset{}
进行代码环境的设置:
\lstset{
backgroundcolor=\color{white}, % 选择代码背景,必须加上\ usepackage {color}或\ usepackage {xcolor}.
basicstyle=\footnotesize, % 设置代码字号.
breakatwhitespace=false, % 设置是否当且仅当在空白处自动中断.
breaklines=true, % 设置自动断行.
captionpos=b, % 设置标题位置.
commentstyle=\color{mygreen}, % 设置注释格式
deletekeywords={...}, % 是否删除给定语言的关键词.
escapeinside={\%*}{*)}, % 是否在代码中添加LaTex.
extendedchars=true, % 是否允许使用非ASCII字符; 仅适用于8位编码,不适用于UTF-8.
frame=single, % 给代码区添加边框.
keepspaces=true, % 保留空格(useful for keeping indentation of code (possibly needs columns=flexible).
keywordstyle=\color{blue}, % 关键字显示风格.
language=Octave, % 使用的语言.
morekeywords={*,...}, % 是否需要添加其他的关键词.
numbers=left, % 给代码添加行号,可取值none, left, right.
numbersep=5pt, % 设置行号与代码之间的间隔
numberstyle=\tiny\color{mygray}, % 行号的字号和颜色
rulecolor=\color{black}, % 边框颜色,如果没有设置,框架颜色可以在非黑色文本中的换行符上更改(例如 text (e.g. comments (green here)))
showspaces=false, % 显示每个地方添加特定下划线的空格; 覆盖了'showtringspaces'
showstringspaces=false, % 仅在字符串中允许空格
showtabs=false, % show tabs within strings adding particular underscores
stepnumber=2, % the step between two line-numbers. If it's 1, each line will be numbered
stringstyle=\color{mymauve}, % string literal style
tabsize=2, % 将默认tab设置为2个空格
title=\lstname % show the filename of files included with \lstinputlisting; also try caption instead of title
}
一般不需要更改太多参数,只需要更改上面的一部分参数即可. 下面是我从网海水手的博客里摘出的设定:
\lstset{numbers=left, %设置行号位置
numberstyle=\tiny, %设置行号大小
keywordstyle=\color{blue}, %设置关键字颜色
commentstyle=\color[cmyk]{1,0,1,0}, %设置注释颜色
frame=single, %设置边框格式
escapeinside=``, %逃逸字符(1左面的键),用于显示中文
%breaklines, %自动折行
extendedchars=false, %解决代码跨页时,章节标题,页眉等汉字不显示的问题
xleftmargin=2em,xrightmargin=2em, aboveskip=1em, %设置边距
tabsize=4, %设置tab空格数
showspaces=false %不显示空格
}
仍然以R代码为例,展示一下输出的结果(结果有点长,截取了一部分):
\ lstinputlisting { source _ filename.py }
以Python代码为例:
\ lstinputlisting [language = Python] { source _ filename.py }
# 指定文件中代码的起止位置
\ lstinputlisting [language = Python,firstline = 37,lastline = 45] { source _ filename.py }
参考资料
1.LaTex/Source_Code_listings
2.网海水手的博客
还有一个教程,写的很详细,有时间可以读一读:
3.LaTex排版工作室