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出力は今は諦める。
以下サンプル
単純な描画
上記のソースコード
.. 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);
画像ファイルの読み込み
既存の画像を読み込むには、フルパスを指定する必要がある。
フルパスの指定は、以下の手順。
- オプション”:stringsubst:”を指定する文字列の置き換えを行う宣言をする。
- “Makefile”があるディレクトリまでを、文字列”$wd”で示す。
上記のソースコード
.. tikz:: 画像ファイルの読み込み
:stringsubst:
\node {\includegraphics[width=10cm]{$wd/source/xcode01.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);
マークアップ
目的のマークアップ
上記のソースコード。
.. 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に書けば良いと思い書いたが、バックスラッシュだらけで意味不明になってバグが取れなかった。
目的は果たせたが、コレジャナイ感が満載。うーん。