LaTeX源代码显示宏包listings应用备忘之新语言定义
我目前了解的LaTeX中有关源代码显示的宏包有两个,这里介绍其中的listings宏包。listings宏包中已经定义了部分计算机语言的显示样式,但还是有些语言没有定义,我们一起看一下如何定义新的语言样式。下面的内容仅是示例,并不严谨,大家请按照自己的情况进行详细定义。
环境
操作系统:Ubuntu 16.04 64位桌面版
LaTeX工具:TeXstudio 2.10.8
编译方式:LuaLaTeX
代码
\documentclass{article}
%
\usepackage{ctex} % 汉字支持
\usepackage{geometry} % 页面布局支持
\usepackage{listings} % 源代码显示支持
\usepackage[colorlinks,linkcolor=blue]{hyperref}
%
% 设置页面为A4纸,并设置页边距
\geometry{a4paper,left=3.18cm,right=3.18cm,top=2.4cm,bottom=2.4cm}
%
% 以下两行命令用于解决LuaLaTeX编译模式下listings宏包不能正常工作的问题
\newdimen\cht%
\newdimen\cdp%
%
\lstdefinelanguage{golang} {
classoffset=0,%
morekeywords={package,import,for,if,range,iota,make,switch,default,case,%
return},%
keywordstyle=\color[RGB]{49,54,59}\bfseries,%
classoffset=1,%
morekeywords={const,func,var,type,struct,},%
keywordstyle=\color[RGB]{41,128,185},%
classoffset=2,%
morekeywords={main,Printf,Println,Split,len},%
keywordstyle=\color[RGB]{127,140,141},%
classoffset=3,%
morekeywords={fmt,flag,html,os,strings},%
keywordstyle=\color[RGB]{39,174,96},%
classoffset=4,%
morekeywords={string,int,byte},%
keywordstyle=\color[RGB]{41,128,185},%
classoffset=0,%
% 把双引号内容视为字符串,并定义颜色
morestring=[b][{\color[RGB]{211,54,130}}]",
% 把单引号内容视为字符串,并定义颜色
morestring=[d][{\color[RGB]{61,174,233}}]',
sensitive=true,
% 这里的颜色定义需要用大括号括起来,否则报错
morecomment=[l][{\color[RGB]{127,140,141}}]{//},
% 这里的颜色定义需要用大括号括起来,否则报错
morecomment=[s][{\color[RGB]{127,140,141}}]{/*}{*/}
}
%
% 代码显示样式设置
\lstset{%
language=golang,
breaklines,% 自动换行
basicstyle=\small,% 设置字体大小
frame=single,% 单线框
numbers=left,% 行号在左边
numberstyle=\tiny,% 行号字体大小
}%
%
\begin{document}
%
\begin{lstlisting}
package main
import "fmt"
var (
a [30000]byte
prog = "++++++++++[>++++++++++<-]>++++.+."
p, pc int
)
func loop(inc int) {
for i := inc; i != 0; pc += inc {
switch prog[pc+inc] {
case '[':
i++
case ']':
i--
}
}
}
func main() {
for {
switch prog[pc] {
case '>':
p++
case '<':
p--
case '+':
a[p]++
case '-':
a[p]--
case '.':
fmt.Print(string(a[p]))
case '[':
if a[p] == 0 {
loop(1)
}
case ']':
if a[p] != 0 {
loop(-1)
}
default:
fmt.Println("Illegal instruction")
}
pc++
if pc == len(prog) {
return
}
}
}
\end{lstlisting}
%
\end{document}
效果如下

说明
1、classoffset命令可以让我们给关键字分类并定义不同的颜色。
2、morekeywords命令内是关键字。其他内容基本上一看就明白,这里不再说明,深入了解可参考listings宏包的说明文档。
LaTeX源代码显示宏包listings应用备忘之新语言定义的更多相关文章
- LaTeX的一些宏包及细节知识
文章来源:LaTeX的一些宏包及细节知识http://blog.chinaunix.net/uid-20289887-id-1710422.html ps:我的机器上软件并不能直接运行通,下面“代码” ...
- LaTeX使用titlesec宏包改变章节编号形式的方法
1.titleformat宏包命令详解 LaTeX中可以用titlesec宏包中的titleformat命令来改变标题形式: 导入宏包: \usepackage{titlesec} 改变标题的代码如下 ...
- Windows 下 LaTeX 手动安装宏包(package)以及生成帮助文档的整套流程
本文简单介绍如何手动安装一个 LaTeX 宏包. 一般来说,下载的 TeX 发行版已经自带了很多宏包,可以满足绝大部分需求,但是偶尔我 们也可能碰到需要使用的宏包碰巧没有安装的情况,这时我们就需要自己 ...
- 解决“用PicGo-2.3.0-beta5 + GitHub做博客图床,github仓库图片文件不显示”的问题记录(备忘)
解决"用PicGo-2.3.0-beta5 + GitHub做博客图床,github仓库图片文件不显示"的问题记录(备忘) 历时几个小时百度,终于靠自己理解解决了GitHub仓库图 ...
- LaTeX中titlesec宏包的使用
在 xelatex 中使用 \usepackage 指令使用 titlesec 宏包时,可以指定一些格式选项,如下: \usepackage[center]{titlesec} 其中 center 可 ...
- LaTeX的tasks宏包
tasks 宏包 LaTeX的列表(list)通常是将项(item,条目)一个一个垂直的平行显示,所谓"列"表的由来. 水平分列列表,即将多个项分散到各列而不是一列,在出考卷的选择 ...
- LaTeX手动安装宏包(package)以及生成帮助文档的整套流程
注意:版权所有,转载请注明出处. 我使用的是ctex套装,本来已经自带了许多package,但是有时候还是需要使用一些没有预装的宏包,这时就需要自己安装package了.下载package可以从CTA ...
- thinkphp -- 解决连接mssql后台管理菜单显示中文乱码问题(备忘)
一开始使用的是mysql,数据库的编码是UTF-8 后来换数据库,mysql换成mssql2005,数据库编码为GBK,管理菜单出现乱码,如下所示(左图正常,右图乱码) 解决方法如下: 第一,查看数据 ...
- unix下各种包安装方法备忘
deb包 : sudo dpkg -i google-chrome-stable_amd64.deb
随机推荐
- oracle常见的等待事件说明
转自 http://blog.itpub.net/29371470/viewspace-1063994/ 1. Buffer busy waits 从本质上讲,这个等待事件的产生仅说明了一个会话在等待 ...
- 使用docker安装使用gitlab
1.下载镜像 gitlab/gitlab-ce:latest 当前gitlab最新版本为10.0.4 2.在服务器上创建目录 mkdir -p /home/work/ins/co ...
- 6.servlet和jsp的区别
servlet和jsp的区别 jsp作为Servlet技术的扩展,经常会有人将jsp和Servlet搞混.本文,将为大家带来servlet和jsp的区别,希望对大家有所帮助. servlet和jsp的 ...
- mysql优化——explain详解
MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP).这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的.这条命令并没有提供任何调整建议,但它能够提供重要的信息 ...
- ajax Post数据,并得到返回结果,密码加密(Select,checkbox)
使用ajax Post数据到后台Server,并从后台返回数据给前端WEB: urls.py: from django.conf.urls import url from aptest import ...
- Python入门-模块4(序列化----json模块和pickle模块)
序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes.反之,把硬盘里面的数据读到内存里,叫反序列化.
- SQL server数据库的部署
一.实验目标 1.安装一台SQL SERVER(第一台),然后克隆再一台(第二台),一共两台,修改两台的主机和IP地址. 2.使用注册的方式,用第二台远程连接第一台 二.实验步骤 1)先打开一台Wi ...
- 设计一套砝码要求能称量出1 ~ 100g之间的任意重量,请问至少需要多少个砝码?以及每个砝码各自的重量是多少?
解析: 1g => 1g 2g => 1g 1g => 1 ~ 2g之间的重量 => 1g 2g => 1 ~ 3g之间的重量 4g => 1g 2g 1g =&g ...
- #002 WebStrom Live Templete 使用说明
WebStrom Live Template 使用说明 2016-03-30 20:33:52 星期三 WebStrom是前端一个强大的开发IDE.目前前端主要的开发工具有 Sublime T ...
- 【C#】#102 发送邮件
项目需求:定时的发送邮件,于是学习了如何发送邮件 下面有一个简单的例子.能够实现简单的发送邮件,加上附件可以添加一个属性[Attachment],然后配置上附件的路径 Demo下载 代码总共只有一下这 ...