TikZ Sphinx Extensionを導入のメモその2

tikzを使う目的はスクリーンショット画像へのマークアップ。

プロジェクトファイル

html出力の設定

conf.pyのextensionsに以下を設定するだけ。

#
extensions = ['sphinxcontrib.tikz']

pdf出力の設定

作業中に、sphinxのバージョンを1.5系から1.6へアップデートしたら、pdfの生成がエラーで止まるようになった。 色々とググると、sphinx1.6からは latexmk と呼ばれるコマンドを使うようになったらしい。

http://www.sphinx-doc.org/en/stable/builders.html#sphinx.builders.latex.LaTeXBuilder

Changed in version 1.6: Use of latexmk for make latexpdf on GNU/Linux and Mac OS X

latexmkのお勉強は後回しにして、pdf出力は今は諦める。

以下サンプル

単純な描画

../../../_images/tikz-a2b4cec0987802fd3f9b5d9d1fbdd64020e114cb1.png

上記のソースコード

.. tikz:: tikzで描いた図

    \draw[thick,rounded corners=8pt]
   (0,0)--(0,2)--(1,3.25)--(2,2)--(2,0)--(0,2)--(2,2)--(0,0)--(2,0);

画像ファイルの読み込み

既存の画像を読み込むには、フルパスを指定する必要がある。

フルパスの指定は、以下の手順。

  1. オプション”:stringsubst:”を指定する文字列の置き換えを行う宣言をする。
  2. “Makefile”があるディレクトリまでを、文字列”$wd”で示す。
../../../_images/tikz-2233f044a81a15d1b6fd64f95524ca96548daa6a.png

上記のソースコード

.. tikz:: 画像ファイルの読み込み
   :stringsubst:

   \node {\includegraphics[width=10cm]{$wd/source/xcode01.png}};

マークアップの下準備のための、格子の描画

../../../_images/tikz-f5f62616f219e30cbb28290f303f923379302eab.png

上記のソースコード

.. tikz:: 格子付き
   :stringsubst:

   \node[anchor=south west] (image) at (0,0) {\includegraphics[width=10cm]{$wd/source/xcode01.png}};
   \draw[step=1,lightgray] (0,0) grid (image.north east);
   \draw[step=10,gray] (0,0) grid (image.north east);

マークアップ

目的のマークアップ

../../../_images/tikz-84836e56fdcb4b958242bf6d4e0242e62d07612c.png

上記のソースコード。

.. tikz:: マークアップ
   :stringsubst:

   \node[anchor=south west] (image) at (0,0) {\includegraphics[width=10cm]{$wd/source/xcode01.png}};
   %\draw[step=1,lightgray] (0,0) grid (image.north east);
   %\draw[step=10,gray] (0,0) grid (image.north east);
   \node[draw = red, fill=white, ultra thick,rounded corners, anchor=north east] at (2.2cm,5.7cm) {\textbf{A}};
   \draw[red,ultra thick,rounded corners] (0.5cm, 0.7cm) rectangle (2.2cm,5.7cm);
   \node[draw = red, fill=white, ultra thick,rounded corners, anchor=north east] at (9.7cm,5.7cm) {\textbf{B}};
   \draw[red,ultra thick,rounded corners] (8.0cm, 0.7cm) rectangle (9.7cm,5.7cm);
   \node[draw = red, fill=white, ultra thick,rounded corners, anchor=north east] at (7.5cm,5.7cm) {\textbf{C}};
   \draw[red,ultra thick,rounded corners] (2.5cm, 0.7cm) rectangle (7.5cm,5.7cm);

感想

latexのマクロで簡潔に書こうとしたが、そもそもどこに書けば良いのかわからない。latex_elements/preambleはlatexpdf出力の時のものなので、このtikz拡張には関係なし。

tikz_latex_preambleに書けば良いと思い書いたが、バックスラッシュだらけで意味不明になってバグが取れなかった。

目的は果たせたが、コレジャナイ感が満載。うーん。