「note」に引っ越し中です。移動したページごとに移動先へのリンクを作っていく予定です。

InkscapeでLaTeXドキュメントに図面を挿入する

 このページでは、Inkscapeを使って作成した図面をLaTeXのドキュメントに挿入する作業の流れをメモしておきたいと思います。

(2024.07.23更新)

はじめに

 「EPS形式データを扱う」のページではInkscapeにEPS形式のファイルをインポートして編集する方法(特にGhostScriptの使い方)について調べた結果をまとめました。

 「「数式」を描く」のページではLaTeXのコマンドを使って記述した「数式」をSVG形式データに変換してInkscapeのドキュメントに挿入する方法について調べた結果をまとめました。

 このページではLaTeXで記述したドキュメントの中にInkscapeで作成した図面を挿入する方法について調べた結果をまとめていきたいと思います。

 論文のような一定の書式に従ってドキュメントを作成する場合、ワープロソフトを使って作成する方法のほかに、LaTeXのコマンドをテキストファイル(LaTeXファイル)中に記述しておいて専用のツールを使ってPDF形式に変換するという方法が良く用いられているようです。

 LaTeXを使うと、数式をカッコよく書けること以外にも章番号や図番号を自動的に付けてくれたり、脚注や引用文献の書き方を統一することができたりするというメリットがあります。

大まかな作業手順

 まずPDFファイルの生成に至る作業手順を大まかに示します。

  1. Inkscapeで図面を描く
  2. 挿入したい範囲のオブジェクトを選択しておいて、その選択範囲をPDFファイルに保存する
  3. 保存したPDFファイルを挿入するコマンドを記述したLaTeXファイルをテキストエディタで作る
  4. LaTeXのツールをインストールする
  5. そのツールにLaTeXファイルを入力して実行する
  6. Inkscapeで作ったPDFファイル(図面部分)が挿入されたPDFファイル(文書全体)が生成される

Inkscapeで図面を描く

 例として簡単な図面を2つ並べて描いてみます。星形オブジェクトを並べたものと、テキストオブジェクトを斜めに傾けたものとを描きました。

 このSVGドキュメントをPDFファイルに保存するときは、左半分と右半分を順に選択して「選択範囲」をそれぞれ異なるPDFファイル(例えばfig1.pdfとfig2.pdf)に保存しました。各図面の端を囲う矩形も一緒に描いておいて、その矩形ごとまとめて「選択範囲」として保存することで、図面の上下左右のマージンをPDFファイルの中に加えてみました。なお、これはあくまでも説明用のサンプルなのでマージン付加用の矩形は黒いストロークで描いていますが、ドキュメントに本格的に挿入するなら色は不要なのでストロークは塗りなしを設定することになります。

LaTeXコードへの図面の挿入

 「\includegraphics」というLaTeXのコマンドを使えば、他の画像ファイルをLaTeXドキュメントのそのコマンドの位置に挿入することができます。

 例えば次のようなLaTeXコードを「test.tex」という名前のテキストファイルに記述します。「\includegraphics」の行が図面を描いた画像ファイルの挿入を指示しているところです。

\documentclass{jlreq}
\usepackage[dvipdfmx]{graphicx}
\begin{document}
 InkscapeのドキュメントをPDFファイルに保存し、\LaTeX のドキュメントに挿入してみました。
\begin{figure}
\begin{center}
\includegraphics[height=5cm]{fig1.pdf}
\caption{星形シェイプ}
\end{center}
\end{figure}
 テキストオブジェクトを含めてPDFファイルに保存したものも挿入してみました。PDFファイルに保存する際にオプションでフォントを埋め込む指定もしています。
\begin{figure}
\begin{center}
\includegraphics[height=5cm]{fig2.pdf}
\caption{テキストの変形}
\end{center}
\end{figure}
\end{document}

 ところで、画像ファイルとしてはPDF形式ファイルのほかにEPS形式ファイルやビットマップ画像ファイルを使うことができます。ただし、「EPS形式データを扱う」のほうでも書きましたが、EPS形式ファイルをドキュメントに挿入するということは最近は行われていないようなので、ここではPDFファイルをInkscapeで作成して挿入する方法を試してみます。

LaTeXのツール

 LaTeXのコマンドを並べて記述したテキストファイル(LaTeXファイル)は専用のツールに入力することでPDFファイルに変換します。

 専用のツールといってもいろんなパッケージが提供されているようです。ここでは「TeX Live」と呼ばれるツールをインストールして使ってみました。

 なおWindowsの場合「TeX Live」のインストールはダウンロードしてきた圧縮ファイルを解凍して「install-tl-windows.bat」というバッチファイルを実行するだけですがものすごく時間がかかります。このメモのために1回だけインストールしましたが「〇〇時間」というオーダーでした。インストールの途中で最小限のファイルだけインストールするようオプションを変えてみたところ、30分ほどまでは縮みましたが。

LaTeXのマクロファイル

 Inkscapeとはあまり関係ありませんが、ついでにメモしておきます。

 LaTeXファイルに記述されるコマンド列のうち共有可能な部分だけを記述したいろんなマクロファイルがネット上で提供されていて、それをダウンロードしてきてLaTeXのツールから使えるように保存すると、そのマクロを「\usepackage」というコマンド1行で取り込んで使うことができるので便利です。

 マクロファイルには特殊なインストール手順はなく、「TeX Live」の場合は「TeX Live」をインストールしたフォルダの下の「texmf-dist/web2c/texmf.cnf」というファイルの中に記述されているパスの下に置いて「mktexlsr」という「TeX Live」に含まれているツールをコマンドプロンプトから実行するだけです。

 なお、今回のお試し作業では「TeX Live」にあらかじめ含まれているマクロファイル以外には特にマクロファイルを使っていないので、追加でダウンロードしたマクロファイルもありません。

LaTeXファイルをPDFファイルに変換

 LaTeXのツールをコマンドプロンプト上で実行してPDFファイルに変換します。このPDFファイルにはもちろん2つの図面(fig1.pdfとfig2.pdf)も挿入済みになっています。

 まず1つ目のコマンド「platex」でDVIファイルという中間形式のファイルを生成します。

C:\tmp> platex test.tex

 これで「test.dvi」というDVIファイルが生成されます。

 次に2つ目のコマンド「dvipdfmx」でDVIファイルをPDFファイルに変換します。

C:\tmp> dvipdfmx test.dvi

 これで「test.pdf」というPDFファイルが生成されます。

出来上がったPDFファイル

 生成されたPDFファイルをビューワで表示させると、次のようにちゃんと図面が挿入されています。


 なお、テキストオブジェクトを描いたほうの図(図2)では、テキストオブジェクトのまま(文字コードなどを含んだまま)PDFに変換しているので、次のように文字列として選択して例えばコピペするようなことも可能です。

 一方、PDFファイルに保存する際に設定で「テキストをパスに変換」を選択していると、テキストは単なるパス(単なる曲線)に変換されるので、PDFファイルを表示したときに文字列部分を選択することはできなくなります。