我正在寻找一个对代码进行语法突出显示的 LaTeX 包。例如,现在我使用逐字块来编写代码:
\begin{verbatim}
<html>
<head>
<title>Hello</title>
</head>
<body>Hello</body>
</html>
\end{verbatim}
这可以很好地在我的文档上显示代码。但是,假设我想像 IDE 在输出文档中那样突出显示 HTML 标记?有没有可以提供帮助的软件包?
我想对 Java、C#、HTML、CSS 等各种语言做同样的事情。
lstlisting
不满意。它根本不会突出显示 XML 代码,并且在使用外来 Unicode 字符时会搞砸。似乎也不支持 JavaScript。 LGrind 可以处理这样的事情吗?
您可以使用 listings 包。它支持许多不同的语言,并且有很多用于自定义输出的选项。
\documentclass{article}
\usepackage{listings}
\begin{document}
\begin{lstlisting}[language=html]
<html>
<head>
<title>Hello</title>
</head>
<body>Hello</body>
</html>
\end{lstlisting}
\end{document}
在询问 similar question 之后,我创建了另一个使用 Pygments 的包,并提供了比 texments
更多的选项。它被称为minted
,非常稳定且可用。
只是为了炫耀一下,这里有一个用 minted 突出显示的代码:
https://i.stack.imgur.com/BFNXp.png
PATH
变量并创建一个 cmd 脚本)。我希望说服 Pygments 维护者在 pygmentize
中提供一个 .exe
包装器,以使这一步更容易。
minted
已安装并在 ShareLatex 和 Overleaf 上运行。省去安装 Pygments 的麻烦;)
我推荐Pygments。它接受任何语言的一段代码并输出语法突出显示的 LaTeX 代码。它使用 fancyvrb 和 color 包来产生其输出。我个人更喜欢它而不是列表包。我认为 fancyvrb 创造了更漂亮的结果。
beamer
类型的文档上,这显然是唯一的功能选项。 minted
和 listings
都不能与 beamer
正确编译。
listings
与 beamer
一起使用,但您必须指定包含列表的框架为 [fragile]
。
我会使用开发人员 Konrad Rudolph 提到的 minted package 而不是 listing package。原因如下:
上市包
列表包默认不支持颜色。要使用颜色,您需要包含颜色包并使用 \lstset 命令自行定义颜色规则,如 matlab 代码 here 所述。
此外,列表包不适用于 unicode,但您可以按照 here 和 here 的说明解决这些问题。
以下代码
\documentclass{article}
\usepackage{listings}
\begin{document}
\begin{lstlisting}[language=html]
<html>
<head>
<title>Hello</title>
</head>
<body>Hello</body>
</html>
\end{lstlisting}
\end{document}
生成以下图像:
https://i.stack.imgur.com/ak3i8.png
铸造包装
minted 包支持颜色、unicode 并且看起来很棒。但是,为了使用它,您需要有 python 2.6 和 pygments。在 Ubuntu 中,您可以使用以下命令在终端中检查您的 python 版本
python --version
你可以安装 pygments
sudo apt-get install python-pygments
然后,由于 minted 调用 pygments,你需要像这样使用 -shell-escape 编译它
pdflatex -shell-escape yourfile.tex
如果您使用 TexMaker 之类的乳胶编辑器,我建议您添加一个用户命令,以便您仍然可以在编辑器中编译它。
以下代码
\documentclass{article}
\usepackage{minted}
\begin{document}
\begin{minted}{html}
<!DOCTYPE html>
<html>
<head>
<title>Hello</title>
</head>
<body>Hello</body>
</html>
\end{minted}
\end{document}
生成以下图像:
https://i.stack.imgur.com/EaYlI.png
我主要在论文中使用 lstlistings,但对于彩色输出(用于幻灯片),我使用 pygments。
我建议根据以下 tex 代码定义自己的包;这给了你完全的自由。 http://ubuntuforums.org/archive/index.php/t-331602.html