このコンテンツは、"歴史遺産"を戯れに復活させてみただけのものです。
今となっては、何ら実用性はありません。リンクなどもほとんど機能していないでしょう。
もし、WinShellなどとても古い環境をどうしても使わなければならないなどの事情があれば、
多少は参考になるかもしれません。
2018.01.30

12.付録1 はぢめてのdvipdfmx

12-1.電子文書化するということ

 ここからは、「レポート作成のための TeX」から一歩先に進んで、TeX を活用した情報発信のかたちについて紹介していきたいと思います。こんにちでは、インターネットの普及によって個人が気軽に情報を発信することが可能になりました。研究者が自分の研究成果を公開したり、作家(風な方々も含む)がオリジナルの作品をアップロードすることも一般的になりました。しかしいっぽうで、Web 上での標準的な文書形式である HTML では表現力に限界があります。例えば、漢文であるとか多言語混在文書は表現しきれません。これまで、このようなテキストは画像として貼りこまれることがほとんどでした。しかし画像の解像度やファイルサイズの問題で、満足いくものができませんでした。日本語の表現形式として一 般的な縦書きも HTML で書くには相当の技量と苦労が必要になります。また、仮に HTML で表現しきれたとしても、それを日本語、あるいは各国語フォントのない環境で閲覧した場合、表示されるのはただの文字化けした怪文書です。Word などのアプリケーションで作成したファイルについても、そのアプリケーションがなければ閲覧することはできませんし、Office については同じアプリケーションでもバージョンによって開けたり開けなかったりする、という素敵なことも起こります。

 そこで注目される(?)のが LaTeX と PDF の組み合わせです。LaTeX の高い組版能力と、PDF の正確な文書再現性を活用し、どこの、どんなコンピュータでも作者の意図した通りの文書を見てもらうことが可能になります。また PDF は文書ファイルなので、検索エンジンなどのデータベースにも内容が反映され、ユーザが探している情報に容易に辿り着けるようになります。このページでは、LaTeX の出力を PDF ファイルに変換する DVIPDFM(x) について紹介します。なお、PDF という形式とその利点については Adobe 社のページで詳しく宣伝(^^;)されています。

12-2.DVIPDFM(x)について

 DVIPDFM(x) は、dvi ファイルを PDF 形式に変換するプログラムです。もともとは英語の dvi ファイルのみに対応していた dvipdfm というプログラムが、日本語対応パッチが当てられたもの→CJK(日中韓)対応 dvipdfm と発展し、さらに拡張された(eXtended)ものです。なお、このページでは以後 DVIPDFM(x) を dvipdfmx と表記します。

12-3.dvipdfmxのインストール

 dvipdfmx は最近の TeX 配布パッケージに標準で含まれています。少なくともここ一年ほどの間に TeX を新規にインストールしたのであれば、特に何の設定もせずに使用できるはずです。なお、旧版の「美文書」に付属する CD-ROM からインストールした TeX には、dvipdfmx は含まれていませんので、これを機会に最新の TeX パッケージをインストールされたほうがよいと思います。ただし、dvipdfmx だけを持ってきて上書きしても設定ファイルなどの不整合から正しく動作しないことが多いので、アップデートされる場合には一切合財を更新したほうがよいでしょう。余談ですが、TeX のアップデートをおこなったあとはディスクのデフラグをしたほうがよいと思います。TeX パッケージはファイル数が多いので、すぐにディスクが赤く(デフラグソフト上での見え)なってしまいます。

12-4.まずは実践、dvipdfmxを使ってみよう

 dvipdfmx の使い方はとても簡単です。なお、“dvi”pdfmx ですから、先に TeX ソースをコンパイルして dvi ファイルを作っておかなければいけません。dvi ファイルが出来上がったら、コマンドプロンプトからそれらのファイルがあるディレクトリに移動します。この時、あんまり深いディレクトリで作業をしていると、移動が面倒です。筆者は窓の手の[フォルダを右クリック→プロンプトを開く]機能やプロンプトでの補完入力機能を使用して、多少なりとも楽ができるようにしています。移動したら、そこでただ

$ dvipdfmx hoge

とするだけです。hoge は変換元のファイル名です。拡張子(.dvi)は不要です。これでディレクトリの中に hoge.pdf というファイルができているはずです。あとはそれをダブルクリックすればAdobe Reader が起動して、PDF ファイルが開きます。このファイルを Web サーバにアップロードするだけで、あるいはメディアに入れて持ち運ぶだけで、あなたの作った TeX 文書が世界中のどこのどんなコンピュータでも閲覧できます。なお、コマンドラインでの操作がわけわからん、という方は WinShell からクリックで dvipdfmx を起動するように設定すればよいでしょう(参考)。ただし、これだけではただ dvi ファイルを PDF に変換しただけで、PDF という電子文書フォーマットの持つ高い性能を活かしきれていません。そこで、ここからはよりアクセシビリティ(?)に優れた文書を作れるように、フォント関連の設定や dvipdfmx のオプションについて解説します。

12-5.より細かい設定をおこなう

dvipdfmx.cfgの設定

 インストールしたばかりのデフォルトの状態の dvipdfmx は、図として取り込んだ EPS ファイルの中に日本語が含まれていると、それらを PDF ファイル中に埋め込もうとします。これではファイルサイズが大きくなってしまったり、EPS ファイルを作る際の設定によっては Type3 のビットマップフォントになってしまいます。本文と異なるフォントを使用していなければ、ghostscript が和文フォントを埋め込まないように設定をおこなう必要があります。設定方法は、(ふつうにインストールした場合)C:\usr\local\share\texmf\dvipdfm\config にある dvipdfmx.cfg というファイルを一行編集するだけです。dvipdfmx.cfg ファイルをテキストエディタ(メモ帳では力不足かもしれません)で開いたら、17行目近辺の、下の文字列に似た記述があるところに移動し、その行を % でコメントアウトします。文字列は長いですが、改行なしの一行になっているはずなので、% はひとつで充分です。コメントアウトしたら、下の文字列をコピーして、同じ場所に[貼り付け]ます。なお、下の文字列もオリジナルと同様に一行になっているはずですが、もし貼り付けた時にそうなっていなければ、ご自分で適宜、改行を削除してください。あるいは、HTMLソースを表示して、そちらからコピーペーストするという手もあります。その際は、各オプションの間にあるスペースまで削除しないようにしてください。

D "gswin32c -q -dSAFER -dNOPAUSE -dBATCH -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 -dAutoFilterGrayImages=false -dAutoFilterColorImages=false -dGrayImageFilter=/FlateEncode -dColorImageFilter=/FlateEncode -dUseFlateCompression=true -sOutputFile=%o -c .setpdfwrite '<</NeverEmbed [/Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique /Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic /Symbol /ZapfDingbats /Ryumin-Light /GothicBBB-Medium] >> setdistillerparams' -f %i -c quit"

CMapファイルのインストール

 dvipdfmx.cfg を書き換えたら、次に CMap ファイルをインストールします。CMap とは“Character Map”のことで、文字コード表のようなものです。たぶん。まず、C:\gs\gs7.07\Resource というフォルダに新たに CMap というフォルダを作ります。それから、そのフォルダの中に C:\usr\local\share\texmf\dvipdfm\CMap フォルダの中身をコピーして[貼り付け]ます。ここで注意しないといけないのは、ドラッグアンドドロップで移動させてはいけないということです。つまり、C:\usr...\CMap とC:\gs...\CMap の両方に同じファイルが存在するようにしてください。ファイルをコピーしたら、さらに追加の CMap ファイルをインストールします。Ring Server の text/TeX/ptex-win32/gs/ から acro5-cmaps-2001.zipadobe-cmaps-200204.zip をダウンロードします。それらの ZIP ファイルを C:\gs...\CMap に移動させて展開すると、上書きするかどうか聞かれるので[はい]と答えます。CMap ファイルをインストールしたら、今度はそれらのファイルが ghostscript に見えるように設定します。

gs_res.psおよびCIDFnmapの編集

gs_res.psの編集

 はじめに C:\gs\gs7.07\lib\gs_res.ps というファイルを編集します。“.ps”という拡張子がついていますが、これは ghostscript の設定ファイルなので、安易にダブルクリックすると Ghostview が起動してしまい、エラーが出てしまいます。必ず、テキストエディタで開いてください。ファイルを開いたら、250行目近辺の下のような文字列が記述されている箇所に移動します。

/FontResourceDir (c:/gs/gs7.07/Resource/Font/) readonly .forcedef % pssys'params is r-o
/GenericResourceDir (c:/gs/gs7.07/Resource/) readonly .forcedef % pssys'params is r-o
/GenericResourcePathSep (/) readonly .forcedef % pssys'params is r-o

オリジナルのファイルは Resource フォルダの場所が C:\Resource となっているはずですが、これを実際の場所にあわせて上のように書き換えます。

CIDFnmapの編集

 次に、同じ lib フォルダにある CIDFnmap ファイルを編集します。いくつか同じ名前のファイルがありますが、編集するのは拡張子なしの CIDFnmap ファイルです。テキストエディタで開いたら、ず〜っと下、最下行の少し上まで移動します。移動したら、コメントアウトされていない Ryumin-Light フォントの設定を以下のように書き換えます。

/Ryumin-Light(msmincho.ttc) 1 ;
/GothicBBB-Medium(msgothic.ttc) 1 ;

 これで、表示する時には MS 明朝と MS ゴシックを用い、PDF 変換時にはそれらを埋め込まない設定が完了しました。なお、7節でも触れていますが、Windows の PS プリンタドライバから EPS ファイルを作る際には、[TrueType フォントダウンロードオプション]は[アウトライン]にしておくとよいでしょう。さて、次はより美しい出力を得るための dvipdfmx のオプションについて説明します。

12-6.dvipdfmxのオプション

 dvipdfmx には出力結果を調整する様々なオプションがあります。オプションを活用することでより美しい文書出力が可能になります。オプションの一覧は、コマンドプロンプトから dvipdfmx -h とすると出力されます。ここでは、それらのオプションを筆者の拙い注釈付きで掲載します。

This is dvipdfmx-20040503(cvs) by the DVIPDFMx project team,
an extended version of dvipdfm-0.13.2c developed by Mark A. Wicks.
% dvipdfmx のバージョン情報

Copyright (C) 2002-2004 by the DVIPDFMx project team
% 著作権者情報

This is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
% ライセンスについて

Usage: dvipdfmx [options] dvifile

-c              Ignore color specials (for B&W printing)
% color special を無視する(白黒印刷向け)。

-f filename     Set font map file name
% フォントマップファイル filename.map を読み込んで埋め込み/非埋め込み
% の設定を参照する(基本14書体を埋め込む→dlbase14.map)。

-o filename     Set output file name [dvifile.pdf]
% 出力する PDF ファイルの名前を指定する。これを付けなければ、出力ファ
% イル名は変換元 dvi ファイルと同じになる。

-O number       Set maximum depth of open bookmark items [0]
% しおりに出力する見出しレベルの深さを設定する。デフォルトは0(最上位
% の見出しのみ)。

-E              Expand outlines if number in -O number is positive
% -O オプションで指定された値が正であれば、PDF ファイルオープン時に下
% 位レベルの見出しも展開する。

-l              Landscape mode
% 用紙を横置きで出力する。

-m number       Set additional magnification [1.0]
% 拡縮倍率を指定する。

-p papersize    Set papersize [a4]
% 用紙サイズを指定する。デフォルトは A4。サポートしている用紙サイズは
% letter,note,legal,executive,halfletter,halfexecutive,11x17,statement,
% folio,quatro,10x14,ledger,tabloid,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,
% b0,b1,b2,b3,b4,b5,b6,b5var,isob0,isob1,isob2,isob3,isob4,isob5,c5,
% DL,Comm10,Monarch,archE,archD,archC,archB,archA,flsa,flse,csheet,
% dsheet,esheet となっている。

-vh             Print usage with list of available paper formats
% dvipdfmx のオプション(この画面)をサポートしている用紙サイズととも
% に出力する。


-r resolution   Set resolution (in DPI) for raster fonts [600]
% 解像度を指定する。デフォルトは600dpi。resolution に値を代入する。

-s pages        Select page ranges (-)
% 出力するページを指定する。1-7のように指定する。1-7,9-11というよう
% な指定も可能。

-x dimension    Set horizontal offset [1.0in]
% 横方向のオフセット(ずらし)を指定する。デフォルトは1インチ。

-y dimension    Set vertical offset [1.0in]
% 縦方向のオフセットを指定する。デフォルトは1インチ。

-z number       Set zlib compression level (0-9) [9]
% ファイルの圧縮レベルを指定する。デフォルトで最高(9)になっている。

-d number       Set PDF decimal digits (0-5) [2]
% 10進数での桁数を指定する。デフォルトは2。桁数を大きくすれば、より精
% 細な線が描画できる。

-v              Be verbose
% エラーやログを詳細に出力する。

-vv             Be more verbose
% エラーやログをより詳細に出力する。

-S              Enable PDF encryption
% PDF の暗号化を可能にする。後述のオプションも同時に指定する必要がある。
% また、パスワード保護を設定することもできる。

-K number       Key bits for PDF encryption (40 or 128) [40]
% 暗号化の際のビット数を指定する。デフォルトは 40bit。128bit のほうが
% よりセキュリティは強固である。

-P number       Permission flag for PDF encryption [0x003c]
                See dvipdfmx.cfg
% 暗号化による閲覧者の動作許可(印刷可能かどうかなど)を指定する。
% デフォルトは 0x003c(全て許可)。詳細は dvipdfmx.cfg を参照のこと。

-V version      PDF version (3, 4 or 5)
% PDF ファイルのバージョンを指定する。デフォルトは4。バージョン5を指定
% すると古い Acrobat Reader では参照できないことがある。

-j filename     Specify a file for pdf document preferences
% PDF ファイルの体裁を指定する外部ファイルを読み込む。

-M              mps to pdf mode
% METAPOST 出力を PDF に変換する際に指定する(?)

All dimensions entered on the command line are "true" TeX dimensions.
Argument of "-s" lists physical page ranges separated by commas,
e.g., "-s 1-3,5-6"
Papersize is specified by a paper format (e.g., "a4")
or by w<unit>,h<unit> (e.g., "20cm,30cm").
Please type "dvipdfmx -vh" to see the list of available paper formats.

12-7.hyperrefとしおりについて

 hyperref パッケージは、TeX 文書(DVI、PDF など)に HTML と同じハイパーリンク機能を加えるためのマクロです。この機能を活用することで、印刷物には真似できない、例えば引用した論文へのジャンプなども可能になります。もちろん、対象となる文書もよくできた電子文書である必要はありますが。hyperref には、とてもたくさんの機能があるのですが、ここではごく基本的なリンクと、PDF のしおり作成について紹介します。

hyperrefの使い方

 hyperref パッケージの基本的な使い方は、プリアンブルに \usepackage{hyperref} と書き、ソース中実際にハイパーリンクを設定したい箇所に

詳しくは、\href{http://somewhere.com/~someone/something.html}{こちら}を参照のこと。

というように記述します。これをコンパイルし、ハイパーリンクに対応した dviware(dviout、dvipdfmx など)で表示させると、

hypertex
dvi ファイルでのハイパーリンク

上図のようになります。ちなみに、文中でも URL を表記したい場合、そのまま http://somewhere.com/~someone/something.html#anchor と書くと、~(チルダ)や # が LaTeX のコマンドと解釈されてエラーになるので、 \url{http://somewhere.com/~someone/} とします(下図)。なお、ハイパーリンクに関する dviware 側の設定は、基本的にデフォルトのままでよいのですが、何かカスタマイズしたい場合は HyperTeX の入手と設定方法を参考に、dviout のパラメータを変更するか、これから述べる hyperref のオプションで設定します。

use url command
\url での表示

hyperrefのオプションについて

 hyperref パッケージには、先述したようにたくさんの機能、オプションがあるのですが、ここではリンクの色を指定する、というような基本的なオプションについて解説します。もしヒマがあれば、オフィシャルなマニュアルのほうが英語とはいえ簡潔にまとまっているので、そちらを参照してください。なお、hyperref のオプションは基本的に string=setting という形式で指定します。

ドライバを指定する

 dvi ドライバ(出力先)を指定するオプションは、\usepackage[ドライバ]{hyperref}の形式で指定します。最近は、dvi ファイルそのまま、あるいは Postscript 形式で配布することは少なくなってきたので、dvipdfm(x) 用に最適化されたドライバを \usepackage[dvipdfm]{hyperref} と指定することが一般的です。

ハイパーリンクの色を指定する

 hyperref パッケージでは、デフォルトではハイパーリンクにそれとわかる色をつけるようにはなっていません。これを有効にするには、colorlinks オプションを true に指定する必要があります(デフォルトは false)。つまり、

\usepackage[dvipdfm,colorlinks=true]{hyperref}

とします。これで、ハイパーリンクを設定したテキストに Web ページのように色がつきます。なお、PDF に変換し、Adobe Reader で表示した場合、colorlinks オプションを指定しない場合でも、ハイパーリンク文字列をボックスで囲んで、リンクであるとわかるようになっています。ところで、colorlinks を有効にした場合の hyperref のデフォルトのリンク色はです。これを、一般的な Web(ブラウザやスタイルシートの設定によりますが)のようににするには、さらに linkcolor オプションを指定します。

\usepackage[dvipdfm,colorlinks=true,linkcolor=blue]{hyperref}

とすると、リンク文字列が青くなります。ここで指定できる色は、TeX の color パッケージに依存しています。LaTeX color 編を参考にしてください。hyperref では、URL 以外にも、本文中のアンカー、文献の参照、ローカルファイルへのリンク、ページ番号などを、それぞれ個別に色指定できます。特に区別せず、一切合財リンクを青に統一するには、

\usepackage[dvipdfm,%
colorlinks=true,%
linkcolor=blue,%
citecolor=blue,%
filecolor=blue,%
pagecolor=blue,%
urlcolor=blue%
]{hyperref}

とします。

PDFのしおりについて

 さて、ここまでですでに、電子文書としてそこそこな出来のものが作れるようになったと思いますが、さらに accessible にするための工夫として、PDF の“しおり”機能を活用しましょう。しおりとは、例えばフレーム構造で、片側に常にメニュー画面が表示される Web ページのように、各セクションへのリンクをまとめたものです。これは、オプションを加えるだけで簡単に作ることができます。

\usepackage[dvipdfm,%
bookmarks=true,%
bookmarksnumbered=true,%
]{hyperref}

これで、PDF を Adobe Reader で表示した時に、左側にしおりが表示されると思います。しおりの内容は、\section などの見出しで、デフォルトでは最上位の見出し(jsarticle なら section)のみ表示されます。これを、subsection、subsubsection まで最初から表示させたい場合は、dvipdfmx のオプションで

$ dvipdfmx -O -E 2 filename.dvi

というようにします。ただし、日本語を含む文字列は、(何も設定せずに)しおりにすると化けてしまいます。これを防ぐには、ソースファイルの先頭に

\AtBeginDvi{\special{pdf:tounicode 90ms-RKSJ-UCS2}}%SJIS

というコマンドを挿入します。これは、shift_jis で書かれた文字列を、unicode に変換するものです(たぶん)。 Linux などの euc 環境では、

\AtBeginDvi{\special{pdf:tounicode EUC-UCS2}} % EUC

とするようです。

PDFの製作者情報について

 Adobe Reader で PDF を表示すると、[文書のプロパティ]-[概要]にタイトル、作成者、サブタイトル、キーワードという項目があります。hyperref では、ここにも正しい情報を設定することができます。オプションに

\usepackage[dvipdfm,%
pdftitle={タイトル},%
pdfsubject={サブタイトル(?)},%
pdfauthor={作者,編集者,訳者},%
pdfkeywords={キーワード,もうひとつ,さらに}]{hyperref}

と記述すると、情報が設定されます。上で挙げた以外にも、いくつかの製作者情報が設定できます。

12-7.いろいろなサンプル

 ここでは、これまでに解説してきた事柄を活かした、電子文書のサンプルを公開(リンク)します。著作権等は、筆者が作成したものについては筆者が、その他の方が作成されたものについては各作者に帰属しますが、二次配布などに制限はありません(ないものを選んだはずです)。なお、以下の各項目は、すべて PDF 形式になっています。


ひとつ前にもどる  つぎに進む
目次にもどる