さまざまな言語でコードを構文強調表示するためのLaTeXパッケージ


164

コードで構文を強調表示するLaTeXパッケージを探しています。たとえば、今は逐語的ブロックを使用してコードを記述しています。

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

そして、これは私のドキュメントにコードを表示するためにうまく機能します。しかし、出力ドキュメントでIDEが行うようにHTMLマークアップを強調したいとしますか?役立つパッケージはありますか?

Java、C#、HTML、CSSなどのさまざまな言語で同じことをしたいと思います。


4
私は満足していませんlstlisting。XMLコードをまったく強調表示せず、外部Unicode文字を使用すると失敗します。どうやらJavaScriptもサポートされていません。LGrindはそのようなことを処理できますか?
webjunkie 2009

回答:


157

リストパッケージを使用できます。それは多くの異なる言語をサポートし、出力をカスタマイズするための多くのオプションがあります。

\documentclass{article}
\usepackage{listings}

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

20
これはデフォルトで色を付けますか?テストの使用方法で色付きの出力が表示されません。それが自分のエラーなのか、単に機能なのかはわかりません。
ベンソン

12
ここで答えを見つけました: tjansson.dk/?p=419。lstsetコマンドを使用するだけで、さまざまなプロパティにあらゆる種類のスタイルを設定できます。
ベンソン

144

同様の質問をした後、Pygmentsを使用する別のパッケージを作成しましたtexments。それmintedは呼び出され、非常に安定していて使用可能です。

それを誇示するために、ここにミントで強調表示されたコードがあります:

コード例


これは実際にはかなり良い仕事です。Pygmentsをインストールしなければならないことは少し難しい問題ですが、ほとんどの人はそうするつもりだと確信しています。
Vincent Ramdhanie、2010年

1
@Vincent:残念ながら、WindowsへのPygmentsのインストールは、現時点ではかなり複雑です(ユーザーはPATH変数を調整してcmdスクリプトを作成する必要があります)。私は出荷するPygmentsのメンテナを説得するために望んでいるpygmentize.exe、このステップを容易にするためのラッパー。
Konrad Rudolph、

1
リストとミント/ピグメントの両方を試した後、ミントの方がはるかに優れている(より柔軟)と判断しました。ただし、ダースフープのジャンプ、MiKTeX 2.8へのアップグレード、Pythonのインストール、その他のコンポーネントのインストールなどが必要になります。作成されたドキュメントは貧弱で、長い行の分割をサポートしていません。しかし最終的には、Java / XMLをEclipseカラーでレンダリングするようになりました。jevon.org/wiki/Eclipse_Pygments_Style
jevon

@soundasleepful:作成されたドキュメントは継続的に更新されます。;-)実際にはかなり広範囲にわたると思います(もちろん私は偏見があります)が、苦情があれば喜んで対処します。現状では、「要件」セクションは明らかにひどいものです。
Konrad Rudolph、

3
mintedがインストールされ、ShareLatexとOverleafの両方で動作しています。Pygmentsをインストールする頭痛の種を省いてください;)
grofte

21

Pygmentsをお勧めします。任意の言語のコードを受け入れ、構文が強調表示されたLaTeXコードを出力します。これは、使用していますfancyvrb、その出力を生成するためにパッケージを。個人的には、リスティングパッケージよりも好みます。fancyvrbはよりきれいな結果を生み出すと思います。


1
リストの背後にあるマクロに感心している一方で、ピグメントには優れた強調表示、カスタマイズの容易さ、構文を混合する機能、HTMLなどのラテックス以外の形式に出力する機能があるという点にも同意します。
Charles Stewart

上のbeamerタイプの文書、これは明らかにのみ機能のオプションです。また、mintedlistings正しくコンパイルすることもできませんbeamer
ルイス・デ・スーザ

はい、私はで使用listingsしましたbeamerが、リストを含むフレームがであることを指定する必要があります[fragile]
スーパーノーマル

11

LGrindはこれを行います。これは成熟したLaTeXパッケージであり、adamがカウボーイだった頃から存在し、多くのプログラミング言語をサポートしています。


10

私は、リストパッケージの代わりに、開発者のKonrad Rudolphから言及されmintedパッケージを使用します。理由は次のとおりです。

リストパッケージ

リストパッケージは、デフォルトでは色をサポートしていません。色を使用するには、ここでmatlabコード説明されているように、\ lstsetコマンドを使用して、カラーパッケージを含め、カラールールを自分で定義する必要があります

また、リストパッケージは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}

次の画像が生成されます。

ここに画像の説明を入力してください

ミントパッケージ

作成されたパッケージは、色、ユニコードをサポートし、見栄えが良いです。ただし、それを使用するには、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}

次の画像が生成されます。

ここに画像の説明を入力してください


4

私は主に紙のリストを使用しますが、カラー出力(スライドの場合)の代わりに顔料を使用します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.