= ソースコードのシンタックスカラーリング = #SyntaxColoringofSourceCode
Trac は [wiki:WikiFormatting Wiki形式] のテキストと [wiki:TracBrowser リポジトリブラウザ] での、ソースコードの言語特有のシンタックスハイライトに対応しています。

色付けを行うために、 Trac はとても多くのプログラミング言語に対応している外部のライブラリを使用しています。

現在、 Trac は以下にあげる 1 つ以上のパッケージを使用して、シンタックスハイライトを実現しています:

 * [http://www.codento.com/people/mtr/genscript/ GNU Enscript] 
 * [http://silvercity.sourceforge.net/ SilverCity]
 * [http://pygments.pocoo.org/ Pygments] (0.10 では対応したプラグインが必要です。 [#AboutPygments 以下] を参照してください。)

シンタックスハイライトを有効にするためには、ただこれらのパッケージをインストールするだけです。追加のコンフィグレーションは必要ありませんが、カラーリングを修正するためには、 `trac/htdocs/css/code.css` を参照してください。

Trac がインストールされたライブラリを検出できない場合は、 Trac のロギングを使用してみてください。実際に Trac から !SilverCity 0.9.6 が壊れているように見えます。 0.9.7 か 0.9.5 を使用して下さい。 http://trac.edgewall.org/wiki/TracFaq#why-is-my-css-code-not-being-highlighted-even-though-i-have-silvercity-installed

シンタックスハイライトを使用するとき、可能な限り Trac は自動的に Enscript よりも !SilverCity のハイライトを優先します (下の注を参照のこと)。

どちらのパッケージも使用できないときは、 Trac はプレーンテキストでデータを表示します。

'''Note:''' Enscript はとても多くのプログラミング言語に対応しますが、 !SilverCity はライブラリであり、外部プロセスで実行されないので、 Enscript よりも処理が速いです。

=== !SilverCity について === #AboutSilverCity
!SilverCity は [http://www.scintilla.org/ Scintilla] の構文解析エンジンを使用します。 Scintilla は !SilverCity が実装しているよりもより多くのプログラミング言語に対応しています。もし、 !SilverCity に Scintilla が対応しているプログラミング言語を追加したいならば、そんなに難しいことではありません。どのようにすればいいのかは、 [http://trac.edgewall.org/wiki/SilverCityAddLanguage SilverCityAddLanguage] を参照してください。

=== Pygments について === #AboutPygments

Trac 0.11 からは [http://pygments.org/ Pygments] が新しいデフォルトのハイライトライブラリになります。 Pygments は Python で実装され、非常に高速で、拡張しやすく、 [http://pygments.org/docs/ 良いドキュメント] があるハイライトライブラリです。 Enscript や Scintilla ほど多くの言語をサポートしませんが総合的な出力品質は、はるかに良いです。

Pygments を Trac 0.11 で使用するためには、 Pygments 0.5.1 以上をインストールしなければなりません。 Trac 0.10 でも ‘ygments を使用したいのであれば、 tTrac hacks から[http://trac-hacks.org/wiki/TracPygmentsPlugin TracPygmentsPlugin] をインストールしなければなりません。なんらかのバグを発見した場合は  [http://dev.pocoo.org/projects/pygments/ Pygments の Trac] にチケットを登録してください。

Pygments の構文解析エンジンが対応するリストは毎週のように更新されています。以下のリストが古い可能性は非常に高いです。 正確には [http://pygments.org/docs/lexers/ supported lexers] のページを参照してください。


== 対応しているシンタックスハイライト == #SyntaxColoringSupport

|| || !SilverCity || Enscript || Pygments ||
|| Ada      ||   || X || ||
|| Asm      ||   || X || ||
|| Apache Conf (htaccess)) || || || X ||
|| * ASP    || X || X || ||
|| * C      || X || X || X ||
|| * C#     ||   || X(2) || X ||
|| * C++    || X || X || X ||
|| * Java   || X(4)|| X || X ||
|| Awk      ||   || X || ||
|| Boo || || || X ||
|| CSS      || X ||   || X ||
|| Python Doctests || || || X ||
|| Diff     ||   || X || X ||
|| Eiffel   ||   || X || ||
|| Elisp    ||   || X || ||
|| Fortran  ||   || X(3) || ||
|| Haskell  ||   || X || X ||
|| Genshi || || || X ||
|| HTML     || X || X || X ||
|| IDL      ||   || X || ||
|| INI || || || X ||
|| Javascript || X || X || X ||
|| Lua || || || X ||
|| m4       ||   || X || ||
|| Makefile ||   || X || X ||
|| Mako || || || X ||
|| Matlab   ||   || X (5) || ||
|| Mygthy || || || X ||
|| Objective-C|| || X || ||
|| OCaml    ||   ||   || X ||
|| Pascal   ||   || X || X ||
|| * Perl   || X || X || X ||
|| * PHP    || X ||   || X ||
|| PSP      || X ||   || ||
|| Pyrex    ||   || X || ||
|| * Python || X || X || X ||
|| * Ruby   || X || X (1) || X ||
|| Scheme   ||   || X || X ||
|| Shell    ||   || X || X ||
|| Smarty || || || X ||
|| SQL      || X || X || X ||
|| Troff    ||   || X || X ||
|| TCL      ||   || X || ||
|| Tex      ||   || X || X ||
|| Verilog  || X(4) || X || ||
|| VHDL     ||   || X || ||
|| Visual Basic |||| X || X ||
|| VRML     ||   || X || ||
|| XML      || X ||  || X ||

''(*) [wiki:WikiFormatting WikiFormatting] の WikiProcessors でシンタックスハイライトが対応しています。''

''(1) Enscript では Ruby のハイライトは含まれていません。 Ruby のハイライトルールは [http://neugierig.org/software/ruby/] から入手することができます。''

''(2) C# のハイライトは Enscript の配布物には含まれていません。 C# 用のハイライトのルールは http://wiki.hasno.info/index.php/Csharp.st より入手可能です。

''(3) Fortran: Enscript ではパッケージ化されている固定のソース形式のみをサポートしています。 Fortran 90x/2003 のハイライトルールは http://wiki.hasno.info/index.php/F90.st から入手することができます。

''(4) 2006 年 11 月 23 日にリリースされた Silvercity 0.9.7 以来更新されていません。

''(5) デフォルトで `.m` ファイルは Objective-C ファイルとして扱われます。 MATLAB ファイルとして `.m` ファイルを扱うには、 [wiki:TracIni#mimeviewer-section "trac.ini の [mimeviewer] セクション"]の "mime_map" に  "text/x-matlab:m" を追加してください。

== その他のソフトウェア == #ExtraSoftware
 * GNU Enscript -- http://directory.fsf.org/GNU/enscript.html
 * GNU Enscript for Windows -- http://gnuwin32.sourceforge.net/packages/enscript.htm
 * !SilverCity -- http://silvercity.sf.net/
 * Pygments -- http://pygments.org/

----
See also: WikiProcessors, WikiFormatting, TracWiki, TracBrowser

