LaTeX包用各种语言的语法高亮显示代码

时间:2008-11-18 23:18:26

标签: syntax latex package highlighting

我正在寻找一个在代码上进行语法高亮的LaTeX包。例如,现在我使用逐字块来编写代码:

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

这样可以在我的文档上显示代码。但是,假设我想以IDE在输出文档中的方式突出显示HTML标记? 是否有可以提供帮助的套餐?

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

7 个答案:

答案 0 :(得分:152)

您可以使用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}

答案 1 :(得分:136)

在询问similar question之后我创建了另一个使用Pygments的包,并提供了比texments更多的选项。它被称为minted,非常稳定且可用。

只是为了展示它,这是一个用铸造突出显示的代码:

Example code

答案 2 :(得分:21)

我建议Pygments。它接受任何语言的一段代码,并输出语法高亮的LaTeX代码。它使用fancyvrbcolor包来生成其输出。我个人更喜欢它到列表包。我认为fancyvrb会产生更漂亮的结果。

答案 3 :(得分:11)

LGrind这样做。这是一个成熟的LaTeX软件包,因为adam是一个牛仔,并且支持许多编程语言。

答案 4 :(得分:9)

我会使用开发人员Konrad Rudolph提到的minted package而不是listing package。原因如下:

列出套餐

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

此外,列表包不适用于unicode,但您可以按照herehere解释这些问题。

以下代码

\documentclass{article}
\usepackage{listings}

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

生成以下图像:

enter image description here

铸造包

铸造的包装支持颜色,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}

生成以下图像:

enter image description here

答案 5 :(得分:4)

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

答案 6 :(得分:-1)

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