在LaTex中插入代码块

在LaTex里写东西时往往需要插入代码,LaTex已经为我们准备了用来插入代码的包:listings包xcolor包

1.listings包

这个包是用来插入代码的,如果不需要高亮显示,这个包已经完成了最基本的插入代码任务了. 例如需要插入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}

输出结果如下:
在LaTex中插入代码块_第1张图片
代码中的关键字是加粗显示的,对于这种简单的代码,这样的setting就足够,看起来整齐又美观. 在写书时若需要插入简单的例子,建议用这种方式——不加高亮反而更好看.
不过对于某些代码,不显示高亮可读性就会降低,看起来不习惯.

2.xcolor包

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代码为例,展示一下输出的结果(结果有点长,截取了一部分):
在LaTex中插入代码块_第2张图片

直接高亮导入的source文件

\ 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排版工作室

你可能感兴趣的:(LaTex)