dvipng

dvipng は,dviファイルを直接PNG画像に変換するツールです. preview-latex の成果物として配布されています.日本語は非対応ですが,高速かつきれいなPNG出力が得られます.LaTeX数式をWeb用に使いたい場合のコンバータとして重宝しそうです(物理のかぎしっぽでも,LaTeX数式のコンバートにdvipngを利用しています).

インストール

http://sourceforge.net/projects/dvipng/ からソースを入手してコンパイルすれば良いですが,Vine Linuxなどの場合はapt-getで簡単にインストールすることができます.

apt-get

Vine Linuxでは,dvipngのパッケージはVinePlus extrasに収められています(以下,Vine Linux 3.2で確認しました).これをapt-getでインストールするには,/etc/apt/sources.listの

rpm     [vine] http://updates.vinelinux.org/apt 3.2/$(ARCH) main devel plus updates
rpm-src [vine] http://updates.vinelinux.org/apt 3.2/$(ARCH) main devel plus updates

という部分で各行末に "extras" を加えて,

rpm     [vine] http://updates.vinelinux.org/apt 3.2/$(ARCH) main devel plus updates extras
rpm-src [vine] http://updates.vinelinux.org/apt 3.2/$(ARCH) main devel plus updates extras

とします.その後,

# apt-get update
# apt-get install dvipng

でインストール可能です.2005年9月29日の時点で,VinePlus extrasに収められているdvipngのバージョンは1.6です.

ソースからインストール

ソースからインストールするには,

からリンクをたどり,dvipng-1.6.tar.gzなどを入手します.そしてtarボールからインストールするいつもの方法で

$ tar zxvf dvipng-1.6.tar.gz
$ cd dvipng-1.6
$ ./configure
$ make
# make install

とします.Vine Linux 3.2ではおそらく,./configure時に「ライブラリがない」というエラーがいろいろ出てくると思いますので,そのつどライブラリを取ってきて,インストールします.Cygwinでは上記手順で問題なくインストールできたと思います.

使用方法

数式のみをPNG画像にする目的で,実際に使ってみましょう.dviファイルが要りますから,

\documentclass[12pt]{jarticle}
\usepackage{amsmath,amssymb,bm}
\begin{document}
\thispagestyle{empty}

\[
\nabla \times \bm{V}
=
\frac{1}{h_1 h_2 h_3}
  \begin{vmatrix}
    h_1 e_1 & h_2 e_2 & h_3 e_3 \\
    \frac{\partial}{\partial q_{1}} &
    \frac{\partial}{\partial q_{2}} &
    \frac{\partial}{\partial q_{3}} \\
    h_1 V_1 & h_2 V_2 & h_3 V_3
  \end{vmatrix}
\]

\end{document}

というLaTeXソースを smp.tex(filesmp.tex)という名前で保存し,コンパイルしておきます. smp.dvi(filesmp.dvi)というファイルができているはずなので,それをこれから使用します.

基本

$ dvipng smp.dvi

とするとsmp1.pngというPNGファイル

smp-base1.png

が出力されます.余分な空白がありますね.

余白をなくす

"-T tight" オプションを付けて

$ dvipng smp.dvi -T tight
smp-tight1.png

とします.余白がなくなり,良い感じです.

背景色

背景色は "-bg" オプションにつづけて color special を付けて,指定します. デフォルトは白 ('rgb 1.0 1.0 1.0') です. TeXソースで \pagecolor 命令により color special を埋め込んだ dvi ファイル(色つきのdvi)には, このオプションは無効化されるので注意が必要です.

$ dvipng smp.dvi -T tight -bg 'rgb 1.0 1.0 0.4'
smp-bg1.png

ここで "'rgb 1.0 1.0 0.4'" という部分が color special です.

背景色の透過

"-bd 数字" オプションを使用すると,画像の端をピクセル値で透過にします. デフォルトでは "-bd 0" (つまり透過なし)です. "-bd 10" だと,下のように画像の周囲10ピクセルが透過されます.

$ dvipng smp.dvi -T tight -bg 'rgb 1.0 1.0 0.4' -bd 10
smp-bg2.png

したがって, "-bd 1000" くらいにしておけば, だいたいどんな場合でも背景は全部透過されるでしょう.

$ dvipng smp.dvi -T tight -bg 'rgb 1.0 1.0 0.4' -bd 1000
smp-bg3.png

このとき,透過部分と文字との境目は背景色に合わせてアンチエイリアシングされます. ここのページの背景色と合わせると

$ dvipng smp.dvi -T tight -bg 'rgb 1.0 1.0 0.8' -bd 1000
smp-bg4.png

という感じです.できあがるのは8ビットPNGなので,IEでも大丈夫です.

前景色

前景色は "-fg" オプションにつづけて color special を付けて,指定します. デフォルトは黒 ('rgb 0.0 0.0 0.0') です. 背景色同様,color special を埋め込んだ dvi ファイルには無効です.

$ dvipng smp.dvi -T tight -fg 'rgb 1.0 0.0 0.0'
smp-fg1.png

アンチエイリアスレベルの指定

"-Q 数字" オプションで,アンチエイリアスのレベルを指定できます. この指定を有効にするためには,"--freetype0" オプション も同時に付けなければなりません. デフォルトでは "-Q 4" です.

$ dvipng smp.dvi -T tight --freetype0 -Q 1
smp03.png

この例ではアンチエイリアスを無効にしています.以下,いくつか試してみたもの.

2

$ dvipng smp.dvi -T tight --freetype0 -Q 2
smp04.png

3

$ dvipng smp.dvi -T tight --freetype0 -Q 3
smp05.png

4

$ dvipng smp.dvi -T tight --freetype0 -Q 4
smp06.png

5

$ dvipng smp.dvi -T tight --freetype0 -Q 5
smp07.png

6

$ dvipng smp.dvi -T tight --freetype0 -Q 6
smp08.png

7

$ dvipng smp.dvi -T tight --freetype0 -Q 7
smp09.png

8

$ dvipng smp.dvi -T tight --freetype0 -Q 8
smp10.png

9

$ dvipng smp.dvi -T tight --freetype0 -Q 9
smp11.png

10

$ dvipng smp.dvi -T tight --freetype0 -Q 10
smp12.png

20

$ dvipng smp.dvi -T tight --freetype0 -Q 20
smp13.png

アンチエイリアスレベルを上げれば良い,というものでもないようです. 一番読みやすいのは "-Q 5" あたりでしょうか.

ガンマ補正

"--gamma 数値" オプションで,出力画像にガンマ補正をかけることができます. デフォルトは 1.0 です.数字が1より小さい場合, フォントは明るく(背景色に近い色に)なります. 数字が1より大きい場合,暗く(前景色が強く)なります. 以下に出力例を並べます.

0.5

$ dvipng smp.dvi -T tight --gamma 0.5
smp-gamma05.png

0.7

$ dvipng smp.dvi -T tight --gamma 0.7
smp-gamma07.png

0.9

$ dvipng smp.dvi -T tight --gamma 0.9
smp-gamma09.png

1.1

$ dvipng smp.dvi -T tight --gamma 1.1
smp-gamma11.png

1.3

$ dvipng smp.dvi -T tight --gamma 1.3
smp-gamma13.png

1.5

$ dvipng smp.dvi -T tight --gamma 1.5
smp-gamma15.png

ガンマ補正が1より小さければスムーズな印象, 1より大きければくっきりした印象が強くなります. ディスプレイなどの環境にも依りますが, "--gamma 1.1" くらいが良い感じでしょうか.

最適化例

前景色黒,背景色白,アンチエイリアスレベル5,ガンマ補正1.1

$ dvipng smp.dvi -T tight -bd 1000 --freetype0 -Q 5 --gamma 1.1
smp-s1.png

前景色黒,背景色#ffc,透過,アンチエイリアスレベル5,ガンマ補正1.1

$ dvipng smp.dvi -T tight -bg 'rgb 1.0 1.0 0.8' -bd 1000 --freetype0 -Q 5 --gamma 1.1
smp-s2.png

前景色赤,背景色#ffc,透過,アンチエイリアスレベル5,ガンマ補正1.1

$ dvipng smp.dvi -T tight -fg 'rgb 1.0 0.0 0.0'  -bg 'rgb 1.0 1.0 0.8' -bd 1000 --freetype0 -Q 5 --gamma 1.1
smp-s3.png

オプション一覧

Usage: ./dvipng [OPTION]... FILENAME[.dvi]

dvipsと似たオプション

-d # Debug (# is the debug bitmap, 1 if not given)
-D # Output resolution
-l # Last page to be output
--mode s MetaFont mode (default ’cx’)
-M* Don’t make PK fonts
-o f Output file, ’%d’ is pagenumber
-O c Image offset
-p # First page to be output
-pp #,#.. Page list to be output
-q* Quiet operation
-r* Reverse order of pages
-T c Image size (also accepts ’-T bbox’ and ’-T tight’)
-v* Verbose operation
-x # Override dvi magnification
- Interactive query of options

dvipsにはないオプション

-bd # Transparent border width in dots
-bd s Transparent border fallback color (TeX-style color)
--bdpi # Set the base (Metafont) resolution
-bg s Background color (TeX-style color)
--depth* Output the image depth on stdout
--dvinum* Use TeX page numbers in output filenames
-fg s Foreground color (TeX-style color)
--follow* Follow mode 
--freetype* FreeType font rendering (default on)
--gamma # Control color interpolation
--gif Output GIF images (dvigif default)
--height* Output the image height on stdout
--noghostscript* Don’t use ghostscript for PostScript specials
--nogssa fer* Don’t use -dSAFER in ghostscript calls
--picky When a warning occurs, don’t output image
--png Output PNG images (dvipng default)
--strict When a warning occurs, exit
--t1lib* T1lib font rendering (default on)
--truecolor* Truecolor output
-Q # Quality (T1lib and PK subsampling)
-z # PNG compression level

# = number f = file s = string * = suffix, ’0’ to turn off
c = comma-separated dimension pair (e.g., 3.2in,-32.1cm)

資料・リンク

Valid XHTML 1.1! home > コンピュータ > TeX >
リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Modified by 物理のかぎプロジェクト PukiWiki 1.4.5_1 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-jiPowered by PHP 5.2.17HTML convert time to 0.394 sec.