TeXで図をコード記述位置に強制的に出力する
2012/07/04
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も必要が(たぶん)なくなった.
開発されている方々には唯々感謝するばかりである.