LaTeX之代码语法高亮
来源:互联网 发布:南京软件企业排名 编辑:程序博客网 时间:2024/05/16 04:58
转自http://www.latexstudio.net/archives/5900
我们可以使用Latex
来排版文章和书籍,特别是可以用Latex
来排版学习笔记,可以取得很不错的效果。实际上,用Latex
中插入代码,可以取得代码语法高亮的效果。
首先,我们展示以下默认的排版效果,创建一个.tex
文件,写入以下内容:
\documentclass{ctexart}\usepackage{listings}\begin{document}\begin{lstlisting}#include <iostream>int main(){ std::cout << "Hello, World!" << std::endl;} \end{lstlisting}\end{document}
那么排版效果没有什么显著特点。
可以为lstlisting
环境指定可选参数language=c++
,用来设定代码使用的语言:
\documentclass{ctexart}\usepackage{listings}\begin{document}\begin{lstlisting}[language=c++]#include <iostream>int main(){ std::cout << "Hello, World!" << std::endl;} \end{lstlisting}\end{document}
可以看到,这时排版效果中的关键字是黑体。
语法高亮
我们可以定制lstlisting
环境:
\documentclass{ctexart}\usepackage{listings}\usepackage{xcolor}\lstset{ columns=fixed, numbers=left, % 在左侧显示行号 frame=none, % 不显示背景边框 backgroundcolor=\color[RGB]{245,245,244}, % 设定背景颜色 keywordstyle=\color[RGB]{40,40,255}, % 设定关键字颜色 numberstyle=\footnotesize\color{darkgray}, % 设定行号格式 commentstyle=\it\color[RGB]{0,96,96}, % 设置代码注释的格式 stringstyle=\rmfamily\slshape\color[RGB]{128,0,0}, % 设置字符串格式 showstringspaces=false, % 不显示字符串中的空格 language=c++, % 设置语言}\begin{document} {\setmainfont{Courier New Bold} % 设置代码字体 \begin{lstlisting}#include <iostream>int main(){ std::cout << "Hello, World!" << std::endl;} \end{lstlisting}}\end{document}
可以看到,关键字、注释和字符串都改变了颜色。
拓展关键字
尽管我们已经指定了代码的编程语言是C++
,但是C++
中很多关键字仍不被支持,同样,C++11
中新的关键字也无法实现代码高亮。我们可以为
lstlisting
环境增加更多的关键字,使其支持C++11
的关键字:\usepackage{listings}\usepackage{xcolor}% 定义可能使用到的颜色 \definecolor{CPPLight} {HTML} {686868}\definecolor{CPPSteel} {HTML} {888888}\definecolor{CPPDark} {HTML} {262626}\definecolor{CPPBlue} {HTML} {4172A3}\definecolor{CPPGreen} {HTML} {487818}\definecolor{CPPBrown} {HTML} {A07040}\definecolor{CPPRed} {HTML} {AD4D3A}\definecolor{CPPViolet} {HTML} {7040A0}\definecolor{CPPGray} {HTML} {B8B8B8}\lstset{ columns=fixed, numbers=left, % 在左侧显示行号 frame=none, % 不显示背景边框 backgroundcolor=\color[RGB]{245,245,244}, % 设定背景颜色 keywordstyle=\color[RGB]{40,40,255}, % 设定关键字颜色 numberstyle=\footnotesize\color{darkgray}, % 设定行号格式 commentstyle=\it\color[RGB]{0,96,96}, % 设置代码注释的格式 stringstyle=\rmfamily\slshape\color[RGB]{128,0,0}, % 设置字符串格式 showstringspaces=false, % 不显示字符串中的空格 language=c++, % 设置语言 morekeywords={alignas,continute,friend,register,true,alignof,decltype,goto, reinterpret_cast,try,asm,defult,if,return,typedef,auto,delete,inline,short, typeid,bool,do,int,signed,typename,break,double,long,sizeof,union,case, dynamic_cast,mutable,static,unsigned,catch,else,namespace,static_assert,using, char,enum,new,static_cast,virtual,char16_t,char32_t,explict,noexcept,struct, void,export,nullptr,switch,volatile,class,extern,operator,template,wchar_t, const,false,private,this,while,constexpr,float,protected,thread_local, const_cast,for,public,throw,std},}\begin{document} {\setmainfont{Courier New Bold} % 设置代码字体 \begin{lstlisting}#include <iostream>int main(){ constexpr int MAX = 100;} \end{lstlisting}}\end{document}可以看到,
C++11
中的关键字constexpr
显示高亮。除此之外,我们还可以使标准库的容器也实现代码高亮:
\usepackage{listings}\usepackage{xcolor}% 定义可能使用到的颜色 \definecolor{CPPLight} {HTML} {686868}\definecolor{CPPSteel} {HTML} {888888}\definecolor{CPPDark} {HTML} {262626}\definecolor{CPPBlue} {HTML} {4172A3}\definecolor{CPPGreen} {HTML} {487818}\definecolor{CPPBrown} {HTML} {A07040}\definecolor{CPPRed} {HTML} {AD4D3A}\definecolor{CPPViolet} {HTML} {7040A0}\definecolor{CPPGray} {HTML} {B8B8B8}\lstset{ columns=fixed, numbers=left, % 在左侧显示行号 frame=none, % 不显示背景边框 backgroundcolor=\color[RGB]{245,245,244}, % 设定背景颜色 keywordstyle=\color[RGB]{40,40,255}, % 设定关键字颜色 numberstyle=\footnotesize\color{darkgray}, % 设定行号格式 commentstyle=\it\color[RGB]{0,96,96}, % 设置代码注释的格式 stringstyle=\rmfamily\slshape\color[RGB]{128,0,0}, % 设置字符串格式 showstringspaces=false, % 不显示字符串中的空格 language=c++, % 设置语言 morekeywords={alignas,continute,friend,register,true,alignof,decltype,goto, reinterpret_cast,try,asm,defult,if,return,typedef,auto,delete,inline,short, typeid,bool,do,int,signed,typename,break,double,long,sizeof,union,case, dynamic_cast,mutable,static,unsigned,catch,else,namespace,static_assert,using, char,enum,new,static_cast,virtual,char16_t,char32_t,explict,noexcept,struct, void,export,nullptr,switch,volatile,class,extern,operator,template,wchar_t, const,false,private,this,while,constexpr,float,protected,thread_local, const_cast,for,public,throw,std}, emph={map,set,multimap,multiset,unordered_map,unordered_set, unordered_multiset,unordered_multimap,vector,string,list,deque, array,stack,forwared_list,iostream,memory,shared_ptr,unique_ptr, random,bitset,ostream,istream,cout,cin,endl,move,default_random_engine, uniform_int_distribution,iterator,algorithm,functional,bing,numeric,}, emphstyle=\color{CPPViolet}, }\begin{document} {\setmainfont{Courier New Bold} % 设置代码字体 \begin{lstlisting}#include <iostream>#include <array>int main(){ constexpr int MAX = 100; std::array<int, MAX> arr;} \end{lstlisting}}\end{document}
可以看到,
array
已经可以高亮了 0 0
- LaTeX之代码语法高亮
- LaTeX下代码高亮(minted)
- latex中使用minted宏包格式化编程语言代码和支持语法高亮的测试文件
- 生成语法高亮代码
- LaTeX下代码高亮(关键字,CTeX, WinEdt, minted, highlight)
- LaTeX 使用 minted宏包--代码高亮
- LaTex(PART XIX)插入代码并且高亮显示
- 使用 CodeHighlighter 将代码语法高亮
- 使用 CodeHighlighter 将代码语法高亮
- Windows Live Writer 代码语法高亮
- 复制VC中的语法高亮代码
- GNU Source-highlight 语法高亮代码
- Word、WPS实现代码语法高亮
- OneNote2013 代码语法高亮插件
- 【OneNote】插入语法高亮的代码
- 文章中的代码添加语法高亮
- Haroopad 代码块语法高亮方法
- 代码语法高亮插件highlight.js
- Android 轻量级输入校验库:Fire Eye
- java编程实战之闰年的判断程序编写
- 虚拟机的使用
- 第六周项目1-分数类的雏形
- View-消息(一)
- LaTeX之代码语法高亮
- android ListView下拉刷新拉取网络数据
- Android 表单验证框架:AValidations
- HD 1159 Common Subsequence (最长公共子序列)
- 【笔记】 《js权威指南》- 第6章 对象 - 6.5 - 6.6 属性操作2
- Linux内核分析:实验六
- boost 正则表达式测试
- 用中国剩余定理解 POJ1006
- 【Java学习-J.160331.0.4】笔记3-Linux基础