howmファイルをHTML変換する
howm2htmlでHTML変換する
howmファイルをHTML変換したい場合には「howm2html.vim」で変換が行えます。
QFixHowm用に設定して修正等を行ったhowm2html.vimが同梱されているので、これまでhowm2html.vimを使用していた場合は削除してください。
" HTMLファイル出力先
let HowmHtml_htmldir = '~/path/to/html_dir'
cssは howm2html.css (html/howm2html.css)と peachpuff.css(コードハイライタを使用する場合)をHTML出力先へコピーして使用してください。(HowmHtml_htmldirがデフォルトの場合はコピーする必要はありません)
デザインはhowm2html.css を使用して変更可能です。
実際にhowm2html.jax(doc/howm2html.jax) を開いて変換してみてください。
こういうエントリを
このように 表示します。
変換可能なファイルタイプ
HTML変換可能なファイルタイプとしてデフォルトでは「qfix_memoファイルタイプ」が使えます。
qfix_memoは「はてな記法」のサブセット(独自拡張を含む)でMarkdown記法も一部取り込まれています。
- 「qfix_memoファイルタイプの特殊記法」
- または doc/howm2html.zipを解凍してできた syntax.htmlを参照してください。
また外部のHTML変換コマンドを使用してMarkdown等のファイル形式をHTML変換することも可能です。
コードハイライタ (スーパーpreのシンタックスハイライト)
howmメモにコード片を書くことはよくあると思いますが、これをシンタックスハイライト(色分け)してHTML変換することができます。
コード片のシンタックスハイライトはqfix_memo(デフォルト)とMarkdown形式の変換で有効で、Vimが対応しているファイルタイプなら何でもシンタックスハイライトされます。
スーパーpreをVimのsyntaxで変換することができます。
コードハイライタを有効にするにはHowmHtml_CodeHighlight を設定します。
" スーパーpreのコードハイライタを有効にする
let HowmHtml_CodeHighlight = 1
その後に howm2html.css と peachpuff.css をHTML出力先へコピーしてHTML変換するとスーパーpreは色付けして表示されます。(QFixHowmの場合は misc/css に同じファイルがあります)
howmファイル
>|vim|
" grep,tagsのためカレントディレクトリをファイルと同じディレクトリに移動する
if !exists('+autochdir')
" autochdirが存在しないが、カレントディレクトリを移動したい場合
au BufEnter * execute ":silent! lcd " . escape(expand("%:p:h"), ' ')
endif
||<
HTML変換後の表示(howm2html.css+peachpuff.css)
スーパーpre内のコードを filetype=vimとして変換して表示します
HTMLの表示(css)をカスタマイズ
howm2html.cssの * Decoration 以降は単なる装飾ですので削除するとほぼプレーンな状態になります。
気に入らない部分は適当に修正して好みのcssに変更してください。
HTML変換関数
HTML変換に使用する関数はHowmHtml_ConvertFuncで指定可能です。
明示的にqfix_memo(デフォルト)HTML変換関数を指定したい場合は以下を設定してください。
" デフォルトHTML変換関数
let HowmHtml_ConvertFunc = '<SID>HowmStr2HTML'
HowmHtml_ConvertFuncに独自の関数を指定することで好みのHTMLを作成することができます。
なおMarkdownについては専用の変換関数が用意されています。
外部コマンドでのMarkdown変換
markdown.plやpandocなどHTML変換を行う外部コマンドを使用してMarkdown等のファイル形式をHTML変換することも可能です。
メモの書式にMarkdownを使用している場合は「HTML変換」で外部コマンドを使用したHTML変換が行えます。
" Markdownを外部コマンド使用でHTML変換
let HowmHtml_ConvertFunc = '<SID>MarkdownStr2HTML'
外部コマンドのデフォルトとして markdown.plを使用しますが、パスの通った場所に markdown.plがない場合はパスを指定してください。
" HTML変換用コマンド
let HowmHtml_ConvertCmd = 'path/to/markdown.pl'
Windowsで空白を含むパスに実行ファイルがある場合は " で囲ってください。
変換用コマンド
動作確認は公式のmarkdown.plとpandocで行いました。
余談ですが表(テーブル)と定義リストのフォーマットはmarkdown.plとpandocで異なるようなので気をつけて下さい。
markdown.pl
http://daringfireball.net/projects/markdown/
テーブルや定義リストが使えるパッチを適用したmarkdown.plでも動作確認しています。
http://www.sera.desuyo.net/komono/
http://daringfireball.net/projects/downloads/Markdown_1.0.2b8.tbz
pandocを利用して変換も可能です。
http://johnmacfarlane.net/pandoc/
" HTML変換用コマンド
let HowmHtml_ConvertCmd = '"C:/Program Files/Pandoc/bin/pandoc" -f markdown'
Windowsで空白を含むパスに実行ファイルがある場合は " で囲ってください。
特殊記法
Markdownの画像ファイルリンクは原寸表示しか行えませんが、howm2html.vimの独自処理として [: と :] で囲んだ画像ファイルはサムネイル化して変換することが可能です。
[:C:/temp/ほげ.jpg:]
またMarkdownのコード片はハイライト表示(色分け)されませんが >|hoge| と ||< でコードを囲むと「スーパーpreのシンタックスハイライト」として表示されます。
hogeにはコードハイライト対象のファイルタイプを指定してください。
>|vim|
function! hoge()
" この関数はVimによるコードハイライトがそのまま使用されます
endfunction
||<
この場合は filetype=vim のコードとしてハイライト表示されます。
コードハイライトが反映されるためには howm2html.css と peachpuff.css をHTML出力先へコピーする必要があります。
その他のHTML変換
pandocなどHTML変換を行う外部コマンドを使用して任意のファイル形式をHTML変換することも可能です。
howm(qfix_memo)、Markdown以外のファイルタイプを外部コマンドで変換するために特殊処理を行わない変換関数が用意されています。
" HTML変換関数
let HowmHtml_ConvertFunc = '<SID>H2HStr2HTML'
たとえばpandocで reStructuredTextを変換するには以下のように設定します。
" HTML変換用コマンド
let HowmHtml_ConvertCmd = '"C:/Program Files/Pandoc/bin/pandoc" -f rst'
Windowsで空白を含むパスに実行ファイルがある場合は " で囲ってください。
独自の変換関数を作成する例
変換元のリストが渡されるので、外部コマンド mycommand でHTMLに変換したリストを取得して返します。
" HTML変換関数
let HowmHtml_ConvertFunc = 'MyStr2HTML'
function! MyStr2HTML(list, htmlname, anchor) let list = a:list
" 渡されたリストのエンコーディングをutf-8に変換 let from = &enc let to = 'utf-8' if from != to call map(list, 'iconv(v:val, from, to)') endif
" リストをファイルに書き出して外部コマンドで変換
let mkdfile = tempname()
call writefile(list, mkdfile) let cmd = 'mycommand '.mkdfile let html = split(system(cmd), '[\r\n]\+')
call delete(mkdfile)
" リストのエンコーディングを元に戻す
if from != to call map(html, 'iconv(v:val, to, from)') endif
return html
endfunction
他のプラグインのHTML変換を利用する
QFixHowmのバッファとして Markdownや VimWikiを利用している場合は、直接ファイルを渡して対応するHTML変換を使用することもできます。
Markdownや VimWiki以外のプラグインやファイルタイプでも応用可能です。