ChatGPT解决这个技术问题 Extra ChatGPT

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

我正在寻找一个对代码进行语法突出显示的 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 可以处理这样的事情吗?

C
ChrisN

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

这默认情况下会做颜色吗?我在测试使用中没有看到彩色输出,我不确定这是否是我的错误,或者根本不是一个功能。
我在这里找到了答案:tjansson.dk/?p=419。您可以简单地使用 lstset 命令为不同的属性设置各种样式。
C
Community

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

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

https://i.stack.imgur.com/BFNXp.png


这实际上是一个很好的工作。必须安装 Pygments 确实会带来一些挑战,但我相信大多数人都会愿意这样做。
@Vincent:不幸的是,目前在 Windows 上安装 Pygments 要复杂得多(用户必须调整 PATH 变量并创建一个 cmd 脚本)。我希望说服 Pygments 维护者在 pygmentize 中提供一个 .exe 包装器,以使这一步更容易。
在尝试了列表和 minted/Pygments 之后,我认为 minted 更好(更灵活)。然而,它需要跳过十几个环节,升级到 MiKTeX 2.8,安装 Python,安装其他组件等等。铸造的文档很差,它不支持打破长线。但最终我得到了它以 Eclipse 颜色呈现 Java/XML! jevon.org/wiki/Eclipse_Pygments_Style
@soundasleepful:铸造的文档会不断更新。 ;-) 我实际上发现它相当广泛(当然我有偏见),但我很乐意解决任何投诉。就目前而言,“要求”部分确实很糟糕。
minted 已安装并在 ShareLatex 和 Overleaf 上运行。省去安装 Pygments 的麻烦;)
r
reprogrammer

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


虽然我很欣赏列表背后的宏观,但我也同意 pygments 具有优势:更好的突出显示、更容易的自定义、混合语法的能力以及输出为 Latex 以外的格式(如 HTML)的能力。
beamer 类型的文档上,这显然是唯一的功能选项。 mintedlistings 都不能与 beamer 正确编译。
是的,我已将 listingsbeamer 一起使用,但您必须指定包含列表的框架为 [fragile]
C
Community

我会使用开发人员 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}

生成以下图像:

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


S
SimplyKnownAsG

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


P
Paul Biggar

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


o
okm

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


该链接仅显示了使用“列表”包突出显示 Python 代码的语法的特定设置...

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅