内科のメモ帳

ずぼらな覚え書き

ユーザ用ツール

サイト用ツール


apps:pandoc

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 }
  • Onenoteのメモを Obsidian に移植する際によく使った
  • Githubなどで公開されている「一気に変換!」的なプログラムが軒並みエラーを吐いて諦めた結果以下の人力変換を試みる羽目になった
    1. Onenoteのページを1つ1つ人力で .docx にエクスポート(Windows版でしか不可😠)
    2. セクション単位でひとつのフォルダにまとめる
    3. Pandocでそのフォルダを指定して上記出力
    4. それを 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

参考

apps/pandoc.txt · 最終更新: 2024/01/09 by admin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki