TeXで図をコード記述位置に強制的に出力する

2012/07/04未分類import

pLaTex(w32tex角藤版)での場合(2012年7月記載)

platexでは普通,図の位置はコンパイラ任せである.
複数の図を続けて記述してしまったときなどは,
		\begin{figure}[htbp] %位置指定のオプション.here, top, bottom, page(フロートで章の最後へまとめて表示)
		\begin{center}
		\includegraphics[width=30zw,bb=0 0 1280 1024]{figure/}
		\captionsetup{margin=90pt}	
		\caption{説明文}
		\label{fig}
		\end{center}
		\end{figure}	
というような書式で書いた場合,章や節の最後にまとめて図が吐き出されるということが仕様である.
位置指定のオプションで[h]とだけ指定しても失敗することが多いのである.
論文ならこれでも許容できるが,もう少しくだけた技術文書では読みづらくなり不便である.
今までは\clearpageで対応してきたのだが,もっとうまい手があるようだ.
プリアンブルで
\usepackage{here}
というパッケージを読み込み,
		\begin{figure}[H] %Hで強制的に記述した場所に図を出力できる.
		\begin{center}
		\includegraphics[width=30zw,bb=0 0 1280 1024]{figure/}
		\captionsetup{margin=90pt}	
		\caption{説明文}
		\label{fig}
		\end{center}
		\end{figure}	
というように「H」と位置指定のオプションを記述することで強制的にhereで図を出力できる.
このhereパッケージは最近のplatexのインストールパッケージ(少なくともWindows版には)に標準で入っているようだ.
ならば,使わない手はない.

LuaLaTeX(LuaTeX-ja)+jlreqクラスでの場合(2022年4月記載)

2022年4月時点では,TeX Live 2021等でパッケージをフルインストール(scheme-fullオプションでインストール)していれば,hereパッケージは導入済みである.

LuaLaTeX(LuaTeX-ja)とjlreqクラスを使って文書を作成する場合,プリアンブルに以下のような記載を最低限追加し*1
\documentclass[11pt,report]{jlreq}
\usepackage{graphicx}
\usepackage{here}
\usepackage[hang,small,bf]{caption}
\usepackage{layout}
document環境内の本文中に次のような書式で図を挿入すれば,コード記述位置に図が強制的に出力される.
	\begin{figure}[H]
		\begin{center}
			\includegraphics[width=300pt]{figure/filename.pdf}
			\captionsetup{margin=60pt}	
			\caption{説明文}
			\label{fig-label-name}
		\end{center}
	\end{figure}	
なお,図の大きさを決定するのには,同じくdocument環境内の終わりに\clearpage\layout というコマンドを記述し,
現在設定されている本文の幅・高さなどの情報を把握しておくと便利である.

挿入する画像のファイル形式について

過去のpLaTeXではEPSファイルがトラブルの起こりづらく,かつ取り扱いやすい画像ファイルとして重宝されたが,時代は変わった.
画像や図のソースはPDFさえ用意していればトラブルは起こらない*2
JPEGやPNGファイルも基本問題なく取り扱える.
煩雑だったPNGやJPEGのアスペクト比の指定*3も必要が(たぶん)なくなった.
開発されている方々には唯々感謝するばかりである.

*1 : 2012年7月記載のところにはcaptionパッケージの指定はしていなかったので,サンプルの書式をそのままコピペしてもエラーが出る場合があったと思いますが,ご容赦ください.本節追記時に気がつきました.

*2 : 品質を追い求めるなら,PDFファイルを生成するプログラムや設定に注意しなければならないが,それはEPSも同じである.

*3 : 2012年7月記載の例における『bb=0 0 1280 1024』のオプション部分.厳密にいうとバウンディングボックスという値の設定オプション.TeXを始めた頃はこれを指定しないと,JPEGファイル等の画像の縦横比が崩れるので,それら画像ファイルは画素数をいちいち調べて手入力していた…….EPSはこの操作が不要だった.

textextの代替

2011/05/18未分類import
残念ながら,inkscapeのバージョンを上げたらtextextが動作しなくなりました.
というわけで,代替のプログラム(というかバッチファイルを作成です.)
TeXのコードを実行すると,svgファイルとpngファイルが出来るはず.
textextよりは使い勝手は悪いですが,無いよりは遙かにマシです.
platex "%~1".tex
dvipsk -E -Ppdf "%~1".dvi -o "%~1".eps
gswin32c -q -sDEVICE=pbm -sOutputFile="%~1".pbm -r2400 -dNOPAUSE -dBATCH -dSAFER -dEPSCrop "%~1".eps
potrace -o "%~1".svg -s "%~1".pbm
convert "%~1".pbm "%~1"-res.png
convert "%~1"-res.png -resize 1500 "%~1"-toka.png
convert -transparent white "%~1"-toka.png "%~1".png
rm "%~1".aux
rm "%~1".log
rm "%~1"-res.png
rm "%~1".dvi
rm "%~1".eps
rm "%~1".pbm
dvipskは若干古い模様.5月に新規に導入したWindows版TeX環境では入っていませんでした.
ないなどと警告が出たときは,dvipsに書き換えてください.


ちなみに,これで読み込ませるTeXファイルは以下のようなものが良いかもしれません.
例を挙げます.
\documentclass{jarticle}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{txfonts}

\thispagestyle{empty}
\begin{document}
\begin{gather}
\begin{split}
\sigma&=\sigma_1\exp\left( -\dfrac{t}{\tau_1}\right)+\sigma_2\exp\left( -\dfrac{t}{\tau_2}\right)%\\
\end{split}
\nonumber
\end{gather}
\end{document}

imagemagickとpotraceのインストール

これをやらないと,上記バッチファイルは動きません.
ネットの海をさまよって,インストールしてください.
私はimagemagickの公式サイトのリンクから"ImageMagick-6.6.9-9-Q16-windows-dll.exe"
と,titleから"potrace-1.9.win32.zip"をダウンロードしました.

日本語の対応について

当初,私の環境では日本語が化けました.
対策ですが,C:\gs\gs9.02\lib以下のcidfmapを次のように記述したら直りました.
現在は日本語を入力することも可能な状態です.
%!
% cidfmap generated automatically by mkcidfm.ps from fonts found in
%   C:/Windows/Fonts

% Substitutions
/DFKaiShu-SB-Estd-BF << /CSI [(CNS1) 2] /Path (C:/Windows/Fonts/kaiu.ttf) /FileType /TrueType /SubfontID 0 >> ;
/Meiryo-BoldItalic << /CSI [(Japan1) 3] /Path (C:/Windows/Fonts/meiryob.ttc) /FileType /TrueType /SubfontID 1 >> ;
/Meiryo << /CSI [(Japan1) 3] /Path (C:/Windows/Fonts/meiryo.ttc) /FileType /TrueType /SubfontID 0 >> ;
/MS-Gothic << /CSI [(Japan1) 3] /Path (C:/Windows/Fonts/msgothic.ttc) /FileType /TrueType /SubfontID 0 >> ;
/MicrosoftYaHei << /CSI [(GB1) 2] /Path (C:/Windows/Fonts/msyh.ttf) /FileType /TrueType /SubfontID 0 >> ;
/GulimChe << /CSI [(Korea1) 3] /Path (C:/Windows/Fonts/gulim.ttc) /FileType /TrueType /SubfontID 1 >> ;
/Gulim << /CSI [(Korea1) 3] /Path (C:/Windows/Fonts/gulim.ttc) /FileType /TrueType /SubfontID 0 >> ;
/MalgunGothicRegular << /CSI [(Korea1) 3] /Path (C:/Windows/Fonts/malgun.ttf) /FileType /TrueType /SubfontID 0 >> ;
/PMingLiU << /CSI [(CNS1) 2] /Path (C:/Windows/Fonts/mingliu.ttc) /FileType /TrueType /SubfontID 1 >> ;
/MS-UI-Gothic << /CSI [(Japan1) 3] /Path (C:/Windows/Fonts/msgothic.ttc) /FileType /TrueType /SubfontID 2 >> ;
/FangSong << /CSI [(GB1) 2] /Path (C:/Windows/Fonts/simfang.ttf) /FileType /TrueType /SubfontID 0 >> ;
/NSimSun << /CSI [(GB1) 2] /Path (C:/Windows/Fonts/simsun.ttc) /FileType /TrueType /SubfontID 1 >> ;
/MalgunGothicBold << /CSI [(Korea1) 3] /Path (C:/Windows/Fonts/malgunbd.ttf) /FileType /TrueType /SubfontID 0 >> ;
/BatangChe << /CSI [(Korea1) 3] /Path (C:/Windows/Fonts/batang.ttc) /FileType /TrueType /SubfontID 1 >> ;
/DotumChe << /CSI [(Korea1) 3] /Path (C:/Windows/Fonts/gulim.ttc) /FileType /TrueType /SubfontID 3 >> ;
/KaiTi << /CSI [(GB1) 2] /Path (C:/Windows/Fonts/simkai.ttf) /FileType /TrueType /SubfontID 0 >> ;
/MS-PGothic << /CSI [(Japan1) 3] /Path (C:/Windows/Fonts/msgothic.ttc) /FileType /TrueType /SubfontID 1 >> ;
/GungsuhChe << /CSI [(Korea1) 3] /Path (C:/Windows/Fonts/batang.ttc) /FileType /TrueType /SubfontID 3 >> ;
/Dotum << /CSI [(Korea1) 3] /Path (C:/Windows/Fonts/gulim.ttc) /FileType /TrueType /SubfontID 2 >> ;
/Meiryo-Italic << /CSI [(Japan1) 3] /Path (C:/Windows/Fonts/meiryo.ttc) /FileType /TrueType /SubfontID 1 >> ;
/MS-PMincho << /CSI [(Japan1) 3] /Path (C:/Windows/Fonts/msmincho.ttc) /FileType /TrueType /SubfontID 1 >> ;
/Gungsuh << /CSI [(Korea1) 3] /Path (C:/Windows/Fonts/batang.ttc) /FileType /TrueType /SubfontID 2 >> ;
/SimSun << /CSI [(GB1) 2] /Path (C:/Windows/Fonts/simsun.ttc) /FileType /TrueType /SubfontID 0 >> ;
/MicrosoftYaHeiBold << /CSI [(GB1) 2] /Path (C:/Windows/Fonts/msyhbd.ttf) /FileType /TrueType /SubfontID 0 >> ;
/MingLiU << /CSI [(CNS1) 2] /Path (C:/Windows/Fonts/mingliu.ttc) /FileType /TrueType /SubfontID 0 >> ;
/Batang << /CSI [(Korea1) 3] /Path (C:/Windows/Fonts/batang.ttc) /FileType /TrueType /SubfontID 0 >> ;
/Meiryo-Bold << /CSI [(Japan1) 3] /Path (C:/Windows/Fonts/meiryob.ttc) /FileType /TrueType /SubfontID 0 >> ;
/MicrosoftJhengHeiRegular << /CSI [(CNS1) 2] /Path (C:/Windows/Fonts/msjh.ttf) /FileType /TrueType /SubfontID 0 >> ;
/MS-Mincho << /CSI [(Japan1) 3] /Path (C:/Windows/Fonts/msmincho.ttc) /FileType /TrueType /SubfontID 0 >> ;
/SimHei << /CSI [(GB1) 2] /Path (C:/Windows/Fonts/simhei.ttf) /FileType /TrueType /SubfontID 0 >> ;
/MicrosoftJhengHeiBold << /CSI [(CNS1) 2] /Path (C:/Windows/Fonts/msjhbd.ttf) /FileType /TrueType /SubfontID 0 >> ;

% Aliases
/AdobeSongStd-Light /SimSun ;
/MSung-Medium /MingLiU ;
/MSung-Light /MingLiU ;
/HYSMyeongJo-Medium /Batang ;
/STKaiti-Regular /KaiTi ;
/KozMinPr6N-Regular /MS-Mincho ;
/STHeiti-Regular /MicrosoftYaHei ;
/STFangsong-Light /FangSong ;
/AdobeMingStd-Light /MingLiU ;
/AdobeMyungjoStd-Medium /Batang ;
/MKai-Medium /DFKaiShu-SB-Estd-BF ;
/Ryumin-Light /MS-Mincho ;
/MHei-Medium /MicrosoftJhengHeiRegular ;
/HYGoThic-Medium /Dotum ;
/HYRGoThic-Medium /Gulim ;
/HeiseiMin-W3 /MS-Mincho ;
/Ryumin-Medium /MS-Mincho ;
/AdobeHeitiStd-Regular /MicrosoftYaHei ;
/HeiseiKakuGo-W5 /MS-Gothic ;
/STSong-Light /SimSun ;
/GothicBBB-Medium /MS-Gothic ;

TeXの索引の書式を変更する

2011/05/18未分類import
索引を比較的簡単に作成できるのは,TeXの強みの一つだと思う.
せっかく作ったのなら,その書式も自由に変更したいと考えるのは普通だろう.

その場合,istファイルというものを作る.内容はこんな感じ.
%group_skip "\bigskip"
lethead_flag 1
letter_head 2
symhead_positive "記号"
lethead_prefix "\n\\hfill{\\bfseries ---"
lethead_suffix "---}\\hfill\\hfill\\hfill\\hfill\\par\\nobreak"
これをmendex実行時にオプションで読み込ませる.
:!mendex -s sakuin-shoshiki.ist sakuin.idx  
以上.
なお,上のistファイルの内容だと,索引に五十音・ABCのそれぞれの先頭に「A」や「あ」などが表示される.

TeX環境の構築

2010/10/17未分類import
最近,こちらのウィキの更新が止まっていたので,何か書こうと思って考えました.
日記は,こちらです.
左の項目を見ると,TeXの項目が足りていないことが目につきました.
そもそも,ネット上にはたくさんの解説ページがあることですし,
私などが書く理由もそんなにありません.
けど,日頃私がどうやってTeXのそこそこ使える環境を構築しているかを書いておくのも悪いことではないので書いてみます.WindowsとDebian,それぞれの場合を手短に記載したいと思います.
ただし,この記事を書いている時点では,インストール作業はしていません.
所有のパソコンには,だいぶ前に環境が構築済みです.
なので,実際にやってみてうまくいかないかも知れないですので,ご注意ください.
TeX初心者はWindowsでやるといいです.その方がずっと楽.

TeX環境の構築(Windows編)

非常に簡単です.阿部さんという方の作られたインストーラを作ったもの,とかからインストールし,
指示されるままにウィザードを進めていくだけです.TeX本体以外にも必要なものが全部入ります.
この方法が,最も簡単で確実な方法です.決め手は,チェック項目は可能な限りチェック.
海外製のプログラムのインストーラの言語はEnglishにすること.

TeX環境の構築(Debian編)

こちらも簡単といえば簡単です.Synapticで検索ワードで「TeX」といれて,
必要そうなパッケージをチェックしていきます.
おそらく,tetex-base,tetex-bin,texliveとかっていうパッケージを選択すると,自動で必要なパッケージにチェックがされます.それだけでとりあえず十分です.あとは,xdvik-jaというパッケージも入れましょう.Ghost-Scriptも入れましょう.

Debianでの問題は,Lennyの段階では,
日本語のTeX関連のプログラムが動作する文字コードがEUC-JPに限定されているということ.
そのため,あらかじめシステムのロケールをEUC-JPにしておく必要があります.
インストール時の設定で決めたら,固定するのが適切だと思いますのでなるべくそうしてください.

ああ,本当に単なるメモ書きになっていますね…….読む人のことを全然考えていない……….ごめんなさい.