Yamamoto's Laboratory
練習
コンパイル等
コンピューター LaTeX コンパイル等

LaTeXコンパイル等コンパイルから各種ファイル作成

LaTeX のソースファイルの様々な処理を経て,pdf ファイルに変換します.ここでは,文書の作成からコンパイル,pdfへの変換までのコマンドを示します.

目次


処理の概要

LaTeX でのドキュメント作成のプロセスは,Microsoft Word に比べ,やや複雑です.図1に,そのプロセスを示します.具体的なステップは,以下の通りです.

  1. お気に入りのテキストエディターを使い,LaTeX のソースファイル (*.tex) を作成します.参照文献が有る場合は,そのデータベースファイル (*.bib) も作成します.この文献データベースは,さまざまなドキュメントで使い回すので,一度作成し,それをアップデートして使います.毎回,最初から作成する必要はありません.
  2. LaTeX のソースファイルをコンパイルし,dvi ファイルを作成します.一回目のコンパイルでは,LaTeX 本文で参照している部分が「?」になります.参照番号を示す補助ファイル (*.aux) が無い状態でコンパイルしたためです.もう一度,コンパイルすると参照箇所は,きちんと反映されます.
  3. 参考文献のデータベースを使う場合は,その処理を行います.処理の結果,参考文献のデータが書かれたファイル (*.bbl) が作成されます.それを反映するために,再度,コンパイルを行います.
  4. 以上で,完全な dvi ファイルが出来上がります.最後に,これを pdf に変換します.
LaTeX の処理プロセス.赤枠が処理のフローチャートで,青枠が関連ファイルを示します.
図1: LaTeX の処理プロセス.赤枠が処理のフローチャートで,青枠が関連ファイルを示します.

文書の作成方法

LaTeX のソースは,普通のテキストエディターで作成します.TeX Live を使っている場合,日本語の文字コードは UTF を指定します.それ以前の LaTeX は EUC-JP でした.これからは,UTF が主流となります.

処理(pdf作成)

コンパイル

LaTeX はマークアップ言語なので,人が見るドキュメントにするためには処理が必要です.LaTeX ソースファイルからドキュメントにする作業をコンパイルと呼びます.日本語の場合,このコンパイルコマンドは「platex」です.使い方は,「platex オプションLaTeXファイル(*.tex)」です.オプションを使うのは滅多になく,文字コードを指定する場合くらいでしょう.オプションは,「platex -help」で表示されます.

ほとんどの場合,以下のようにして,LaTeX のソースファイル (例:hogehoge.tex) をコンパイルします.

$ platex  hogehoge.tex

コンパイルすると,dvi ファイル (hogehoge.dvi) が出来上がります.「xdvi」がインストールされていると,dvi ファイルを表示することができます.今時は,この dvi ファイルを pdf に変換して,ドキュメント化します.

dvi の他にも,以下のファイルが作成されます.aux ファイルには,図や表,式などの番号や様々な情報が書かれています.これらの番号などが書き換えられると,再度コンパイルする必要があります.要するに,aux ファイルが書き換えられた場合,もう一度コンパイルする必要があると言うことです.

拡張子 ファイル内容
*.aux LaTeX がいろいろな番号付けに使う補助ファイル (auxiliary file).
*.dvi LaTeX のタイプセッティング結果が書かれたバイナリーファイル.Device Independent file の略.
*.log LaTeX 処理時のログファイル (log file).
*.toc 目次 (table of contents) を作成するためのファイル

参照文献の処理

参照文献が有る場合,参照文献の処理も必要です.LaTeX のソースファイルをコンパイルすることにより,参照文献のリストが aux ファイルに書かれます.それを元に文献データベースを処理し,bbl ファイルが作成されます.再度コンパイルすることにより,参照文献のリストがアウトプットドキュメント(*.dvi)に反映されます.参照文献ファイルが変わると,文献データベースを処理し,bbl ファイルを作り直さなくてはなりません.

LaTeX のソースファイル(例:hogehoge.tex)のコンパイル結果から,文献データベースを処理するコマンドは,次の通りです.

$ pbibtex hogehoge

文献データベースの処理コマンド「pbibtex」により,以下のファイルが作られます.

拡張子 ファイル内容
*.bbl 参照された参考文献が書かれます.
*.blg BibTeX 処理時のログファイルです.

pdf に変換

最終的に,LaTeX のファイルは pdf にします.そのために,LaTeX のコンパイル作業で出来上がった dvi ファイル(hogehoge.dvi)を dvipdfmx を使い pdf に変換します.具体的なコマンドは,以下の通りです.

$ dvipdfmx hogehoge

設定にもよりますが,通常これでフォントが埋め込まれない pdf ができあがります.フォントを指定して,フォントが埋め込まれた pdf を作成する場合は,次のようにします.

$ dvipdfmx -f ptex-ipa.map hogehoge

dvipdfmx の詳細については,dvipdfmx のページ に書かれています.

pdf ビューワーと印刷

出来上がった pdf ファイルは,適当なビューワーで表示させることができます.Acrobat Reader が有名でしょう.ただし,Acrobat Reader の場合,ファイルを開いた状態ではファイルの編集が不可能です.コンパイル → pdfに変換 → 確認を繰り返す場合,ちょっと不便です.そのような時には,Sumatra PDF が便利です.Linux では,evince が便利です.

印刷は,ビューワーから行います.

スクリプトファイル

LaTeX の処理は結構複雑なので,シェルスクリプトを使っています.Makefile を作る人も多いです.私が使っているシェルスクリプトを以下に示します.「platex -h」でヘルプが表示されます.

LaTeX のためのシェルスクリプト(ソース)

001   #!/bin/bash
002   echo "platex  yamamoto masashi version"
003   
004   eflag="FALSE"
005   cflag="FALSE"
006   dflag="FALSE"
007   pflag="FALSE"
008   
009   platex="/usr/local/texlive/2018/bin/x86_64-linux/platex"
010   
011   while getopts ":ecdp" OPTION
012   do
013       case $OPTION in
014       e) eflag="TRUE"
015           ;;
016       c) cflag="TRUE"
017           ;;
018       d) dflag="TRUE"
019           ;;
020       p) pflag="TRUE"
021           ;;
022       ?) printf "Usage: %s [-e] [-c] [-d] [-p] filename(*.tex)\n" $(basename $0)
023          printf "\t%s: euc\n" "-e"
024          printf "\t%s: complile only\n" "-c"
025          printf "\t%s: make svg by dvisvgm\n" "-d"
026          printf "\t%s: make svg by pdfcrop and pdfcairo\n" "-p"
027           exit 2
028           ;;
029       esac
030   done
031   
032   shift $(($OPTIND - 1))
033   FILE=$*
034   
035   printf "\ttex file: %s\n" $FILE
036   
037   
038   # ==== platex processing =========================
039   
040   if [ "$eflag" = "TRUE" ]
041   then
042       eval ${platex} --kanji=euc $FILE
043       eval ${platex} --kanji=euc $FILE
044   else
045       eval ${platex} $FILE
046       eval ${platex} $FILE
047   fi
048   
049   
050   # ==== make pdf and svg =========================
051   
052   if [ "$cflag" = "TRUE" ]
053   then
054       echo "platex compile only !!"
055   else
056       dvipdfmx -V 7 ${FILE%tex}dvi
057   
058       if [ "$dflag" = "TRUE" ]
059       then
060       dvisvgm --no-fonts -b 10pt -e ${FILE%tex}dvi
061       fi
062   
063       if [ "$pflag" = "TRUE" ]
064       then
065       pdfcrop --margin 10 ${FILE%tex}pdf ${FILE%tex}pdf
066       pdftocairo -svg ${FILE%tex}pdf
067       chmod 644 ${FILE%tex}svg
068       fi
069   
070   fi
071   
072   exit 0

ページ作成情報

参考資料

更新履歴

2006年頃 ページの新規作成
2015年8月9日 TeX Live へ対応するために,全面改正.


no counter