dvipdfmx

dvipdfmxとは

dvipdfmxはdviを直接pdfに変換するプログラム。dvipdfmxのオプションを用い たさまざまな使い方はpdfを参照

dvipdfmxとは
メモの貼り方
縁取り文字
ファイルの添付
動画を埋め込む
XObject
PDFのバージョンによる違い

メモの貼り方

PDFにメモを貼りたい場所に、TeXソースの中で下記のように書く。

    \special{pdf: ann width 7cm height 5cm
    << /Type /Annot /Subtype /Text /Open true
    /Contents (1セメの時に作ったレポートで、実験したものです。) >>}

というようにアノテーション機能が使える。/OpenはPDFを開いたときのメモの 状態でtrueまたはfalseを指定。メモの内容は/Contentsに書く。色は、/Cで指 定する。例えば、/C [0 0.5 1]というようにRGB値で指定する。

縁取り文字

\special{pdf:literal...} でPDFを記述することができるので、これを活用す ると縁取り文字ができる。文字色指定には、 \special{pdf:bcolor ...}\special{pdf:ecolor} を使う。

\special{pdf:literal...}direct コマンド(オプション?)をつけると PDFを直接記述できる。

\special{pdf:literal direct q 0.3 w 0
Tr}\special{pdf:bcolor [0.8 0.3 0]}
立命館\special{pdf: literal direct Q}
\special{pdf:ecolor}

\special{pdf:literal direct q 0.3 w 1
Tr}\special{pdf:bcolor [0.8 0.3 0]}
立命館\special{pdf: literal direct Q}
\special{pdf:ecolor}

\special{pdf:literal direct q 0.3 w 2
Tr}\special{pdf:bcolor [0.8 0.3 0]}
立命館\special{pdf: literal direct Q}
\special{pdf:ecolor}

縁取りにはpdfTr コマンドを使う。

コマンド 意味 出力
0 Tr 通常
1 Tr 縁取り
2 Tr 縁取り塗りつぶし

ちなみに、Trは3なら非表示、4,5,6はclippingに使われる(Clipされる文字は 上記の0,1,2それぞれの対応する)。縁取りモード(rendering)から通常に戻 すときには、 Q を使う。 qPostScriptgsave に相当し、 QPostScriptgstore に相当する。

縁取り部分の色を変える。色の指定コマンドは RG であり、strokingのコマン ドは s である。

\special{pdf:bcolor [0.8 0.1 0]}
\special{pdf:literal direct q 0.3 w 2
Tr 0 0.6 0.6 RG s}
立命館\special{pdf: literal direct Q}\special{pdf:ecolor}

\special{pdf:bcolor [0.8 0.8 0]}
\special{pdf:literal direct q 0.8 w 2
Tr 0 0 0.6 RG s}
{\bfseries 立命館}\special{pdf: literal direct Q}\special{pdf:ecolor}

下の方は、縁取りの太さを0.3から0.8に変えてみた。さらに、文字の背景を変 えてみる。

\colorbox{yellow}{\bfseries\special{pdf:literal direct q 0.3 w 1
Tr}\special{pdf:bcolor [0.8 0.3 0]}
立命館\special{pdf: literal direct Q}
\special{pdf:ecolor}}
\colorbox{yellow}{\bfseries\special{pdf:literal direct q 1 w 1
Tr}\special{pdf:bcolor [0.8 0.3 0]}
立命館\special{pdf: literal direct Q}
\special{pdf:ecolor}}

縁の色と文字の色を一度に指定できる方法があった。

\special{pdf:bcolor [.5] [0]}
\special{pdf:literal direct q 1 w 2 Tr}
日本語 This is a pen
\special{pdf:literal direct Q}
\special{pdf:ecolor}

このように bcolor の後に配列 [] を2つ並べたらよい。 [] の中に1つの数 値だけだとグレー階調で、 [0.8 0.3 0] のように3つ並べるとRGB指定になる。 最初の配列は文字の色で、もう一つの配列は縁の色である。こっちの方がスマー トだな。

縁取りって太いゴシックしか似合わないかも知れない。

ファイルの添付

swfをpdfに添付するコマンドをつくってみた。aviやmpegのように埋め込むこ とはできないようだ。

\def\swf#1#2{\special{pdf:fstream @data (#1)}
           \special{pdf:ann width 5bp height 10bp
           <</Type /Annot /Subtype /FileAttachment
             /FS <</Type /Filespec /F (#1)
             /EF <</F @data>> >> /Name /Paperclip
             /C [0.8 0.4 0.4] /T (#2)>>}}

jsarticle.clsslide オプションだと拡大されるので5bpx10bpと小さくクリッ プを描画した。bpはdvipdfmxのみで、dvipdfmの場合はptを使わなければらない。 色を付けるために /C を使った。 /T は添付アイコンにマウスに置いたときに 表示されるツールチップ。 () の中に文字列を書き込む。

動画を埋め込む

%% aviファイルの埋め込み
%% swfはサポートしていないみたい
%% \vbox to 30bp{\vss\hbox{\hss
%%   \special{pdf:ann width 60bp height 60bp
%%     <</Subtype /Movie /Border [1 0 0] /T (movie dummy)
%%       /Movie <</F (002-003.avi) /Aspect [720 358]
%%          /Poster true>>
%%       /A <</ShowControls false>> >>}\hss}}

\hbox で横配置を決定してから \vbox で縦の配置を決定している。これは通常 のTeXの仕組みと同じ。 \vss は、hboxやvboxのあふれるのによるエラーを防止 とあるが詳細は不明。

XObject

\special{pdf:bxobj @mypin width 10pt height 10pt}
\special{pdf: epdf (mypin.epdf)}
\special{pdf:exobj}
\def\mypin{\special{pdf: uxobj @mypin}\hspace{8pt}}

\special{pdf:epdf ()} をそのまま使うとその場で描画してしまうので、 bxobjexobj で囲む。 @mypin と命名して、 uxobj を使って @mypin を呼 び出して使う。XObjectを使うと、同じものを何度も使い回しができるので、 ファイルサイズの節約になると思う(未検証)。epdfは、encapsulated pdfで、 epstopdf で作成できる。 mypin.epdf のような外部ファイルにするのではな く、直接記述することもできるが、今後の課題。

PDFのバージョンによる違い

$ dvipdfmx -V 3 tmp
tmp.dvi -> tmp.pdf
[1][2]
4883 bytes written
$ dvipdfmx -V 4 tmp
tmp.dvi -> tmp.pdf
[1][2]
4884 bytes written
$ dvipdfmx -V 5 tmp
tmp.dvi -> tmp.pdf
[1][2]
3224 bytes written

PDF1.5にすると、だいぶファイルサイズが小さくなるようだ。


更新:2009年 12月 11日 金曜日 18:46:34 JST  Top