Hatena::ブログ(Diary)

三等兵

うさぎともふもふしたりうさぎともっふもっふしたり。プログラミングしたり。

2012-06-04

Haskell製のMarkdownをHTMLやLaTeXに変換できるPandocのインストールとサンプル

Haskell製のドキュメントコンバータ。markdownをhtmlにしたりLaTeXにしたりっていうことができるやつ。変換できる形式が多い。便利だ。

いろいろできてすごいんだけどオプションも多め。さすがに全部はめんどくさいけど調べてみた。


インストール

詳しいことはここに書かれている。


だいたいのOSに対応しているみたいなんで誰でも試せる。


MacのHomebrewでインストールする

Homebrewでインストールした。といっても、Pandocはformulaが用意されていない(npmでも用意されていないのと同じ理由らしい)ので、いま話題のhaskell-platformを通して、それからcabalを使ってインストール。

% brew install haskell-platform
% cabal update
% cabal install pandoc

少し時間かかるかも。インストールできたら.zshrcから$HOME/.cabal/binにパスを通す。zshの場合。

PATH=${HOME}/.cabal/bin:$PATH

記述して保存したらターミナルを再起動して、

% pandoc -v

とすると、

% pandoc 1.9.4
Compiled with citeproc-hs 0.3.4, texmath 0.6.0.6, highlighting-kate 0.5.1.
Syntax highlighting is supported for the following languages:
    Actionscript, Ada, Alert, Alert_indent, Apache, Asn1, Asp, Awk, Bash,
    Bibtex, Boo, C, Changelog, Clojure, Cmake, Coffeescript, Coldfusion,
    Commonlisp, Cpp, Cs, Css, D, Diff, Djangotemplate, Doxygen, Dtd, Eiffel,
    Email, Erlang, Fortran, Fsharp, Gnuassembler, Go, Haskell, Haxe, Html, Ini,
    Java, Javadoc, Javascript, Json, Jsp, Latex, Lex, LiterateHaskell, Lua,
    Makefile, Mandoc, Matlab, Maxima, Metafont, Mips, Modula2, Modula3,
    Monobasic, Nasm, Noweb, Objectivec, Objectivecpp, Ocaml, Octave, Pascal,
    Perl, Php, Pike, Postscript, Prolog, Python, R, Relaxngcompact, Rhtml, Ruby,
    Scala, Scheme, Sci, Sed, Sgml, Sql, SqlMysql, SqlPostgresql, Tcl, Texinfo,
    Verilog, Vhdl, Xml, Xorg, Xslt, Xul, Yacc, Yaml
Copyright (C) 2006-2012 John MacFarlane
Web:  http://johnmacfarlane.net/pandoc
This is free software; see the source for copying conditions.  There is no
warranty, not even for merchantability or fitness for a particular purpose.

うまくいった。

% pandoc -h
pandoc [OPTIONS] [FILES]
Input formats:  native, json, markdown, markdown+lhs, rst, rst+lhs, docbook,
                textile, html, latex, latex+lhs
Output formats: native, json, html, html5, html+lhs, html5+lhs, s5, slidy,
                dzslides, docbook, opendocument, latex, latex+lhs, beamer,
                beamer+lhs, context, texinfo, man, markdown, markdown+lhs,
                plain, rst, rst+lhs, mediawiki, textile, rtf, org, asciidoc,
                odt, docx, epub
Options:
  -f FORMAT, -r FORMAT  --from=FORMAT, --read=FORMAT                  
  -t FORMAT, -w FORMAT  --to=FORMAT, --write=FORMAT                   
  -o FILENAME           --output=FILENAME                             
                        --data-dir=DIRECTORY                          
                        --strict                                      
  -R                    --parse-raw                                   
  -S                    --smart                                       
                        --old-dashes                                  
                        --base-header-level=NUMBER                    
                        --indented-code-classes=STRING                
                        --normalize                                   
  -p                    --preserve-tabs                               
                        --tab-stop=NUMBER                             
  -s                    --standalone                                  
                        --template=FILENAME                           
  -V KEY[:VALUE]        --variable=KEY[:VALUE]                        
  -D FORMAT             --print-default-template=FORMAT               
                        --no-wrap                                     
                        --columns=NUMBER                              
                        --toc, --table-of-contents                    
                        --no-highlight                                
                        --highlight-style=STYLE                       
  -H FILENAME           --include-in-header=FILENAME                  
  -B FILENAME           --include-before-body=FILENAME                
  -A FILENAME           --include-after-body=FILENAME                 
                        --self-contained                              
                        --offline                                     
  -5                    --html5                                       
                        --ascii                                       
                        --reference-links                             
                        --atx-headers                                 
                        --chapters                                    
  -N                    --number-sections                             
                        --no-tex-ligatures
.
.
.

な、なるほど。調べるのしんどいな。オプションは下記のURLで調べられる。


デモ

オンラインで試せるやつもあった。


けど、オンラインじゃなくてとりあえずREADMEだけダウンロードして変換してみる。

% pandoc -s README | less
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta http-equiv="Content-Style-Type" content="text/css" />
  <meta name="generator" content="pandoc" />
  <meta name="author" content="John MacFarlane" />
  <meta name="date" content="2012-01-27" />
  <title>Pandoc User's Guide</title>
</head>
.
.
.

といった感じ。ファイルで出力するなら、

% pandoc -s README -o readme.html

それぞれファイルのフォーマットを指定するなら、

% pandoc -s -f markdown -t html README -o readme.html

こうする。


自前で用意したMarkdownファイルを変換してみる

EvernoteとMarkdownでごちゃごちゃやってるのでちょっとそのとき使う簡単なテストファイルを通して精度を確かめる。

% pandoc -s -f markdown -t html test.md -o test.html

tableがうまく変換されなかった。

First Header | Second Header

------------- | -------------

Row1 Cell1 | Row1 Cell2

Row2 Cell1 | Row2 Cell2



First Header Second Header Third Header
------------ ------------- ------------
Content Cell Content Cell Content Cell
Content Cell Content Cell Content Cell


First Header | Second Header | Third Header

----------- |
-----------: | -----------:

Left | Center | Right

Left | Center | Right

どれもだめらしい。

ドキュメントを確かめてみると、

とのこと。Markdownの正しいテーブルの書き方って結局何なんだ…...。とりあえずこっちに差し替えてやってみるとうまく表が作られた。

-------------------------------------------------------------

Centered Default Right Left

Header Aligned Aligned Aligned

----------- ------- --------------- -------------------------

First row 12.0 Example of a row that

spans multiple lines.



Second row 5.0 Here's another one. Note

the blank line between

rows.

-------------------------------------------------------------

今までみたテーブルよりかきやすいといえば書きやすいけど。そもそもmarkdownの表はどれも扱いにくい。

その他オプションを試したんだけど目的のものがすぐ見つかってしまったのでやめた。Markdownに関して言えば、若干公式?の記法と異なる部分が見受けられる。そこにオプション混ぜると公式通りだったりそうじゃなかったり...。テーブルだけじゃなかったよ。精密さを求めるなら気軽にデータ投げられない。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/sandai/20120604/p1
リンク元