scdviout-pgf でアヒルしてみる
dviout で PGF/TikZ が扱えるようになる画期的な scdviout-pgf パッケージであるが、先日、このパッケージについてチョットした問題点が指摘された。
確かに、「出力をゆきだるま☃にする」ことは問題解決になっているが、「出力をアヒル🦆にする」ことでも問題を解決できる。ならば、ゆきだるま☃でなく、むしろアヒル🦆を出力すべきではないか。
「出力をアヒル🦆にする」という手法が有効であることは確かである。しかし、「ゆきだるま☃とアヒル🦆のどちらがより有効か」という議論は、無用な争いを生む恐れがあるため、是非とも避けたいところである。
そういうわけで、scdviout-pgf について、「ゆきだるま☃とアヒル🦆のどちらを出力するか」をオプションで選べるようにする」という改修を行った。
- scdviout-pgf パッケージ (GitHub:zr-tex8r)0.82 版。
新しい 0.82 版では、scdviout-pgf パッケージのオプションに duck
を指定することで、TIkZ の出力をアヒル🦆にすることができる。
% pLaTeX文書 \documentclass[dviout,a4paper]{jsarticle}% dvioutしたい! \usepackage[duck]{scdviout-pgf}% アヒルしたい!!! \usepackage{tikz} \usetikzlibrary{calc} \colorlet{myblue}{blue!80!black} \begin{document} \begin{center} % "三角形の外心"の図をTikZで頑張って作ったよ \begin{tikzpicture}[x=5mm,y=5mm] \coordinate (A) at (4,4); \coordinate (B) at (0,0); \coordinate (C) at (6,0); \coordinate (O) at (3,1); \draw[myblue!80] (O)--($(A)!.5!(B)$); \draw[myblue!80] (O)--($(B)!.5!(C)$); \draw[myblue!80] (O)--($(C)!.5!(A)$); \draw[myblue!80,overlay] (O) circle[radius=3.16228]; \fill[myblue] (O) circle[radius=2pt] node[left=2pt] {O}; \draw[thick] (A)--(B)--(C)--cycle; \fill (A) circle[radius=2pt] node[above=2pt] {A}; \fill (B) circle[radius=2pt] node[left =2pt] {B}; \fill (C) circle[radius=2pt] node[right=2pt] {C}; \end{tikzpicture} \end{center} \end{document}
これを platex でコンパイルして dviout で開くと、以下のような素敵な出力が得られる。
一方で、次のように scdviout-pgf のオプションを snowman
にした場合は:
\usepackage[duck]{scdviout-pgf}% ゆきだるま!!!
従来通り、以下のような(これまた)素敵な出力が得られる。
“dc”な dviout-pgf
なお、オプションを省略した場合の既定値は snowman
である。これは単純に旧版との互換性のための仕様であるが、熱狂的なアヒル者にとっては不満があるかも知れない。無用な争いは是非とも避けたいので、対策として、dcdviout-pgf というパッケージを新たに提供した。これは、「出力選択の既定値が duck
である」ことを除いて、scdviout-pgf と全く同じ機能を有するものである。
% (互換性のため)出力は'snowman' \usepackage{scdviout-pgf} % 出力は'duck' \usepackage{dcdviout-pgf} % オプションを明示した場合は両者の差異はない \usepackage[snowman]{scdviout-pgf}% 出力は'snowman' \usepackage[snowman]{dcdviout-pgf}% 出力は'snowman' \usepackage[duck]{scdviout-pgf}% 出力は'duck' \usepackage[duck]{dcdviout-pgf}% 出力は'duck'
おまけ:出力を「無」にする
次のように、scdviout-pgf のオプションに phantom
を指定すると:
\usepackage[phantom]{scdviout-pgf}
TikZ の出力は「無」に変わる。
無愛好家にとっては、こちらの方が素敵かも知れない。
おまけ:dvipdfmx で scdviout-pgf する
scdviout-pgf パッケージはドライバ指定が dviout でないと動作しないのであるが、実は、このパッケージが行っていることは「PGF のドライバを“pgfsys-scdviout”に設定する」だけであり、この pgfsys-scdviout 自体は dvipdfmx でも動作する*1。次のように、直接 PGF のドライバを設定すればよい。
\documentclass[dvipdfmx,a4paper]{jsarticle}% dvipdfmx したい! %!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! TeX code BEGIN \def\pgfsysdriver{pgfsys-scdviout.def}% でも出力はゆきだるま!! %\def\scpgfsysessence{duck}% アヒルならさらにコレを追加 %!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! TeX code END \usepackage{tikz}
*1:一般に、dvips 互換の color special および tpic special をサポートした DVI ドライバであれば動作するはずである。