Yamamoto's Laboratory
表紙
 作成
公開情報
古い情報

図の作成

フォーマット

LaTeX で取り扱える図は,出力ドライバーに依存します.ここでは,もっとも使われる dvipdfmx とその他の出力ドライバーが取り扱えるフォーマットを説明します.

dvipdfmx

LaTeX 文書に使う図は EPS だ— は昔話になりつつあります.現在,LaTeX の文書であろうとも,多くの場合 pdf で出力します.LaTeX が吐く dvi ファイルを,dvipdfmx で処理し pdf に変換します.この dvipdfmx が良くできており,多くの図のフォーマットをサポートしています.そのため,EPS に拘る必要が無くなりました.サポートされているフォーマットは,PNG と JPEG,BMP,JPEG 2000 および MetaPost が出力した EPS (MPS)です.

以前よく使われていた EPS は.dvipdfmx では直接出力できません.dvipdfmx の内部で,ghostscript を呼び出し pdf に変換します.このことを気にする必要はありませんが,憶えておくと良いでしょう.dvipdfmx を呼び出すたびにこの変換処理が行われるので,処理の時間が長くなります.そのため,EPS ファイルは,あらかじめ (1) epstopdf により変換,(2) extractbb によりバウンディングボックスがかかれたファイル (*.xbb)を作成することを勧めます.ベクター図は PDF に変換し,LaTeX 文書に挿入しましょう.

一方,ラスター図は JPEG あるいは PNG がお勧めです.これらは,直接 PDF に埋め込む込むことができます.

その他

dvipdfmx 以外の出力ドライバーについては,マニュアルを参照ください.

図の作成ソフトウェアー(Windows)

二次元

有償ですが,Microsoft Visio がお勧めです.二次元の図であれば,Visio には必要な機能がそろっており,大変使いやすいですね.特に,テンプレート (ステンシルと言うらしい) が充実しており,短時間でそれなりのものをつくることができます.Visio で作成した図を pdf ファイルに出力し,それを LaTeX に貼り付けます.

CADのような図面であれば,「DraftSight」が良いですね.

三次元

フリーの AutoDesk 「Tinkercad」が使えます.今,私のお気に入りは 「FreeCAD」 です.

プロット(グラフ)

二次元や三次元のプロット作成には,gnuplot がお勧めです.

図の作成ソフトウェアー(Linux)

二次元

お絵かきとなると,Linux には使いやすいソフトウェアーが見あたりません,LibreOffice Draw はまずまずですが,,Microsoft Visio と比べるとまだまだです.

フリーの CAD ソフト「DraftSifht」が使えます.

プロット(グラフ)

二次元や三次元のプロット作成には,gnuplot がお勧めです.

PDFの作成・処理

図を pdf 出力する方法

pdf フォーマットの図は,様々な方法で作成できます.私は Windows でお絵かきをしますので,次のようにして pdf フォーマットのファイルを作成します.

  1. Visio 等の Windows のソフトウェアーでお絵かきをします.
  2. CubePDF を使い,pdf ファイル出力をします.
  3. pdfcrop を使い,余分な余白を削除します.
  4. extractbb を使い,バウンディングボックス情報が記述されたファイルを作成します.

pdfcrop と extractbb は,Widonds と Linux のどちらにもあります.

pdf の処理ツール

先に述べたように LaTeX 文書に挿入する図は pdf がもっとも適しています.pdf の簡単な加工は以下のツールで可能です.

PDF 処理ツール
操作 Unix 系 OS Windows 系 OS
余白の切り取り pdfcrop pdfcrop
画像のトリミング pdfcrop pdfcrop, briss-0.9.exe
消去 PDF Eraser

pdfcrop

pdfcrop は pdf フォーマットの余分な余白を切り取ったり,トリミング (マージン削除) をする Perl スクリプトです.このコマンドは pdf ファイルを入力として受け取り,ghostscript の助けを借りて各ページの BoundingBox を計算し,マージンを削除した出力 pdf ファイルを生成します.その実行コマンドは以下のとおりです.

$ pdfcrop [オプション] 入力ファイル (*.pdf)  [出力ファイル]

以下の表に,オプションを示します.括弧 (xxx) はデフォルト値を示します.

オプション 動作 デフォルト
--help ヘルプ.使い方の表示.
--version バージョンの表示
--(no)verbose 実行時詳細説明の表示 (false)
--(no)debug デバック情報の表示 (false)
--gscmd ゴーストスクリプトを呼び出します. (gs)
--pdftex | --xetex | --luatex pdfTeX あるいは XeTeX, LuaTeX の使用 (pdftex)
--pdftexcmd <name> pdfTeX の呼び出し (pdftex)
--xetexcmd <name> XeTeX の呼び出し (xetex)
--luatexcmd <name> LuaTeX(luatex) の呼び出し
--margins "<left> <top>
   <right> <bottom>"
マージンの変更, 単位は[bp] (=1/72インチ).ひとつの数値の場合は全方向に,二つの場合は右と下に適用. (0 0 0 0)
--(no)clip clipping support, if margins are set (適用範囲外: --xetex) (false)
--(no)hires `%%BoundingBox' の代わりに,`%%HiResBoundingBox' を使用 (false)
--(no)ini use iniTeX variant of the TeX compiler (false)
— 以下は追加オプション —
--restricted turn on restricted mode (false)
--papersize <foo> gs のパラメーターを「-sPAPERSIZE=<foo>」とします.gs のバージョンは 7.32 以下でのみ使用可能です. ()
--resolution <xres>x<yres> ()
--resolution <res> 引数をゴーストスクリプトオプション -r に渡す.
例: --resolution 72
--bbox "<left> <bottom>
   <right> <top>"
ゴーストスクリプで見つけた右下の原点の bounding box を上書きします. ()
--bbox-odd 奇数ページのみ「--bbox」と同一です. ()
--bbox-even 偶数ページのみ「--bbox」と同一です. ()
--pdfversion <1.x> | auto | none PDF のバージョン (1.1 から 1.8) の設定.xの値は 1 < x < 8.
auto の場合は pdf のヘッダーのバージョンになります.none あるは指定が無い場合は,TeX エンジンのデフォルト値です.
(auto)

通常の使用方法は,次のようにします.

$ pdfcrop input.pdf output.pdf

このコマンドで入力ファイルの余白が切り取られた出力ファイルが出来上がります.

オプション「--margin」の負の値を使うと,ちょっと便利です.余白から内側に切り取られます.したがって,pdf の不要分を切り取ることに使うことができます.具体的には次のようにします.

$ pdfcrop --margin '-20 -10 -20 -100' input.pdf output.pdf

input.pdf の余白から内側に左:20[bp],上:10[bp],右:20[bp],下:100[bp]が切り取られ,output.pdf に出力されます.

briss

briss を使うと PDF の中から一部を切り出す (トリミング) ことができます.不要部分を削除するときに,とっても便利で,私はしょっちゅう使っています.先に示した pdfcrop でもできますが,briss は GUI なのでお手軽です.一方,CUI の pdfcrop はバッチ処理や精度の良いトリミングに向いています.

briss は「SOURCEFORGE > briss」からダウンロードできます.最新の「release 0.9」をダウンロードしましょう.ダウンロードしたファイル(briss-0.9.zip or briss-0.9.tar.gz)を解凍すると,実行ファイルが現れます.

PDF Eraser

PDF の一部を消去することができます.フリーバージョンはウオーターマークが付くので,使い物になりません.$29.95 でアップグレードして使うことになります.

Visio ファイルの自動 PDF 化

ショートカットキーひとつで,Visio で pdf を作成する VBA マクロです.LaTeX の図を Visio で作成する人には,かなり便利だと思います.

VBA マクロ

Visio の図を PDF にするのは比較的面倒です.ただし,いくつものボタンをクリックしたり,コマンド入力が必要です.そこで,ひとつのショートカットキー (Control+p) で余白を切り取った pdf を作成する VBA マクロ作成しました.出来上がるファイルは「タグ名.pdf」で元の Visio ファイルがあるディレクトリーに保存されます.

以下のバージョン名に VBA マクロのリンクを張ります.いずれも,Visio 2007 で動作を確認済です.

ver 1.0 初期バージョンです
ver 1.2 タグ名が日本語の場合,余白が切り取られないバグを解消.

大したことをやっていないので,気に入らなければ適当に修正して使ってください.

設定と使用方法

マクロの設定と使用方法は,以下の通りです.

  1. VBA マクロ (mk_pdf.bas) をダウンロードします.
  2. Visio を軌道します.既存のファイルのダブルクリックでもOKです.
  3. Visio のメニュー: ツール(T) > マクロ(M) > Visial Basic Editor(V) Alt+F11 を選択します.
  4. すると,Microsoft Visial Basic のエディターが起動します.そして,メニュー: ファイル(F) > ファイルのインポート(E) を選択します.
  5. ダイアログ「ファイルのインポート」が表示されますので,ダウンロードしたファイル(mk_pdf.bas)を選択します.
  6. Visio のメニュー: ファイル(F) > xxx の上書き保存 Ctrl+S を選択します.あるいは,フロッピーディスクアイコンをクリックします.
  7. Microsoft Visial Basic のエディターを閉じます.
  8. Visio を再起動します.

使い方は,簡単です.ショートカット: Ctrl + p を押すと,タグ名の pdf ファイルが作成されます.余白も切り取られます.LaTeX で文章を作成する場合,とても便利です.

Bounding Box 解析・ファイル作成

extractbb

extractbb は,PDF や PNG,JPEG ファイルの bounding box を取り出すユーティリティです.コマンドラインで「extractbb ファイル名.拡張子」を実行すると,ファイル「extractbb.xbb」 が作られます.LaTeXはこれを直接読み込みます.

画像フォーマット変換

CAD 図を VISIO へインポートする

エンジニアーであれば,AutoCAD のような CAD ソフトウェアーが作成した図面を VISIO にインポートしたいと思うでしょう.報告書を作成する場合,CAD 図そのものだと,読者には分かり難いものです.VISIO にインポート後,不要な線を削除したり色を付けたり説明を追加して分かり易くすると,報告書の出来映えが格段に向上します.こでは,VISIO に取り込む方法を説明します.VISIO に取り込むと,LaTeX 用の PDF への変換は簡単です.

なお,ここでは VISIO 2007 を対象にしています.

VISIO 2007 で読み込み可能な dwg へ変換

最初に,VISIO で読み込める CAD ファマットに変換します.ここでは,(1)TrueView と nanoCAD,(2)DraftSight を使う二通りの方法を示します.

TrueView と nanoCAD (無料)

Autodesk DWG TrueView と nanoCAD 5 を使い CAD ファイル (dwg, dxf) を Visio で読めるようにします.具体的には,以下のようにします.

  1. DEG TrueView を使い nanoCAD 5 で読めるフォーマット (dwg 2004) に変換します.
    1. DWG TrueView を起動します.
    2. DWG変換をクリックします.
    3. 変換設定で dwg のバージョンを2004に指定.
    4. 「ファイルを追加」で変換元のファイルを指定します.
    5. 変換ボタンをクリックします.
    以上で,nanoCAD 5 で読み込み可能な dwg に変換できます.
  2. nanoCAD 5 を使い VISIO 2007 で読み込み可能な dwg ファイル (AutoCAD R11 dwg) に変換します.
    1. nano CAD 5 を起動します.
    2. DWG TrueView で変換した dwg ファイル (R11) を読み込みます.
    3. save as をつかい,AutoCAD R11 dwg で保存します.
    以上で,VISIO 2007 で読み込み可能な dwg に変換できます.
Dassault Systems (有料)

有料の DraftSight を使うことで,CAD ファイルを VISIO ファイルに変換できます.

  1. Windows のメニューのスタート > すべてのプログラム > Dassault Systems > DraftSight を選択します.すると,DraftSight が起動します.
  2. DraftSifht から,変換するファイル (*.dwg) を読み込みます.すると,図面が表示されます.
  3. DraftSight の メニューのファイル > 名前をつけて保存 (A) を選びます.すると,保存のダイアログが現れますので,ファイルの種類「R2000-2002図面(*dwg)」を指定し,適当な名前で保存します.

VISIO 2007 で dwg の読み込み

VISIO で AutoCAD の CAD フォマット dwg を読み込む方法を示します.

  1. Visio を起動します.
  2. 図面の縮尺などの設定
    1. メニューのファイル(F) > ページ設定(Uを選択します.
    2. ページ設定のダイアログが現れますので,図面縮尺のタブを選択します.
    3. 元の CAD の縮尺に一致させます.
    4. そのほか,お好みで「プリンタの設定」や「ページサイズ」を設定します.
  3. CAD図を読み込みます.
    1. Visio のメニューの挿入 > CAD 図面(D)を選択します.
    2. するとダイアログ「AutoCAD 図面の挿入」が現れますので,図面を選択します.
    3. つぎに,ダイアログ「CAD 図面のプロパティ」が現れます.CAD図面の保護の3つの設定「図形サイズ/位置/子定位する(L)」と「削除しない(D)」,「範囲を表示する(V)」のチェックマークを外します.そして,ボタン [OK] をクリックします.
    4. CAD 図がVisio の画面に表示されます.
  4. 分解
    1. 挿入された CAD 図面をクリックし,選択します.
    2. 右クリックし,CAD Drawing オブジェクト(O) > 変換(C)を選択します.
    3. ダイアログ「CAD オブジェクトの変換」が現れます.ここで,ボタン [全て選択(S)] をクリックします.そして,ボタン [OK] をクリックします.
    4. 処理にしばらく時間がかかります.処理が終了すると,編集可能な Visio 図面になります.

EPSへ変換

滅多にありませんが,EPSフォーマットでなくはならない場合があります.その場合,EPSへの変換が必要となります.ここでは,EPSフォーマットへ変換する方法を示します.

Metafile to EPS Converter(win, linux)

Windows の metafile(EMF or WMF)を EPS に変換します.変換品質は非常に良いです.しかし,boundingbox が誤っている(?)ため,GSview で調整が必要です.

EPS-conv

主に,ビットマップファイルをepsに変換するために使っています.

gs(linux), gswin32(windows)

gsを使うと,いろいろなフォーマットから EPSへ変換できます.windowsの場合は,gs が gswin32(or gswin32c) となります.

pdf → eps gs -sOutputFile=hogehoge.eps -sDEVICE=epswrite hogehoge.pdf

pdf を 他のフォーマットへ変換

123 PDF to Image(Windows)を使うと,PDFを他のフォーマット(BMP, JPEG, JPG, GIF, PNG, WMF, EMF, EPS, TIFF)のイメージに変換できます.LaTeXの文書中の図(pdf)を他のソフトウェアーで使う場合に便利です.特に,Microsoft 系のソフトウェアーに,PDFを読み込むと,汚くなります.PowerPoint に貼り付けるとがっかりします.そんな時に,123 PDF to Image を使い WMF にすると,良い感じになります.

画像の変更・修正

余白の切り取り

pdf の場合は croppdf を使い余白の切り取りができます.それ以外の画像フォーマット (BMP, JPG, GIF, PNG, EXIF, TIFF, ICON, EMF, WMF, MEMORYBMP) の場合は,AutoMarginCut が便利です.使い方は次の通りです.

  1. AutoMarginCut を起動します.
  2. 画像ファイルが保存されたフォルダーをアプリケーションのダイアログにドラッグ & ドロップします.
  3. ボタン [トリミング開始] をクリックします.
  4. すると,フォルダーの中にフォルダー「Edited_Data」が作成され,その中に余白が切り取られた画像ファイルが保存されます.

その他

Windows bitmap (*.bmp)の場合

bmcを使う方法

MS Windows のビットマップファイル(*.bmp)の場合,extractbb では bounding box を調べることができません.dvioutに付属の「bmc.exe」を使うのが良いでしょう.それが保管されている場所は環境に依存しますが,私の場合は「C:\w32tex\dviout」にありました.使い方は,次のようにします.パスを通せば,使えます.

$ bmc -b sample.bmp

すると,bounding box 情報が書かれたファイル「sample.bb」が作成されます.この拡張子を「sample.xbb」と変更します.

pngに変換してextractbbを使う方法

Windows bitmap(*.bmp)をconvertコマンドで,pngに変換して,extractbbを使いbouding box譲歩が書かれたファイル(*.xbb)を作成することもできます.bmp と png に含まれる情報は全く同一です.png は圧縮処理が施されているので,ファイルサイズが小さくなるメリットがあります.bmp を使う理由はありませんね.

ページ作成情報

参考資料

  1. LaTeX に挿入する図のフォーマットに関しては,丸田一郎さんの「使ってはいけない LaTeX のコマンド・パッケージ・作法」を参考にしました.

更新履歴

2015年05月20日 ページの新規作成.以前の「図の挿入」の図の作成の部分を分離しました.


no counter