latex中lstlisting使用

\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>}只会打出其短名。

效果:

  • 9
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值