\lstset{
basicstyle=\small, %环境中的代码字体变小 [在结尾要加逗号!]
basicstyle=\tt, %使用teletype字体(一种等宽字体)
basicstyle=\it, %使用罗马斜体
%其他可选的还有:\bf, \sc, \st, \sl, \em, \nocorr等
}
\lstset{
keywordstyle=\color{black}, %设置关键字颜色为黑色
keywordstyle=\color{blue}, %设置关键字颜色为蓝色
keywordstyle=\bfseries, %不改变当前字体的族与形状,但转变成bold加粗序列
keywordstyle=\mdseries, %不改变当前字体的族与形状,但转变成中等粗细medium序列
keywordstyle=\underbar, %添加下划线
keywordstyle=\color{black}\bfseries\underbar, %添加下划线的加粗黑色关键字
}
\lstset{
identifierstyle=\color{red},
identifierstyle= , %不设置 }
showstringspaces=false %去掉空格时产生的下划的空格标志, 设置为true则出现
showtabs=true
\lstset{
commentstyle=\it\color[RGB]{100,100,100}, }
示例:
\lstset{
basicstyle=\tt,
keywordstyle=\color{purple}\bfseries,
identifierstyle=\color{brown!80!black},
commentstyle=\color{gray}
showstringspaces=false,
}
\begin{lstlisting}[language=C]
#include <stdio.h>
{
//Example
printf("Hello World");
int i, sum = 0;
for (i = 0; i < 10; i++){
sum += i;
}
printf("%d", sum);
return 0;
}
\end{lstlisting}
\lstset{
numbers=left, %在左侧显示行数
numbers=right %在右侧显示行数
numbers=none, %去掉行数显示
numberstyle=\tiny\color{red}, %数字大小,颜色调整
numberstyle=\it, %数字字体调整
stepnumber=2 , %每两行标号一次
numbersep=5pt, %数字右端(若为左侧显示数字)水平距离代码5pt
}
示例:
\lstset{
numbers=left, numberstyle=\it, stepnumber=2, numbersep=5pt,
}
\begin{lstlisting}[language=Java]
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
\end{lstlisting}
\lstset{
tabsize=2; %此时一个tab键=2个空格
}
\lstset{
xleftmargin=2em, %整体距左侧边线的距离为2em
xrightmargin=2em,
}
也可以使用
linewidth=1.2\linewidth 改变长度
\lstset{
columns=fixed, %改变字母间的空隙大小
columns=flexible,
columns=fullflexible,
}
注:关于LaTeX中的长度单位可参考:latex 中的长度单位,尺寸_天天向上的专栏-CSDN博客
\begin{lstlisting}
[firstline=2, lastline =5] 只排版2-5行的代码
[language=C] %代码为C语言(会自动识别C语言关键字)
[language=Java] %代码为Java语言
[float] %设置为浮动题
[float=t] %在页面上方
[float=!h] %在此处
[firstnumber=100] %第一个数字为100 [firstnumber=last] %起始行数为上一段lstlisting环境结尾的行数 [caption={MyCode1}] %说明 [caption={[Code2] An very important code}] %可分别添加一个短的和长的caption [label=Code1] % 标签 [title=Code1] %可以去掉label产生的Listings 1
[name=MyCode1] %使用name=***为代码环境取名,同名的环境代码行数会延续
\lstset{...\stepnumber=-1}...}
\begin{lstlisting}[firstnumber=20]{...} \end{lstlisting} %得到逆序行数
[aboveskip=5pt] %与代码环境上一行的垂直间距为5pt
[belowskip=4pt] %与代码环境下一行的垂直间距为4pt
当然,它们也可以在 lstset 中设置
[emph={printf}, emphstyle={\underbar}] %强调printf,在它下面加下划线
[emph={for,while}, emphstyle=\color{red}]
[emph={strlen}, emphstyle=\color{red},
emph={[2]strcpy}, emphstyle={[2]\color{blue}},
emph={[3]strcmp},emphstyle={[3]\underbar}] %强调多个,并且强调方式不同
[frame=none] %无框
[frame=leftline,topline,rightline, bottomline] %分别对应只在左侧,上方,右侧,下方有竖线
[frame=trb] %t-top,r-right,b-bottom,l-left. 这是为框架只在上,右,下方
[frame=trBL] %大写表示双重线
在预设中可设置框的拐角处为圆弧:
\lstset{
\frameround = fttt,
}
\frameround后必须有四个字母。第一个字母表示右上角的拐角,然后顺时针地依次代表各个拐角。f表示方形,t表示弧形。
frame=shadowbox, %设置阴影
framexleftmargin=4mm, %框架左边界延长(frame是不会考虑到左边的行数栏的)
rulecolor=\color{gray}, %框架颜色设置
rulesepcolor=\color{gray}, %框架阴影颜色设置
示例:
\lstset{... \frameround=fftt, ...}
\begin{lstlisting}[numbers=none, frame=trBL, ...] ... \end{lstlisting}
\lstset{
backgroundcolor=\color{yellow} %背景颜色为黄色
}
示例:
\lstset{...backgroundcolor=\color[RGB]{245,245,244},...}
更多的指令:
\lstdefinestyle 可以预设多个不同的style。 \lstdefinestyle{numbers1}{numbers=left, stepnumber=1, numberstyle=\tiny, numbersep=10pt} \lstdefinestyle{numbers2}{numbers=none}
\begin{lstlisting}[style=numbers1] 即可选择numbers1作为style
\lstdefinelanguage 定义一个新的语言.
\lstdefinelanguage{SDU}
{morekeywords={ShiYidDa, CheapCafeteria}, %定义关键字
sensitive=false, %是否大小写敏感
morecommet=[l]{//},
morecomment=[s]{/*}{*/},
morecomment=[n]{(*}{*)},
morestring=[b]",
morestring=[d]',}
morecomment指令用于定义书写注释的标识符。
- [l] 表示标识符后至该行末尾
- [s] 表示定义的第一个和第二个标识符之间
- [n] 表示从第一个定义的标识符开始,直至出现第二个标识符。
- [il] [is] [in] 编译时不显示注释
也可以定义不同颜色的注释(要先定义好普通注释/**/):
\lstset{
morecomment=[s][\color{blue}]{/*+}{*/},
morecomment=[s][\color{red}]{/*-}{*/}, }
\lstlistoflistings 添加过 caption 的代码段可以通过此命令全部被列出来,并且按顺序标号和标注页码。 添加过 name 的代码段也会通过此命令被列出来,且不会参与标号。此时对该代码段再添加caption就会覆盖name。 对于caption{[<short>]<long>}只会打出其短名。
效果: