Pandocをインストールする
ドキュメント変換ツール。
開発環境
- Linxu Mint 17.3 MATE 32bit
AsciiDocからMarkdownへ変換したい Markdownから楽してフォーマット変換する方法 - Qiita
インストール
Synapticでインストールした。
確認
バージョン
$ pandoc --version pandoc 1.12.2.1 Compiled with texmath 0.6.5.2, highlighting-kate 0.5.5.1. Syntax highlighting is supported for the following languages: actionscript, ada, apache, asn1, asp, awk, bash, bibtex, boo, c, changelog, clojure, cmake, coffee, coldfusion, commonlisp, cpp, cs, css, curry, d, diff, djangotemplate, doxygen, doxygenlua, dtd, eiffel, email, erlang, fortran, fsharp, gnuassembler, go, haskell, haxe, html, ini, java, javadoc, javascript, json, jsp, julia, latex, lex, literatecurry, literatehaskell, lua, makefile, mandoc, markdown, matlab, maxima, metafont, mips, modelines, modula2, modula3, monobasic, nasm, noweb, objectivec, objectivecpp, ocaml, octave, pascal, perl, php, pike, postscript, prolog, python, r, relaxngcompact, rhtml, roff, ruby, rust, scala, scheme, sci, sed, sgml, sql, sqlmysql, sqlpostgresql, tcl, texinfo, verilog, vhdl, xml, xorg, xslt, xul, yacc, yaml Default user data directory: /home/mint/.pandoc Copyright (C) 2006-2013 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 --help pandoc [OPTIONS] [FILES] Input formats: docbook, haddock, html, json, latex, markdown, markdown_github, markdown_mmd, markdown_phpextra, markdown_strict, mediawiki, native, opml, rst, textile Output formats: asciidoc, beamer, context, docbook, docx, dzslides, epub, epub3, fb2, html, html5, json, latex, man, markdown, markdown_github, markdown_mmd, markdown_phpextra, markdown_strict, mediawiki, native, odt, opendocument, opml, org, pdf*, plain, revealjs, rst, rtf, s5, slideous, slidy, texinfo, textile [*for pdf output, use latex or beamer and -o FILENAME.pdf] 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 -F PROGRAM --filter=PROGRAM --normalize -p --preserve-tabs --tab-stop=NUMBER -s --standalone --template=FILENAME -M KEY[:VALUE] --metadata=KEY[:VALUE] -V KEY[:VALUE] --variable=KEY[:VALUE] -D FORMAT --print-default-template=FORMAT --print-default-data-file=FILE --no-wrap --columns=NUMBER --toc, --table-of-contents --toc-depth=NUMBER --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 --html-q-tags --ascii --reference-links --atx-headers --chapters -N --number-sections --number-offset=NUMBERS --no-tex-ligatures --listings -i --incremental --slide-level=NUMBER --section-divs --default-image-extension=extension --email-obfuscation=none|javascript|references --id-prefix=STRING -T STRING --title-prefix=STRING -c URL --css=URL --reference-odt=FILENAME --reference-docx=FILENAME --epub-stylesheet=FILENAME --epub-cover-image=FILENAME --epub-metadata=FILENAME --epub-embed-font=FILE --epub-chapter-level=NUMBER --latex-engine=PROGRAM --bibliography=FILE --csl=FILE --citation-abbreviations=FILE --natbib --biblatex -m[URL] --latexmathml[=URL], --asciimathml[=URL] --mathml[=URL] --mimetex[=URL] --webtex[=URL] --jsmath[=URL] --mathjax[=URL] --gladtex --dump-args --ignore-args -v --version -h --help
使ってみる
HTML→Markdown
$ pandoc -f html -t markdown -o test.md test.html
■ | 形式 | ファイルパス |
---|---|---|
入力 | html | test.html |
出力 | markdown | test.md |
ソースコード(test.html)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]--> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="generator" content="Asciidoctor 1.5.5"> <title>AsciiDocテスト</title> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"> </head> <body class="article"> <div id="header"> <h1>AsciiDocテスト</h1> </div> <div id="content"> <div id="preamble"> <div class="sectionbody"> <div class="ulist"> <ul> <li> <p>リスト項目1</p> <div class="ulist"> <ul> <li> <p>リスト項目1-1</p> </li> </ul> </div> </li> </ul> </div> <div class="paragraph"> <p><a href="http://asciidoctor.org/">AsciiDoc</a> 参照。</p> </div> <div class="olist arabic"> <ol class="arabic"> <li> <p>手順1</p> </li> <li> <p>手順2</p> <div class="dlist"> <dl> <dt class="hdlist1">AsciiDoc</dt> <dd> <p>軽量マークアップ言語</p> </dd> </dl> </div> </li> </ol> </div> <div class="imageblock"> <div class="content"> <img src="http://placehold.it/350x150" alt="代替テキスト"> </div> </div> </div> </div> <div class="sect1"> <h2 id="_テーブル">テーブル</h2> <div class="sectionbody"> <table class="tableblock frame-all grid-all spread"> <caption class="title">Table 1. テーブルタイトル</caption> <colgroup> <col style="width: 33.3333%;"> <col style="width: 33.3333%;"> <col style="width: 33.3334%;"> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">列1</th> <th class="tableblock halign-left valign-top">列2</th> <th class="tableblock halign-left valign-top">列3</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">値1</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">あああ</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">値2</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">いいい</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">3</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">値3</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">ううう</p></td> </tr> </tbody> </table> <div class="sect2"> <h3 id="_csv">CSV</h3> <table class="tableblock frame-all grid-all spread"> <colgroup> <col style="width: 25%;"> <col style="width: 25%;"> <col style="width: 25%;"> <col style="width: 25%;"> </colgroup> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">3</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">4</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">a</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">b</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">c</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">d</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">A</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">B</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">C</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">D</p></td> </tr> </tbody> </table> </div> <div class="sect2"> <h3 id="_html埋込">HTML埋込</h3> <ruby> <rb>亜米利加</rb> <rp>(</rp> <rt> アメリカ</rt> <rp> )</rp> </ruby> </div> <div class="sect2"> <h3 id="_外部ファイル表示">外部ファイル表示</h3> <div class="listingblock"> <div class="content"> <pre class="highlight"><code class="language-python" data-lang="python">include::test.py</code></pre> </div> </div> </div> </div> </div> </div> <div id="footer"> <div id="footer-text"> Last updated 2017-02-28 09:41:52 JST </div> </div> </body> </html>
出力結果(test.md)
AsciiDocテスト ============== - リスト項目1 - リスト項目1-1 [AsciiDoc](http://asciidoctor.org/) 参照。 1. 手順1 2. 手順2 AsciiDoc : 軽量マークアップ言語 ![代替テキスト](http://placehold.it/350x150) テーブル {#_テーブル} -------- 列1 列2 列3 ----- ----- -------- 1 値1 あああ 2 値2 いいい 3 値3 ううう : Table 1. テーブルタイトル ### CSV {#_csv} --- --- --- --- 1 2 3 4 a b c d A B C D --- --- --- --- ### HTML埋込 {#_html埋込} 亜米利加 ( アメリカ ) ### 外部ファイル表示 {#_外部ファイル表示} ~~~~ {.highlight} include::test.py ~~~~ Last updated 2017-02-28 09:41:52 JST
リストやテーブルなどがいつも使っている形式と違う。はてなブログで使えない。
ドキュメント変換ツールPandoc:ユーザーズガイドを熟読して分かったマニアックな使い方 - Qiita
整形
Pandocの簡単なお作法的な - ITカメラマン忘備録 Inner Journeys: PandocのHTML出力でGFMとカスタムテンプレートを使う
いろいろとパラメータがあるらしい。
コマンド
$ pandoc -f html -t markdown_github+backtick_code_blocks+lists_without_preceding_blankline -o test2.md test.html
- リストの項目間に改行が入る
- コードブロックがPandoc形式になっている
どうしたものか。
Markdown
パラメータ | 説明 |
---|---|
markdown |
Pandoc拡張 |
markdown_strict |
オリジナル |
markdown_phpextra |
PHP Markdwon Extra |
markdown_github |
Github |
これに以下のようなオプションを付与する
オプション
Home · jgm/pandoc Wiki · GitHub
テーブル
- grid_tables
- multiline_tables
- pipe_tables
- simple_tables
リスト
lists_without_preceding_blankline
で無駄な改行を消せるらしいが、反映されない
コードブロック
backtick_code_blocks
ではてなやGitHubと同じ形式のコードブロックにできると思うが、反映されない。
課題
- Pandocで思い通りに整形できない
所感
簡単ではなかった。AsciiDoctor→HTMLのほうが簡単な気がしてきた。どちらも思い通りに使えていないが。