使用minted宏包实现源代码语法高亮排版

宏包使用 2019-10-15 18:00  浏览 :4087
在LaTeX中,常用**listings**宏包实现源代码语法高亮排版。另一个类似的是**minted**宏包,该宏包借助于Python的**Pygments**工具包,能够更加灵活地实现不同语言、不同配色方案的源代码语法高亮排版。 ## 软件安装 **minted**宏包已包含在TeXLive发行版中(其它发行版请自查),无需再独立安装。但要使用**minted**宏包,必须有**Python支持**,并且需安装其**Pygments**语法高亮显示**工具包**。 ### 安装Python Python是跨平台的,不同平台的安装方式,请参考[Python主页](https://www.python.org/ "Python主页")相关指南。 ### 安装**Pygments**工具包 安装完成Python后,可以使用其**easy_install工具**或是**pip工具**,安装**Pygments**工具包。 例如,对于Ubuntu Linux下Python3,可以在终端执行如下命令安装: ```shell sudo pip3 install Pygments ``` 对于Windows下Python3,可以**以管理员权限**打开命令行窗口,然后执行如下命令安装: ```shell pip3 install Pygments ``` 更多详情,请参阅[Pygments官网](http://pygments.org/ "Pygments官网")。 ### 测试**Pygments**工具包 在终端或命令行窗口,执行如下命令可以得到支持的高亮显示样式: ```shell pygmentize -L styles ``` 在终端或命令行窗口,执行如下命令可以得到支持的语言类型: ```shell pygmentize -L lexers ``` 如果在命令行无法执行这两个命令,说明Python或Pygments工具包安装中有错误,请重新进行安装和测试,直至这两个命令能够正常执行。 ## LaTeX编译参数设置 由于**minted**宏包借助外部工具实现排版,因此,需为LaTeX编译命令添加“**-shell-escape**”编译参数,如: ```shell xelatex -shell-escape jobname.tex ``` ```shell pdflatex -shell-escape jobname.tex ``` ```shell latex -shell-escape jobname.tex ``` 如果使用的是集成IDE环境,请在其配置中确认带有该参数进行LaTeX编译。 ## 源代码高亮显示排版环境及命令 **minted**宏包提供了行间排版环境`minted`、单行排版命令`\\mint`、行内排版命令`\\mintinline`和从文件读取源代码文件排版命令`\\inputminted`。 一个简单的排版示例如: ```tex \\documentclass{ctexart} % 引入minted宏包 \\usepackage{minted} \\begin{document} 这是一个简单的Python代码: \\begin{minted}{python} def boring(args = None): pass \\end{minted} 可以对Python有一个简单的了解。 可以通过: \\mint{python}|import this| 导入相关模块。 可以通过\\mintinline{python}{print(x**2)}输出结果。 下面是一个输出Hello World的C语言代码: \\inputminted{c}{helloworld.c} \\end{document} ``` 其排版结果为:
其中能够使用的**语言类型名称**,请在命令行使用`pygmentize -L lexers`进行查看。 ### 排版细节控制 minted宏包的排版环境和命令都可以通过**可选参数**或者通过该宏包提供的**设置命令**来实现详细控制,详情请查阅其使用说明。 *强烈建议*:可以在相关开发环境IDE中采用其IDE提供的工具对源代码按需要在开发环境IDE中实现排版后,再**用minted宏包载入到LaTeX中进行排版**。 ## 自定义排版环境和命令 该宏包还提供了`\\newminted`、`\\newmint`、`\\newmintinline`和`\\newmintedfile`4个命令用于自定义需要的排版环境和命令,如: ```tex % minted代码排版样式设置 \\usemintedstyle{default} % 定义C语言代码参数 % 公有设置 \\setminted{fontsize=\\tiny, breaklines=true, breakautoindent=false} % 定义不同字号的行内代码排版命令 \\newmintinline{c}{fontsize=\\normalsize, autogobble} \\newmintinline[cinttscr]{c}{fontsize=\\scriptsize, escapeinside=||, autogobble} \\newmintinline[cinttfts]{c}{fontsize=\\footnotesize, escapeinside=||, autogobble} \\newmintinline[cintttny]{c}{fontsize=\\tiny, escapeinside=||, autogobble} \\newmintinline[cinttlrg]{c}{fontsize=\\large, escapeinside=||, autogobble} % 定义ccode环境 \\newminted{c}{frame=lines, autogobble} % 定义\\cfile命令 \\newmintedfile{c}{frame=lines} ``` 另外,如果要在**beamer**中使用minted排版,需要在frame环境中使用**[fragile]**可选参数,如: ```tex \\begin{frame}[fragile]{数据类型概述}{引例} ... \\end{frame} ``` **minted**宏包还提供了浮动体等强大功能,有关其使用细节,请在命令行通过`texdoc minted`命令阅读其使用说明书。 Happy LaTeXing!
发布评论
登录后方可评论!点击登录
全部评论 (2)
啸行
1楼 · 2019-10-15 22:31

许多人不知道如何用 python,这个讲得很清楚了

兰铃
2楼 · 2019-10-15 23:15

look up at dalao's operation everyday because of my no knowledge ( linux chinese input has some wrong.........