USB メモリ活用講座
【実践編・TeXworks と upLaTeX】

< 最終更新日: 2018-02-16 >

TeXworks を使うための和文フォント設定

TeXworks では,和文が含まれる原稿を作成するには,和文フォントを埋め込んだ PDF ファイルが出力されるような設定をしなければなりません. 具体的には,次の 2 つを行わなければなりません:

1 番目については,まずフォントインストーラー SAKURA のポータブル化で解説しているフォントのライセンスについての項をお読みください. 以下では IPA フォントの項に従って IPAex 明朝と IPAex ゴシックが USB ドライブ (U:) の \Resource\fonts\IPAfont 以下にインストールされているものとします.

2 番目について,2017 年 6 月 25 日現在の dvipdmfx では,生成する PDF ファイルに IPA フォント (IPAex 明朝/IPAex ゴシック) を埋め込む設定がデフォルトとなっています. そこで,dvipdfmx が USB ドライブ中の IPAex明朝/IPAex ゴシックを見つけられるように,設定ファイルを調整すればよいでしょう.

  1. USB ドライブにインストールした W32TeX が古いものであれば,アップデートを行います.
  2. Ghostscript&GSview のポータブル化の IPAFont の利用dviout for Windows のポータブル化の設定などを参考に,TeX のコンパイラを呼び出すコマンドプロンプトに環境変数 GS_FONTPATH を加え,Ghostscript で IPAex フォントを利用した表示ができるようにします.
  3. W32TeX をインストールしたフォルダ (U:\usr\w32tex) のサブフォルダ share\texmf-local に web2c という名前のフォルダを作成します.
  4. 上で作成したフォルダ (U:\usr\w32tex\share\texmf-local\web2c) に,次の 2 行からなるテキストファイル texmf.cnf を作成します※1
    TTFONTS = .;$TEXMF/fonts/{truetype,opentype}//;$OSFONTDIR;$GS_FONTPATH//
    OPENTYPEFONTS = .;$TEXMF/fonts/{truetype,opentype}//;$OSFONTDIR;$GS_FONTPATH//
    

和文フォントの扱いについて,より詳しい (雑多な) ことを dvipdfmx に関する補足に書いておきます.

TeXworks の動作確認

それでは動作確認をしてみましょう. ここではごく簡単な手順のみ紹介し,詳しい操作については省略します.

  1. W32TeX 用のコマンドプロンプトウィンドウを開き,次のようにタイプします ([Enter] は Enter キーの入力を意味します)※2
    texworks[Enter]
    
  2. 図1のように TeXworks の編集ウィンドウが開かれたら,TeX ソース文書をタイプ入力します. 「texworks は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」といった類のメッセージが表示された場合は, W32TeX 用の環境変数が正しく設定されているか確認してください. 図1のように,編集ウィンドウでは TeX のキーワード (コマンド名や環境名) が色付けされ,見分けやすくなっています.
    図1・TeXworks の編集ウィンドウ
    図1・TeXworks の編集ウィンドウ
  3. TeX ソース文書をタイプし終えたら,[ファイル]-[保存] などからファイル名を付けて保存します.
  4. ツールバーの左端にある緑色のタイプセットボタンの右隣が「pdfpLaTeX」となっていることを確認し,タイプセットボタンをクリックします (ファイル名を付けて保存せずにタイプセットボタンを押した場合は,ファイルを保存するためのダイアログボックスが開かれます). コンパイルが実行され,エラーが発生すると編集ウィンドウは図2のように変わります. この場合は,ツールバーの左端の赤い Abort typesetting ボタンをクリックするか,ウィンドウ下段の入力ボックス (Console bar) に x とタイプして Enter キーを押すとコンパイルが中断されますので,ログの表示などを参考にエラーの要因を取り除いてください.
    図2・エラー発生時の編集ウィンドウ
    図2・エラー発生時の編集ウィンドウ
  5. コンパイルでエラーが発生しなければ編集ウィンドウの隣に PDF として出力された文書がプレビュー表示されます. 図3のようであれば正常ですが,図4のように和文が抜けている場合には,TeXworks を使うための和文フォント設定に失敗していますので,誤りがないかよく確認して問題を修正してください.
    図3・TeXworks のプレビューウィンドウ (正常)
    図3・TeXworks のプレビューウィンドウ (正常)
    図4・TeXworks のプレビューウィンドウ (和文フォント埋め込みに失敗)
    図4・TeXworks のプレビューウィンドウ (和文フォント埋め込みに失敗)

TeXworks には SyncTeX 機能が実装されており,編集ウィンドウとプレビューウィンドウの間で同期処理が行われますので,次のようなことが可能になっているはずです:

ほかにも TeXworks には TeX/LaTeX のキーワード入力を補完する機能があります. 例えば,番号付きリスト環境 (enumerate) を入力したいときには,「\begin{en」くらいまでタイプしたところで [Tab] キーをタイプすると,次のように補完してくれるはずです:

\begin{enumerate}
\item

\end{enumerate}

複数の候補がある場合には [Tab] キーを連続してタイプすると,順次候補が表示されていきます. コマンドや環境名の正しい綴りを覚えきれないという初心者の方や,キー入力を省力化したいというユーザにとっては便利な機能です.

そのほかの TeXworks の使用方法については,TeXworks のメニューバーから [ヘルプ]-[A short manual for TeXworks] とたどると表示される HTML 形式のマニュアル (英文) などを参照してください.

警告: 次の作業は,くれぐれも自己責任でお願いします. TeXworks のヘルプファイルには英語版の他にフランス語版が含まれています. フランス語版は不要という方は,U:\usr\w32tex\share\texworks\texworks-help\texworks-manual の fr フォルダ以下を削除することで約 3.6MB のアキ容量を増やすことができます.

upTeX/upLaTeX の利用法

W32TeX の pLaTeX コンパイラ (platex.exe) は,Shift_JIS,JIS,EUC,UTF-8 の文字コードに対応しており,コンパイル時に自動判別する機能も実装されています. しかし,pLaTeX では UTF-8 を完全に取り扱えるわけではなく,従来の文字コードと同様の制約があります.

従来からパーソナルコンピュータで標準的に利用されてきた Shift_JIS コードでは○で囲んだ数字や,いわゆる全角文字のローマ数字などが機種依存文字(環境依存文字) と呼ばれていることはご存じのことと思います. これは,Windows でこれらの文字に割り当てられている文字コード領域に,他の OS では別の文字が格納され,統一されていないためにインターネットの情報交換で利用すると文字が抜け落ちたり,文字化けが発生する可能性があるためです. pLaTeX でもソースコードを Shift JIS で入力する場合に機種依存文字を使うと,コンパイルエラーは発生しなくても,dvipdfm(x) で PDF に変換すると期待通りの出力は得られませんでした.

一方,全世界共通の文字セットを目指して策定された Unicode (UTF-8) に含まれる○囲みの数字などには,もはや機種依存性はないはずです. しかし TeXworks (UTF-8 コード) でこれらの文字を使って pLaTeX ソースコードを入力し,タイプセット (platex → dvipdfmx) を行って PDF に変換すると,やはり期待通りの出力が得られません. これは,pLaTeX や dvipdfm(x) が内部処理を UTF-8 で行っているわけではないことが原因です.

W32TeX の配布ファイルには,田中琢爾氏が開発した,内部処理を Unicode で行う upTeX とその関連ファイルをまとめたパッケージ uptex-w32.tar.xz が含まれています. このパッケージを利用すれば,Unicode 本来の文字セットを使った文書作成が可能になります. upTeX について,より詳しくは W32TeX をインストールしたフォルダ (U:\usr\w32tex) のサブフォルダ share\texmf-dist\doc\uptex\base にある 00uptex_doc_jis.txt などを参照してください.

ここでは,TeXworks から内部処理が Unicode の upLaTeX および dvipdfmx でタイプセットを行うための手順を解説します.

  1. uptex-w32.tar.xz をインストールします (W32TeX のポータブル化の解説通りに作業した場合には,インストール済みのはずです).
  2. W32TeX をインストールしたフォルダ (U:\usr\w32tex) のサブフォルダ bin にあるバッチファイル pdfplatex.bat を updfplatex.bat という名前でコピーし,次のように編集します (2 行目の先頭に u を加えるだけです).
    @echo off
    uplatex -synctex=1 -jobname="%~n1" -kanji=utf8 -guess-input-enc "%1" && dvipdfmx "%~n1"
    
  3. TeXworks を起動し,メニューバーから [編集]-[設定] をクリックします. TeXworks の設定ダイアログボックスが表示されたら,「タイプセット」タグをクリックします (図5).
    図5・TeXworks の設定ダイアログボックス
    図5・TeXworks の設定ダイアログボックス
  4. 図5 の「タイプセットの方法」の右下にある「+」ボタンをクリックします.
    図6・タイプセットの方法を設定する
    図6・タイプセットの方法を設定する
  5. 図6の「タイプセットの方法を設定する」ダイアログボックスが表示されたら,次のように設定を行ってから [OK] をクリックします.
    • 名前: updfpLaTeX と記入します.
    • プログラム: updfplatex.bat と記入します.
    • 引数: 右下の「+」ボタンをクリックすると「新しい引数」という項目が追加されるので,$fullname と書き換えます.
  6. 図5のダイアログボックスに戻ったら,「タイプセットの方法」の右側にある ↑ ボタンを使って,updfpLaTeX をリストの適当な場所に移動させてから [OK] ボタンをクリックします.
  7. 図1の編集ウィンドウで,ツールバーの左端にある緑色のタイプセットボタンの右隣を「updfpLaTeX」に変更します.
  8. upLaTeX のソースファイルを編集します. ドキュメントクラスの宣言を次のどちらかにしなければならないということ以外は,従来の pLaTeX と同じように入力すればよいでしょう. ○囲みの数字などもそのまま入力可能です.
    • 従来の jarticle 相当の文書を作成する場合には,ujarticle を指定します:
      \documentclass{ujarticle}
      
    • 奥村先生作成の jsarticle 相当の文書を作成する場合には,uplatex オプションを加えます:
      \documentclass[uplatex]{jsarticle}
      

入力可能な文字 (記号類) が増えることによって利便性は向上すると思いますが,ぜひ TeX 本来の美しい出力が損なわれないように注意してください. たとえばローマ数字は,いわゆる全角文字 1 文字で入力するよりは,直接入力可能なアルファベット (I, V, X など) を組み合わせた方がよいでしょう. 長さや面積の単位も同様です (平方センチメートルを cm$^2$ とタイプするのは面倒に感じるかもしれませんが).

upLaTeX に関するより詳しい情報を知りたい方は,ZR (Takayuki YATO) 氏の「upLaTeX を使おう[電脳世界の奥底にて]」を参照することをお勧めします.

nkf による文字コード変換

nkf は文字コード変換を行うための UNIX 系に由来するコマンドラインツールで,web2c-w32.tar.xz に含まれています. JIS,Shift_JIS,EUC などの従来から利用されてきた文字コードばかりでなく,Unicode (UTF-8,UTF-16,UTF-32) に対応しています. ここでは,以前に Shift_JIS コードなどで作成した TeX ソースファイルを TeXworks で編集可能な UTF-8 に変換する手順を簡単に説明します.

変換元のファイルを src.tex,変換先のファイル名を dest.tex とします. TeX のコンパイラが呼び出せるよう環境変数が設定されたコマンドプロンプトを開き,次のように入力します ([Enter] は Enter キーの入力を意味します).

nkf -w src.tex > dest.tex[Enter]

このコマンドの動作を少し詳しく解説してみます:

  1. nkf は変換元の src.tex の文字コードを自動判定します.
  2. nkf は判定の結果に基づいて src.tex を読み込み,-w オプションの指定に従って BOM (Byte Order Mark)無しの UTF-8 (UTF-8N) へ変換して標準出力へと出力します. BOM 付きの UTF-8 にしたい場合は,オプションを -w8 とします (TeraPad の補足・文字コードについて を参照).
  3. リダイレクションによって標準出力の内容がファイル dest.tex に書き出されます. 事前に dest.tex が無ければ新規作成されますが,すでに存在していた場合には上書きされます.

UTF-8 に変換されたファイル (dest.tex) は TeXworks,メモ帳,TeraPad などの UTF-8 に対応したテキストエディタで編集することが可能ですが,Windows のコマンドプロンプトでは,その内容を正しく表示させることができません (たとえば次のようにして type コマンドで表示させると,和文は文字が化けて表示されるはずです).

type dest.tex

コマンドプロンプトで内容を表示させたい場合は,nkf で Shift_JIS に変換すればよいでしょう:

nkf -s dest.tex

nkf の使用法は,次のようにすれば表示させることができます:

nkf --help [Enter]

nkf をキーワードにインターネット検索を行えば,より完全かつ詳細な解説が見つかるはずです. また,コマンドプロンプトでの操作がどうしても苦手という方は,TeraPad による文字コード変換を利用して,UTF-8N に変換してもよいでしょう.

dvipdfmx に関する補足

dvipdfmx は起動時のオプション指定 (-f) によって,フォント指定のマップファイルを切り替えることが可能です. usr\w32tex\share\texmf-dist\fonts\map\dvipdfmx\base には,25 個のプリセット済みのマップファイルが含まれていますが,とりあえずは次の 3 つを覚えておくとトラブルシュート等で役に立つと思われます (filename は処理対象のファイル名):

dvipdfmx -f noembed filename
和文フォントを埋め込まない PDF ファイルを生成します.
dvipdfmx -f ipaex filename
IPAex 明朝と IPAex ゴシックを埋め込んだ PDF ファイルを生成します.
dvipdfmx -f msmingoth filename
Windows 標準の MS 明朝と MS ゴシックを埋め込んだ PDF ファイルを生成します.

より詳しくは usr\w32tex\share\texmf-dist\doc\dvipdfmx\base フォルダにある DVIPDFM-W32.txt の「日本語マップファイルの選択」で紹介されています※3

ところで,dvipdfmx の処理中に次のような警告 (warning) メッセージが 5 行ほど表示されていると思います.

dvipdfmx:warning: Could not open SFD file: XXXXX

明朝体とゴシック体を使うごく一般的な和文の TeX 文書を作成しているのであれば,目的の PDF ファイルは正しく生成されているはずですので,警告メッセージは気にしなくても大丈夫です. 警告が表示されるのはどうにも気持ちが悪いという方は,usr\w32tex\share\texmf-dist\fonts\map\dvipdfmx\base にある kanjix.map をテキストエディタで開き,以下を参考に 5 箇所ほどコメントアウト (先頭に % を挿入) すればよいでしょう※3

%msmin@Unicode@    UniJIS-UTF16-H msmincho.ttc%  (191行目あたり,umsパッケージ関連)
%msgoth@Unicode@   UniJIS-UTF16-H msgothic.ttc%  (192行目あたり,umsパッケージ関連)
%bkai@Big5@  ETen-B5-H  bkai00mp%  (440行目あたり,中国語関連)
%bsmi@Big5@  ETen-B5-H  bsmi00lp%  (441行目あたり,中国語関連)
%cyberb@Unicode@ unicode cyberbit%  (464行目あたり,Bitstream Cyberbit関連)

あるいは,上記の kanjix.map を usr\w32tex\share\texmf-local\fonts\map\dvipdfmx に (フォルダが無ければ作成したうえで) コピーしてから編集する方が,W32TeX のアップデートで上書きされる危険性がないのでより安全です.