🔀

【裏技!?】PandocでWord↔Markdown↔TeX相互変換する

に公開

ご挨拶

はじめての方ははじめまして、そうでない方はいつもお世話になっております。カカオニブです。
高専2年から使ってたHDDのケーブルが断線して悲しい今日このごろです。Dドラに入れたマイクラがすぐ落ちちゃってなんでだろうって思ったら接触がよわよわでした。。

今回は以前「pandocの記事書く~」ってことを𝕏にて呟いたのを記事にしました。
Pacdocを用いてWordで書いた文章やMarkdown文書をLaTeXに変換する方法をご紹介します。
この記事と前回の記事電気学生のためのVSCode+LaTeX環境構築を組み合わせることで、Word文書の数式を揃えてからLaTeX-PDFにエクスポートする事もできます。

Pandocとは

PandocはHaskellによって記述されたドキュメント変換ソフトウェアのひとつです。
コマンドライン上で動作し、入力に指定したファイルを指定した形式に変換して出力します。
入出力に対応するファイルは主に以下の形式です

  • HTML
  • docxファイル(Microsoft Word)
  • Markdown
  • \LaTeX(texファイル)
  • EPUB
  • CSV
    その他、公式GitHubに掲載のある形式に対応しています。

ダウンロード・インストール

取得

公式GitHubのReleaseページでOS毎に対応したものを選択します。(x.x.xはバージョン名)

  • Windowsの方はこちら
    もしくはpandoc-x.x.x-windows-x86_64.msiを選択します。
  • Macの方はpandoc-x.x.x-arm64-macOS.pkgpandoc-x.x.x-x86_64-macOS.pkgのうち対応するアーキテクチャを選択してください。(Apple Siliconはarm64,Intelはx86_64)
    もしくはbrew install pandocも使用できます。
  • Linuxの方はpandoc-x.x.x-1-amd64.debpandoc-x.x.x-1-arm64.debpandoc-x.x.x-linux-amd64.tar.gzpandoc-x.x.x-linux-arm64.tar.gzのうちOSとアーキテクチャに対応するものを選択してください。
    もしくはsudo apt install pandocsudo yum install pandocも使用できます。

この記事ではWindows11+pandoc 3.6.4(+コマンドプロンプト)を使用しています。
インストーラーが入手できたら実行し、画面内の指示に従ってインストールします。Windows版インストーラーのUIは英語なので適宜Google翻訳等を使用していただいても構いません。
(内容は「利用規約に同意しますか?」と「システムインストールしますか?」程度です)

確認

インストールが完了したらコマンドラインツールを起動します。WindowsではコマンドプロンプトかPowerShell、Unix系(Mac/Linux)ではターミナルを展開します。
コマンドラインをに以下のコマンドを入力してください。

pandoc -v

実行後に

C:\Users\cacaonib>pandoc -v
pandoc 3.6.4
Features: +server +lua
:

のようにバージョン名が表示されればインストールは完了です。
表示されなければPCの再起動を試してみてください。
それでも表示されない場合はもう一度管理者としてインストールを試してみるか、手動でpandocの実行ファイルを環境変数に設定してみてください。

使い方

コマンド

コマンドライン上でpandocコマンドを実行することで動作します。
主要なオプションは以下のとおりです。

  • -s
    Pandocは規定で複数の文書を読み込むため、単一のファイルを変換する際に使用します。
  • -o FILE
    Pandocは規定では標準出力に変換結果を出力するため、このオプションで出力先を指定します。
  • -f FORMAT
    変換元のファイル形式を指定します。
  • -t FORMAT
    変換先のファイル形式を指定します。

基本構文は以下のとおりです。

pandoc -s <変換前のファイルパス> -o <変換先のファイルパス>

例えば、./myfile.docx(Word文書)を./myfile.tex(LaTeX)に変換する場合、

pandoc -s ./myfile.docx -o ./myfile.tex

となります。

-f -tオプションを使用すると明示的に入出力ファイル形式を指定できますが省略可能です。
(拡張子から推定されます。)

pandoc -s -f docx ./myfile.docx -t latex -o ./myfile.tex

チート

Pandocが入っているWindows環境で以下のコマンドをコピペして実行するとマウス操作でPandocに対応した任意のファイルを変換できます。
パソコン難しいよ~って人は使ってみても良いかもしれません。
手元の環境では問題なく動作することが確認できましたが、他人が書いたよくわからないPowerShellコードを実行するのは非常に危険なのでオススメしません。

powershell -c "& {Add-Type -AssemblyName System.Windows.Forms; $ofd = New-Object System.Windows.Forms.OpenFileDialog; $ofd.Filter = 'All Files (*.*)|*.*'; if ($ofd.ShowDialog() -eq 'OK') { $sfd = New-Object System.Windows.Forms.SaveFileDialog; $sfd.Filter = 'LaTeX Files (*.tex)|*.tex|Markdown Files (*.md)|*.md|Microsoft Word Files (*.docx)|*.docx|All Files (*.*)|*.*'; if ($sfd.ShowDialog() -eq 'OK') { pandoc -s -o $sfd.FileName $ofd.FileName } } }"

まとめ

PowerShell むずかしい。

参考サイト

私自身がはじめて導入した際に参考にしたサイトをまとめました。
この場をお借りして各著者のみなさまに御礼申し上げます。

  1. Pandoc User’s Guide 日本語版 — 日本Pandocユーザ会
    https://pandoc-doc-ja.readthedocs.io/ja/latest/users-guide.html
  2. 【レビュー】Markdownテキストから静的なHTMLファイルを生成できる「Pandoc」- 窓の杜
    https://forest.watch.impress.co.jp/docs/review/695829.html

Discussion