博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[杂记]如何在LaTeX里插入高亮代码
阅读量:6279 次
发布时间:2019-06-22

本文共 5432 字,大约阅读时间需要 18 分钟。

继上次学会在ppt里面插入带有高亮的c程序代码之后,zyy在这条不归路上越走越远…… 好的,长话短说,今天我介绍的是怎么在LaTeX中插入高亮的c程序代码。(其实不止c程序的代码,别的语言也是可以的,本文以c代码为例)(zyy你作业写完了吗!一天就知道写博客不去好好学习挂科了怎么办!)(……写完就去好好学习别着急…… ♪(^∇^*))

 

本文将介绍两种方法,当然两种都需要LaTeX(废话……),第二种需要额外的一个软件——Highlight。

 

[方法一]使用Listings宏包对代码进行高亮显示

这里不讲原理,直接说例子。

比如我们想插入这样的一段代码:

1 /* 2 PROG:LeTeX test 3 NAME:zyy  4 */ 5 #include 
6 int main() 7 { 8 //Note 9 printf("Hello world!\n");10 return 0;11 }

 

给出对应的tex的代码,注意listings对代码进行高亮要使用xcolor宏包(这里我找不到tex的高亮…… 醉了…… ):

1 \documentclass[12pt]{article} 2 \usepackage{listings} 3 \usepackage{xcolor} 4 \lstset{ 5     %行号 6     numbers=left, 7     %背景框 8     framexleftmargin=10mm, 9     frame=none,10     %背景色11     %backgroundcolor=\color[rgb]{
1,1,0.76},12 backgroundcolor=\color[RGB]{
245,245,244},13 %样式14 keywordstyle=\bf\color{blue},15 identifierstyle=\bf,16 numberstyle=\color[RGB]{
0,192,192},17 commentstyle=\it\color[RGB]{
0,96,96},18 stringstyle=\rmfamily\slshape\color[RGB]{
128,0,0},19 %显示空格20 showstringspaces=false21 }22 23 \begin{document}24 \begin{lstlisting}[language={C}]25 /*26 PROG:LeTeX test27 NAME:zyy28 */29 #include
30 int main()31 {32 //Note33 printf("Hello world!\n");34 return 0;35 }36 \end{lstlisting}37 \end{document}

 

实现的样子如下:

这里有一个弊端,就是似乎不能插入中文,我试过了用CJK的环境也不行,可能是因为我对LaTeX了解还很少,如果有人实现了代码中的中文显示,请不吝赐教!

当然,我个人是觉得这个不太好看,所以建议不怕麻烦的同学看后一种方法。

 

[方法二]使用Highlight对代码进行高亮处理

Highlight是一款软件,可以生成许多种程序语言的高亮,并以多种形式输出,其中包括LaTeX。

这里给出下载地址(真的没有广告费):

Highlight的使用也相当简单,下面是它的界面:

注意到左下角的选项版,选择LaTeX输出即可,其他参数可以自己设置。这里值得一提的是,高亮主题非常多,我没有全部尝试过,不过相对来说比较喜欢bclear,当然这一款的对比度并不是很强烈,所以看个人爱好选择吧。我的选择如下:

这里注意一下选择“内嵌页面样式(defs)”。将预览结果复制到剪贴板之后,新建一个.tex文档,粘贴即可。

当然这里会有几个小问题需要修改一下:

1、为了支持中文,需要用到CJK宏包。在前面加入“\usepackage{CJK}”,并在正文中相应地添加“\begin{CJK*}{GBK}{song}”和“\end{CJK*}”;

2、有一个似乎是为了插入双引号的方式,似乎有点问题(可能是LaTex的版本不兼容),作这样的修改即可:加入“\newcommand{\dq}{"}”,并把正文中的“\shorthandoff{"}”和“\shorthandon{"}”注释掉。

(这个语法我找了很久,才在这里找到解释,感谢:)

3、它生成的代码的“\end{document}”之间有空格,把空格删掉。

首先给出代码:

1 \documentclass{article} 2 \usepackage{color} 3 \usepackage{alltt} 4 \usepackage[T1]{fontenc} 5 \usepackage[latin1]{inputenc} 6 \usepackage{CJK}%中文 7  8 \newcommand{\hlstd}[1]{\textcolor[rgb]{
0.2,0.2,0.2}{#1}} 9 \newcommand{\hlnum}[1]{\textcolor[rgb]{
0.06,0.58,0.63}{#1}}10 \newcommand{\hlesc}[1]{\textcolor[rgb]{
0.86,0.41,0.09}{#1}}11 \newcommand{\hlstr}[1]{\textcolor[rgb]{
0.06,0.58,0.63}{#1}}12 \newcommand{\hlpps}[1]{\textcolor[rgb]{
0.06,0.58,0.63}{#1}}13 \newcommand{\hlslc}[1]{\textcolor[rgb]{
0.59,0.59,0.59}{#1}}14 \newcommand{\hlcom}[1]{\textcolor[rgb]{
0.59,0.59,0.59}{#1}}15 \newcommand{\hlppc}[1]{\textcolor[rgb]{
0.41,0.78,0.23}{#1}}16 \newcommand{\hlopt}[1]{\textcolor[rgb]{
0.2,0.2,0.2}{#1}}17 \newcommand{\hlipl}[1]{\textcolor[rgb]{
0.45,0.46,0.77}{#1}}18 \newcommand{\hllin}[1]{\textcolor[rgb]{
0.59,0.59,0.59}{#1}}19 \newcommand{\hlkwa}[1]{\textcolor[rgb]{
0.23,0.42,0.78}{#1}}20 \newcommand{\hlkwb}[1]{\textcolor[rgb]{
0.63,0,0.31}{#1}}21 \newcommand{\hlkwc}[1]{\textcolor[rgb]{
0,0.63,0.31}{#1}}22 \newcommand{\hlkwd}[1]{\textcolor[rgb]{
0.78,0.23,0.41}{#1}}23 \definecolor{bgcolor}{rgb}{
1,1,1}24 \newcommand{\dq}{
"}25 26 \title{Source file}27 \begin{document}28 \begin{CJK*}{GBK}{song}29 \pagecolor{bgcolor}30 \newsavebox{\hlboxopenbrace}31 \newsavebox{\hlboxclosebrace}32 \newsavebox{\hlboxlessthan}33 \newsavebox{\hlboxgreaterthan}34 \newsavebox{\hlboxdollar}35 \newsavebox{\hlboxunderscore}36 \newsavebox{\hlboxand}37 \newsavebox{\hlboxhash}38 \newsavebox{\hlboxat}39 \newsavebox{\hlboxbackslash}40 \newsavebox{\hlboxpercent}41 \newsavebox{\hlboxhat}42 \setbox\hlboxopenbrace=\hbox{\verb.{.}43 \setbox\hlboxclosebrace=\hbox{\verb.}.}44 \setbox\hlboxlessthan=\hbox{\verb.<.}45 \setbox\hlboxgreaterthan=\hbox{\verb.>.}46 \setbox\hlboxdollar=\hbox{\verb.$.}47 \setbox\hlboxunderscore=\hbox{\verb._.}48 \setbox\hlboxand=\hbox{\verb.&.}49 \setbox\hlboxhash=\hbox{\verb.#.}50 \setbox\hlboxat=\hbox{\verb.@.}51 \setbox\hlboxbackslash=\hbox{\verb.\.}52 \setbox\hlboxpercent=\hbox{\verb.\%.}53 \setbox\hlboxhat=\hbox{\verb.^.}54 \def\urltilda{\kern -.15em\lower .7ex\hbox{\~{}}\kern .04em}55 \noindent56 \ttfamily57 %\shorthandoff{
"}58 \hlstd{}\hllin{\ 1\ }\hlcom{/{*}}\\59 \hllin{\ 2\ }\hlcom{项目:LeTeX测试}\\60 \hllin{\ 3\ }\hlcom{作者:zyy}\\61 \hllin{\ 4\ }\hlcom{
{*}/}\hlstd{}\\62 \hllin{\ 5\ }\hlppc{\#include\ \usebox{\hlboxlessthan}stdio.h\usebox{\hlboxgreaterthan}}\\63 \hllin{\ 6\ }\hlstd{}\hlkwb{
int\ }\hlstd{}\hlkwd{main}\hlstd{}\hlopt{()}\\64 \hllin{\ 7\ }\hlstd{}\hlopt{\usebox{\hlboxopenbrace}}\\65 \hllin{\ 8\ }\hlstd{\ }\hlslc{//这里是中文注释}\\66 \hllin{\ 9\ }\hlstd{\ }\hlkwd{printf}\hlstd{}\hlopt{(}\hlstd{}\hlstr{\dq{}Hello\ world!}\hlesc{$\backslash$n}\hlstr{\dq{}}\hlstd{}\hlopt{);}\\67 \hllin{
10\ }\hlstd{\ }\hlkwa{return\ }\hlstd{}\hlnum{
0}\hlstd{}\hlopt{
;}\\68 \hllin{
11\ }\hlstd{}\hlopt{\usebox{\hlboxclosebrace}}\hlstd{}\\69 \mbox{}70 \normalfont71 \normalsize72 %\shorthandon{
"}73 \end{CJK*}74 \end{document}75 (* LaTeX generated by highlight 3.28, http://www.andre-simon.de/ *)

 

最后的效果是这样的:

这个比前一种方式好多了是吧?

 

[总结]

使用listings相当简便,要配置的东西并不多,也能实现高亮的效果;Highlight的高亮效果更加丰富,并且支持中文注释,只是实现略复杂一些。

 

 

时隔两年后的更新:

感谢@SYCstudio的交流,学习到了一种新的方法,使用minted宏包来实现代码高亮,个人觉得效果还不错,跟Highlight的效果差不多,就是最开始的配置稍微麻烦一点,不过配置好了之后每次使用会比较方便。这里贴一个介绍如何使用minted宏包的博客地址:

希望跟大家一起交流,共同进步。

转载于:https://www.cnblogs.com/CQBZOIer-zyy/p/5358709.html

你可能感兴趣的文章
managed domain与unmanaged domain
查看>>
《设计模式解析(第2版•修订版)》目录—导读
查看>>
Java核心技术卷I基础知识3.5.3 强制类型转换
查看>>
可与Mirai比肩的恶意程序Hajime,竟是为了保护IoT设备?
查看>>
《Spring Data 官方文档》6. Cassandra 存储库
查看>>
聊聊并发(十)生产者消费者模式
查看>>
R语言数据挖掘2.2.4.2 FP-growth算法
查看>>
人工智能概念诞生60年,哪些大牛堪称“一代宗师”?
查看>>
《游戏大师Chris Crawford谈互动叙事》一9.5 真实案例
查看>>
Java Cache系列之Guava Cache实现详解
查看>>
设计模式 - 适配器
查看>>
CSS之可折叠导航
查看>>
淘宝美工设计师细说何为天猫透明背景
查看>>
【B/S学习总结】我的第100篇CSDN博客
查看>>
[Hadoop]chukwa与ganglia的区别
查看>>
数据挖掘工具分析北京房价 (一) 数据爬取采集
查看>>
IOS项目之弹出动画终结篇
查看>>
iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)
查看>>
OSS移动开发实战2 (30分钟快速搭建移动应用上传回调服务)
查看>>
Swift语言学习No.2: 二维数组
查看>>