GNU source-highlight コマンドで、ソースをハイライトしたHTMLを作成できます。
ただし、font タグが入り乱れて美しくない。
source-highlight で生成したHTML
css を使うオプションをつける。
source-highlight -c style.css
これをつけると、 style.cssへのリンクタグとヘッダが生成される。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="GENERATOR" content="GNU source-highlight 3.1.7 by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite"> <title>./index.html</title> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body>
でも求めているのはこういうのじゃなく、 font タグとかを消して自分でスタイルを決めたい。
--no-doc オプション
source-highlight -c style.css --no-doc
このオプションをつけると、埋め込み用になるが、styleタグまで消されてしまう・・・
<pre><tt><span class="preproc"><!doctype</span><span class="normal"> </span><span class="type">html</span><span class="preproc">></span> <span class="keyword"><html</span><span class="normal"> </span><span class="type">lang</span><span class="symbol">=</span><span class="string">"ja"</span><span class="keyword">></span> <span class="keyword"><head></span>
ちなみに行番号は
source-highlight -n
これで行番号も入れてくれます。便利。
自分でスタイルを入れることにした。
GNUのページに公開されてるデフォルトスタイルを自分で追記することにしました。
<style> body { background-color: white; } /* the color for context lines (when specified with line ranges) */ .context { color: gray; } .keyword { color: blue; font-weight: bold; } .type { color: darkgreen; } .usertype, .classname { color: teal; } .string { color: red; font-family: monospace; } .regexp { color: orange; } .specialchar { color: pink; font-family: monospace; } .comment { color: brown; font-style: italic; } .number { color: purple; } .preproc { color: darkblue; font-weight: bold; } .symbol { color: darkred; } .function { color: black; font-weight: bold; } .cbracket { color: red; } .todo { font-weight: bold; background-color: cyan; } /* line numbers */ .linenum { color: black; font-family: monospace; } /* Internet related */ .url { color: blue; text-decoration: underline; font-family: monospace; } /* other elements for ChangeLog and Log files */ .date { color: blue; font-weight: bold; } .time, .file { color: darkblue; font-weight: bold; } .ip, .name { color: darkgreen; } /* for Prolog, Perl */ .variable { color: darkgreen; } .italics { color: darkgreen; font-style: italic; } .bold { color: darkgreen; font-weight: bold; } /* for LaTeX */ .underline { color: darkgreen; text-decoration: underline; } .fixed { color: green; font-family: monospace; } .argument, .optionalargument { color: darkgreen; } .math { color: orange; } .bibtex { color: blue; } /* for diffs */ .oldfile { color: orange; } .newfile { color: darkgreen; } .difflines { color: blue; } /* for css */ .selector { color: purple; } .property { color: blue; } .value { color: darkgreen; font-style: italic; } /* for Oz */ .atom { color: orange; } .meta { font-style: italic; } </style>
これで冒頭のようなHTMLを作ることが出来ました。めでたい。