meta data for this page
このページの翻訳:
- ja
Pandoc
Pandoc とは
- Pandocはさまざまな形式の文書を好きな書式に変換できる強力なツール
- IN: Markdown, HTML, LaTeX, reST, Word, PDF, 各Wiki, EPub など
- OUT: Markdown, HTML, LaTeX, reST, Word, PDF, 各Wiki, Epub など
- Onenote を docx で出力 → Pandoc で Markdown → Obsidian にIn! したり
- Markdown を Dokuwiki にして当サイトのように公開したり
- Markdown で 書いたメモを PDF にしたり
- 自由自在
基本的な使い方
- 予めPandoc公式からソフトをDL & インストールしておく
- コマンドプロンプト等を立ち上げる
- 変換したいファイルがあるディレクトリを指定する
cd \Users\XXX\desktop\YYY\
- これでXXXというユーザーのデスクトップにあるYYYフォルダ内のドキュメントが対象になる
- あとは
$ pandoc
から始める以下のコードを打ち込むだけ.シンプル…!
基本的なコマンド
具体例
$ pandoc -s <input>.docx -t markdown -o <output>.md
- input.dox が markdown 形式の output.md として出力される
codeの意味
-s: スタンドアロン文書を生成する -f: 元の書式を指定する -t: 変換先の書式を指定する -o: 指定ファイルへ出力
-o を指定しない場合デフォルトでは標準出力 stdout に出力される
使用頻度の高い設定
--extract-media=DIR
- ソース文書に含まれる,あるいはソース文書からリンクされている画像やその他のメディアをパス DIR(指定ディレクトリ) に抽出する
- 必要に応じフォルダ作成し,文書内の画像参照を調整し,抽出されたファイルを指すように設定してくれる(すごい!)
- メディアは必要に応じダウンロード,ファイルシステムからの読み込み,バイナリコンテナ(docxなど)からの抽出が行われる.
--wrap=none
- 文字列の折り返し設定.
- auto :デフォルト72文字で折り返す(–columns=XXで指定可)
- none :折り返さない
- preserve: ドキュメントからの折り返しを保持する (ソースに改行がある場合,出力にも残る)
--reference-links
- Markdown または reStructuredText を書き出す際,インラインリンクのかわりに参考文献スタイルのリンクを使用
よく使う入出力先
- docx, html, latex, rtf, pdf, dokuwiki
- Markdwonパターン色々
- commonmark: markdownの事実上の標準仕様
- markdown: Pandoc’s Markdown
- markdownmmd: MultiMarkdown *markdownphpextra: PHP Markdown Extra
- markdown_strict: オリジナルの非拡張 Markdown
- gfm: github-flavored Markdown
個人的な頻用コマンド
docx -> markdown(Win)
ForEach ($result in Get-ChildItem | select Name, BaseName) { pandoc.exe -f docx -t commonmark -i $result.Name -o "$($result.BaseName).md" --wrap=none --reference-links --extract-media }
- Githubなどで公開されている「一気に変換!」的なプログラムが軒並みエラーを吐いて諦めた結果以下の人力変換を試みる羽目になった
- Onenoteのページを1つ1つ人力で .docx にエクスポート(Windows版でしか不可😠)
- セクション単位でひとつのフォルダにまとめる
- Pandocでそのフォルダを指定して上記出力
- それを Obsidian の Vault にコピペ
docx -> markdown(Mac)
for result in $(ls *.docx); do pandoc -f docx -t commonmark -i "$result" -o "$(basename "$result" .docx).md" --wrap=none --reference-links --extract-media=media; done
markdown -> dokuwiki(Mac)
for result in $(ls *.md); do output_file="$(basename "$result" .md).txt" pandoc -f commonmark -t dokuwiki "$result" -o "$output_file" done
docxから直接dokuwiki(Mac)
for result in $(ls *.docx); do pandoc -f docx -t dokuwiki -i "$result" -o "$(basename "$result" .docx).txt" --wrap=none --reference-links --extract-media=media; done
Dokuwiki から Markdown
- dokuwiki形式から pandoc で markdown にすると,リストの入れ子構造が壊れる
- うまく変換できないので,やむなく dokuwiki → htmlを取得 → markdown 変換とする
?do=export_xhtmlbody
を使って curlする1)
$ curl -u <user>:<password> <URL>\?do\=export_xhtmlbody | pandoc -f html -t gfm
listが変なとき
brew install pandoc-citeproc
- pandocの最後に以下のフィルターを追加
--filter pandoc-correct-lists