TeXをHTMLに変換する方法(Pandocを使う方法)

TeX

この記事ではPandocを用いてTeXをHTMLに変換する方法を紹介します。Pacdocとは様々なマークアップ言語(組版・文書構造などの情報を含めて記述したテキストファイル)を別の言語に変換する無料のソフトウェアです。WindowsでもMacでも対応しています。またインストールせずにWeb上で実行することも可能です。

※昔はインストーラがWindowsとIntelチップのMacにしか対応しておらず、M1・M2チップのMacではhomebrewを使うしかなかったのですが、M1・M2に対応しているインストーラもできたようです。

ひとまずWeb上で試してみる

Pandocを自分のPCにインストールして使うこともできますが、以下のサイトに行けばWeb上でPandocを試すこともできます。

Try pandoc!

上のサイトの左のテキストボックスにTeXのソースファイルを入力し、from や to と書かれている所のプルダウンからそれぞれ「Latex」と「html」を選択します。あとは細かいオプション等もありますが、あとは「Convert」をクリックするだけです。数式を含んでいる場合は、「Plain math」以外にも「MathJax」「MathML」などを選択すると、自分のウェブサイト環境に合わせた変換が可能で、綺麗に数式を出力することもできると思います。

MathJax や MathML はどちらもWebサイト上で数式を出力する際に用いるライブラリで、htmlなどで数式を書く際に最もよく使われる方法です。MathJaxの場合、数式自体はTeXで 書くときと基本的には同じですが、「$」マークで数式を挟むのではなく「\( ... \)」などで数式を挟むので、このあたりをPacdocで変換してくれます

Pacdocをインストールする

自分のPCにPacdocをインストールして使用することもできます。

まずは以下の公式サイトにアクセス。

Pandoc - index

「installing」タブから「Download the latest installer」をクリックして対応しているインストーラをダウンロードします。対応している最新のインストーラは以下の通りです。
(2024年12月現在。バージョン番号はずれているかもしれません)

  • Windows → pandoc-3.6-windows-x86_64.msi
  • Mac(M1・M2チップ)→ pandoc-3.6-arm64-macOS.pkg
  • Mac(Intelチップ)→ pandoc-3.6-x86_64-macOS.pkg

※ ちなみに「arm64」や「x86_64」はプロセッサのアーキテクチャの種類を表しています。
MacのM1・M2チップはARM社ベースの「arm64」、旧型のMacではインテル社ベースの「x86_64」が使われているので、この辺りから対応しているものが判断できます。

ダウンロードしたインストーラーを起動、流れに沿ってインストールを実行します。

↓Windowsのインストーラ

↓Macのインストーラ

パスを通す(Windowsのみ)

Pandoc はコマンドプロントから実行することを前提としているので、インストールしたらパスを通すことをお勧めします。(Macの場合は不要)

パスを通すとは、コマンドプロント上で「C:Program Files…..Pandoc」のようにパスを指定しなくても、「Pandoc」というプログラム名だけでプログラムを実行できるよう設定することです。もちろん毎回パスを自分で指定して実行することもできるので、この節は省略することもできますが、パスは通しておいたほうが便利です。

パスを通すには「コントロールパネル」から「システムとセキュリティ」→「システム」→「システムの詳細設定」と辿ってシステムのプロパティを開きます。「環境変数」ボタンをクリックすると、環境変数ウィンドウが開きます。

その中のPathと書かれている行をクリックして「編集」ボタンを押します。このとき「ユーザーの環境変数」の欄と「システム環境変数」の欄で両方にPathがありますが、前者はPCにログインしているアカウントのみで有効、後者はどのアカウントからログインしても有効になるように設定できます。

ここに書かれているものが今現在、設定されているパスです。
「新規」ボタンを押して、Pandocの実行ファイル(pandoc.exe)の場所をここに入力します

入力が完了したらOKボタンを押して、全てのウィンドウを閉じます。これでパスの設定は完了です。

pandocの使い方

実際にpandocを動かすには、コマンドプロント(Macならターミナル)を開いて以下のコマンドを実行します。また以下、コマンドプロントのカレントディレクトリに「test.tex」というTeXファイルが入っているという前提で説明します。

test.texファイルをhtmlに変換するときは 「pandoc test.tex」とします。出力ファイルの形式を指定していない場合のデフォルトは html になっています。
出力をファイルとして保存するには 「-o」 オプションを使います。-oの後ろに出力ファイルの名前を記入します。-oオプションはコマンドのどこに入れても同じですが、-oの直後に必ず出力ファイルの名前が来るようにします。

pandoc test.tex    (test.texをhtmlに変換)
pandoc test.tex -o output.html    (test.texをhtmlに変換してoutput.htmlという名前で保存)
pandoc -o output.html test.tex    (test.texをhtmlに変換してoutput.htmlという名前で保存)
pandoc -o test.tex output.html    (間違い。output.htmlを変換元とする書き方)

headとbodyを含むhtmlファイルを生成するには -s または –standaloneオプションを用います。

pandoc -s -o output.html test.tex

MathJaxを使う場合
TeXで数式を使用している場合には、上記の方法のままではエラーが出ることがあります。Web上(html)で数式を出力するには Mathjax や MathML を使って表示することが多いと思いますが、これらを用いた形式にも変換することができます。例えばMathjaxを使う場合には –mathjaxオプションをコマンドに入力します。

pandoc --mathjax test.tex -o output.html

改行位置を指定したいとき(wrapオプション、columnオプション)
出力するソースファイルの改行位置の指定もできます。Wordpress等で記事を書いている場合は、改行が入ったテキストをコードエディタで入力すると自動整形によって勝手に brタグが入ってしまい、表示が崩れることがあります。これを避けるにはwrapオプションを使います。下記のコードをコマンドプロントの命令文に挿入するだけです。

–wrap=auto:改行を自動で入れる。何も指定しないとautoになる
(columnオプションで指定した文字数(デフォルトは72)で改行する)
–wrap=none:改行をしない
–wrap=preserve:元のコードの改行位置を保つ

columnオプション
–columns=数字:改行位置を決める文字数を指定します。

最終的に自分は以下のコマンドに落ち着きました。このwebサイトにtexで書いたノートを載せるときはこれで変換しています。

pandoc --mathjax --wrap=none test.tex -o output.html (数式はmathjax、改行はしない)

参考サイト

他にも様々なオプションがありますので、ユーザーガイドを参照してください。

英語版のユーザーガイド

Pandoc - Pandoc User’s Guide

日本語版のユーザーガイド

Pandoc User’s Guide 日本語版 — 日本Pandocユーザ会

窓の杜の紹介記事

「Pandoc 3.0」が公開 ~さまざまな形式の文書と相互変換できるフリーツール/約5年ぶりのメジャーバージョンアップ
さまざまな形式の文書を相互変換できる「Pandoc」が、1月19日にv3.0へとアップデートされた。2017年10月以来、約5年ぶりのメジャーバージョンアップとなる。

pandoc以外の方法について

pandoc以外にもtexをhtmlに変換する方法はいくつかありますが、数式をカバーできるものは少ないと思います。pandoc以外にも、Web上で変換できるサイトをいくつか試しましたが、数式が入ると出力がとてつもなく複雑で汚いものが殆どです。以下の2つは数式の変換も含め、割とまともそうですが、実際に動くのか試したことはありません。

  • TeX4htを使用する
    使ったことがありませんが、texliveやW32texなどをフルインストールしていれば標準で入っているようです。
  • latex2htmlを使用する
    日本語化なども含めインストールすると多少面倒?らしいです。数式はMathJaxなどを使う形式ではなく画像に変換して貼り付けるようです。WordpressなどではMathJaxを使うことが多いので、個人的にはあまり使い勝手が良くないかも?またpandocの方が圧倒的にオプションが多いので融通が効きやすいのではないかと。

その他にもあまり良くない方法としては、TeXをPDFに変換してからPDFをHTMLに変換する方法が考えられます。「PDF → HTML」の変換ツールは数多くあるのですが、これはTeXからPDFへの出力が複雑だったり、数式が含まれていたりするとHTMLに出力したときに、恐ろしいくらい余計なコードだらけになってしまいます。TeXもHTMLもどちらもマークアップ言語ですので、Pandocなどを用いて、TeXで書かれた文書構造を保った状態で直接変換すべきです。

コメント

タイトルとURLをコピーしました