[解決済み】LaTeXのソースコードハイライト機能
質問
LaTeXでソースコードをハイライトする必要があります。パッケージ
listings
は、ほとんどのユースケースで最良の選択と思われますし、私にとっても、これまではそうでした。
しかし、今はもっと柔軟性が必要です。一般的に、私が求めているのは
リアル
レクサーです。特に、私は(独自の言語定義のために)独自の数値スタイルを定義する(そして強調する!)必要があります。
listings
はコード中の数字をハイライトすることができません。しかし、私はこのようなものを作成する必要があります。
listings
は、文字列の任意の区切り文字に対応することができません。次のようなRubyの有効なコードを考えてみましょう。
s = %q!this is a string.!
ここです。
!
はほぼ置き換えることができます。
任意の
というデリミタがあります。
(その
listings
がUnicodeを扱えないのもかなり悩ましいところですが、それはまた別の問題です)。
理想を言えば、私は
listings
より複雑なレキシングルールを提供することができます。しかし、それを除けば、私はまた、実行可能な代替手段を探しています。
その他のスレッド
を使用することを提案しています。
ピグメント
LaTeXの出力が可能です。パッケージもあります
texments
- を使えば、移行を容易にすることができます。
しかし、これでは機能が不足しています。特に、私が興味を持っているのは
listings
-スタイルの行番号,ソースコードの行参照,ソースコードにLaTeXを埋め込む可能性(オプション
texcl
と
mathescape
で
listings
).
例として、次のようなソースコードのタイプセットを示します。
listings
これは、置き換えが提供すべきもののいくつかを示しています。
<サブ [Bit Twiddling Hacksより「横付け」修正] 。
解決するには?
ノーマンのアドバイスを真摯に受け止め、私は、(a)(b)(c)を使った解決策をハックしました。 パッチド ) Pygmentsでハイライトを行い、破裂することなく可能な限り多くの機能を押し込んでいます;-)
また、LateXのパッケージも作成しました。 バージョン1.2 ...
プレゼン ミンテッド
鋳造された は、Pygmentsを使ってLaTeXで一流のシンタックスハイライトを提供するパッケージです。例えば、以下のような出力が可能です。
上記のコードを再現するための最小限のファイルを以下に示します(ユニコード文字を含めるとXeTeXが必要になるかもしれないことに注意してください)!
\documentclass[a4paper]{article}
\usepackage{fontspec}
\usepackage{minted}
\setsansfont{Calibri}
\setmonofont{Consolas}
\begin{document}
\renewcommand{\theFancyVerbLine}{
\sffamily\textcolor[rgb]{0.5,0.5,0.5}{\scriptsize\arabic{FancyVerbLine}}}
\begin{minted}[mathescape,
linenos,
numbersep=5pt,
gobble=2,
frame=lines,
framesep=2mm]{csharp}
string title = "This is a Unicode π in the sky"
/*
Defined as $\pi=\lim_{n\to\infty}\frac{P_n}{d}$ where $P$ is the perimeter
of an $n$-sided regular polygon circumscribing a
circle of diameter $d$.
*/
const double pi = 3.1415926535
\end{minted}
\end{document}
これは、次のコマンドでタイプセットできます。
xelatex -shell-escape test.tex
(ただし
造幣局
も動作します。
latex
と
pdflatex
...)
minted.sty
と同じように動作します。
texments.sty
が、追加機能を許可しています。
入手方法
-
ドキュメンテーション はもちろん含まれています。
-
鋳造された は現在 Geoffrey Poore によってメンテナンスされています。開発版には、最新の
.sty
ファイル で利用できます。 github.com/gpoore/minted そこからクローンすることができます。
改めて、このパッケージを作成する動機付けをしてくれたNormanに感謝します。
関連
-
[解決済み】LaTeXで "Missing $ inserted "というエラーが発生する。
-
[解決済み】LaTeXで変数を定義する方法はありますか?
-
[解決済み] pdflatex - synctex=1 -interaction=nonstopmode %.tex コマンドを開始できませんでした。
-
[解決済み] latex エラー: 環境証明が未定義です。
-
[解決済み] LaTeXタグの内容が余白を越えないようにする【非公開
-
[解決済み] LaTeXでPDFファイルを挿入する
-
[解決済み] LaTeXの表でテキストを折り返すには?
-
[解決済み] このLaTeX文書にインデントでコードを挿入する
-
[解決済み] Visual Studio Codeのシンタックスハイライトに使用する言語を設定する
-
[解決済み] 専門書のようなLaTeXのソースコード一覧表示
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テーブルの外のキャプション?
-
[解決済み] LaTeXのオプション引数
-
[解決済み] LaTeXの表全体のサイズを小さくするにはどうしたらよいですか?
-
[解決済み] LaTeXです。左寄せの段落と右寄せの段落の作り方
-
LaTeXエラー 解決策 エラー。ファイル 'amsmath.sty' が見つからない
-
[解決済み] LaTeXで空白の後にタブストップを設定するには?
-
[解決済み] latexで&&を入力するにはどうすればよいですか?
-
[解決済み] このLaTeX文書にインデントでコードを挿入する
-
[解決済み] 式中の空白を含む変数名
-
[解決済み] 様々な言語のコードをシンタックスハイライトするためのLaTeXパッケージ