dvipdfmxはdviを直接pdfに変換するプログラム。dvipdfmxのオプションを用い たさまざまな使い方は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}
縁取りにはpdfの Tr
コマンドを使う。
コマンド | 意味 | 出力 |
---|---|---|
0 Tr | 通常 | |
1 Tr | 縁取り | |
2 Tr | 縁取り塗りつぶし |
ちなみに、Trは3なら非表示、4,5,6はclippingに使われる(Clipされる文字は
上記の0,1,2それぞれの対応する)。縁取りモード(rendering)から通常に戻
すときには、 Q
を使う。 q
はPostScriptの gsave
に相当し、 Q
は
PostScriptの gstore
に相当する。
縁取り部分の色を変える。色の指定コマンドは 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.cls
の slide
オプションだと拡大されるので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のあふれるのによるエラーを防止
とあるが詳細は不明。
\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 ()}
をそのまま使うとその場で描画してしまうので、
bxobj
と exobj
で囲む。 @mypin
と命名して、 uxobj
を使って @mypin
を呼
び出して使う。XObjectを使うと、同じものを何度も使い回しができるので、
ファイルサイズの節約になると思う(未検証)。epdfは、encapsulated pdfで、
epstopdf
で作成できる。 mypin.epdf
のような外部ファイルにするのではな
く、直接記述することもできるが、今後の課題。
$ 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にすると、だいぶファイルサイズが小さくなるようだ。