180

我正在寻找一个对代码进行语法突出显示的 LaTeX 包。例如,现在我使用逐字块来编写代码:

\begin{verbatim}
    <html>
       <head>
           <title>Hello</title>
       </head>
       <body>Hello</body>
    </html>
\end{verbatim}

这可以很好地在我的文档上显示代码。但是,假设我想像 IDE 在输出文档中那样突出显示 HTML 标记?有没有可以提供帮助的软件包?

我想对 Java、C#、HTML、CSS 等各种语言做同样的事情。

4

7 回答 7

166

您可以使用列表包。它支持许多不同的语言,并且有很多用于自定义输出的选项。

\documentclass{article}
\usepackage{listings}

\begin{document}
\begin{lstlisting}[language=html]
<html>
    <head>
        <title>Hello</title>
    </head>
    <body>Hello</body>
</html>
\end{lstlisting}
\end{document}
于 2008-11-18T23:43:01.057 回答
157

在问了一个类似的问题后,我创建了另一个使用 Pygments 的包,并提供了比texments. 它被称为minted并且非常稳定和可用。

只是为了炫耀一下,这里有一个用 minted 突出显示的代码:

示例代码

于 2010-01-24T11:20:07.010 回答
22

我推荐Pygments。它接受任何语言的一段代码并输出语法突出显示的 LaTeX 代码。它使用fancyvrbcolor包来产生它的输出。我个人更喜欢它而不是列表包。我认为fancyvrb创造了更漂亮的结果。

于 2009-09-20T21:39:11.280 回答
11

LGrind 就是这样做的。这是一个成熟的 LaTeX 包,从 adam 还是个牛仔就已经存在,并且支持多种编程语言。

于 2008-11-18T23:27:34.193 回答
10

我会使用开发人员 Konrad Rudolph 提到的minted 包,而不是列表包。原因如下:

上市包

列表包默认不支持颜色。要使用颜色,您需要包含颜色包并使用\lstset命令自行定义颜色规则,如此的 matlab 代码所述。

此外,列表包不适用于 unicode,但您可以按照此处此处的说明解决这些问题。

以下代码

\documentclass{article}
\usepackage{listings}

\begin{document}
\begin{lstlisting}[language=html]
<html>
    <head>
        <title>Hello</title>
    </head>
    <body>Hello</body>
</html>
\end{lstlisting}
\end{document}

生成以下图像:

在此处输入图像描述

铸造包装

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}

生成以下图像:

在此处输入图像描述

于 2015-11-06T11:09:59.307 回答
4

我主要在论文中使用 lstlistings,但对于彩色输出(用于幻灯片),我使用 pygments。

于 2009-08-05T17:27:16.313 回答
-2

我建议根据以下 tex 代码定义自己的包;这给了你完全的自由。http://ubuntuforums.org/archive/index.php/t-331602.html

于 2009-11-14T17:13:23.930 回答