reStructured Text (rst) で色々な種類のコードをハイライトする方法

作成日:

本ページでは reStructured Text (rst) でのシンタックスハイライト機能で任意の言語をハイライトする方法ついて説明します。

方法#

シンタックスハイライト部分は Pygments というライブラリが行っているため、 Pygments の拡張機能として存在しているライブラリをインストールすればOKです。

例えば、デフォルトでは JSX に対するハイライト機能が存在しないですが、 jsx-lexer を下記の通りインストールすることで

pip install jsx-lexer

JSXのコードをハイライトすることができます。例えば以下のように。

export default function Hoge() {
    const env = process.env.NODE_ENV;
    return (
        <>
        {
            (env == 'production') ?
                <div>Production</div>
            :
                <div>Development</div>
        }
        </>
    )
}

説明#

rst を変換する機能は docutils ライブラリが提供していますが、シンタックスハイライトに関しては Pygments というライブラリを利用しています。

Pygments が対応している言語一覧は結構膨大で、以下のコマンドで確認できます。

pygmentize -L

実行してみるとわかりますが、おそらく皆さんが思っているよりも膨大な量の言語が対応されています。一覧は こちらのページ から確認することができます。

しかし、新しく生まれてきた言語などはすぐに対応されないことが多いですのでどなたかが作成したものを利用するか、あるいは自分で作成する必要があります。

自分で言語解析器 (lexer) を書くためのページ も準備されており、未対応の言語があればみんなで書いてみよう!ということが公式サイトにも書いてあります[1]


関連記事

reStructuredText (rst)
Document
Pygments