#author("2025-12-10T07:48:01+09:00","default:Miyashita","Miyashita") #author("2025-12-10T07:51:51+09:00","default:Miyashita","Miyashita") *図の挿入 メモ [#d4d9dea2] #contents **はじめに [#w8cb3071] Web検索で見つかる様々な \(\LaTeX\) に関するページでは, ベクター画像の例として .eps を使っているページが多いが,これは一昔前の時代の名残らしい.~ 最近ではベクター画像なら .pdf の方が良いと言われている(epsは半透明のような画像を解釈できないし…).~ ただしジャーナルによっては図としてPDFを使うのがダメだったりするらしいので確認する.~ ~ PDF の余白の切り取りを LaTeX の中でやろうとすると面倒なので,pdfcrop コマンドを使って事前に余白を整えておいた方が良い.~ ~ **図の挿入の基本 [#lee23c2b] 単純に1枚だけ挿入する時は, #codeprettify(lang-tex){{ \begin{figure}[tb] \centering \includegraphics[keepaspectratio,width=\linewidth]{filename.pdf} \caption{An example.} \label{fig:hogehoge} \end{figure} }} 以下にそれぞれの行で実行しているものについて説明する. *** \begin{figure} [#j50bad21] #codeprettify(lang-tex){{ \begin{figure}[htbp] \end{figure} }} のhtbpは,here, top, bottom, page を表し,挿入する位置を指定する.~ 大抵の論文ではページの真ん中に図を置くことは書式として受け入れられず,ページの上端または下端,単独ページで図の挿入になるはずなので,h は使わない.~ レポートなら h もあり.~ #codeprettify(lang-tex){{ \begin{figure}[!h] }} のように ! をつけることで若干無理を通してでも h になる. ***\centering [#ye435bba] 普通は \begin{figure} で確保した領域の上端左寄せで図が入るので,図を中央寄せで表示する. ***\includegraphics{filename.pdf} [#d1b7429f] オプションの keepaspectratio は名の通りアスペクト比固定.~ #codeprettify(lang-tex){{ [keepaspectratio, width=\linewidth] }} とすることで,縦横比そのままで確保した幅いっぱいに図が入る.~ 幅いっぱいにすると大きい時は width=0.9\linewidth などと係数をつけて調整できる.~ ほかの引数オプションには, scale などがあり,これは元画像ファイルに対する拡大縮小比を指す.~ 他のオプションもあるがここでは省略.~ ***\caption{foobar} [#ge827f8f] 表示されるキャプション.位置の調整をしたい場合は \hspace,\vspace を駆使する. ***\label{fig:hogehoge} [#if64d830] #codeprettify(lang-tex){{ \label{fig:hoge} }} と記述すれば,本文中で #codeprettify(lang-tex){{ \ref{fig:hoge} }} と書くことにより図表番号が自動的に反映される.本文中での表示フォーマットは cls ファイル次第.~ 「fig:」はなくとも良いが,label は表や数式でも参照のために使われるので図のラベルとわかる何かはつけておきたい.~ ~ **2段構成のページにぶち抜きで挿入 [#ybb78997] 論文の書式が2段構成で,図だけ1段(margin を除いたページ幅いっぱい)で使う場合は,\begin{figure*} のように,*をつける.~ #codeprettify(lang-tex){{ \begin{figure*}[!t] \centering \includegraphics[keepaspectratio, width=\linewidth]{filename.pdf} \caption{An example.} \label{fig:hogehoge} \end{figure*} }} これを実行すると,この図が最後のページに現れやすいので #codeprettify(lang-tex){{ \begin{figure*}[!t] }} の!tで強めに入れた方が整う.~ ~ **同じ枠内に複数枚 [#aee3520f] figure の中で minipage を使って,画像一つ分の領域を確保してから includegraphics を使う.~ \linewidth, \textwidth などを使って領域の幅を調整する.~ subcaption を使う時は,大抵プリアンブルに次のように書くとよい. #codeprettify(lang-tex){{ \usepackage[subrefformat=parens]{subcaption} }} subcaption パッケージが使用しているスタイルと競合する場合は諦めて, (a)や(b)などの文字を直接打ち込んで挿入する.~ 以下は1行2列で2つの画像を挿入する例. #codeprettify(lang-tex){{ % --- Figure ------------------------------ \begin{figure*}[!t] % -- (a) -- \begin{minipage}{0.5\linewidth} \centering \includegraphics[keepaspectratio, width=0.95\linewidth]{fig/a.pdf} % 図の大きさに合わせてscaleやwidth=\linewidthで調整 \subcaption{1つめ} \end{minipage} % --------- % \vspace と \hspace を駆使して間隔を調節 % -- (b) -- \begin{minipage}{0.5\linewidth} \centering \includegraphics[keepaspectratio, width=0.95\linewidth]{fig/b.pdf} \subcaption{2つめ} \end{minipage} % --------- %% main caption \caption{Hogehoge} \label{fig:1} \end{figure*} % ----------------------------------------- }} \minipage を応用すれば任意の配置で図を置くことができる.~ \subcaption{} は minipage の中に必ず入れないといけない点に注意.~ 入れなかった場合,普通の caption が図Xでなくて (c) 等になってしまう.~ ~ 1行2列くらいなら使わなくても調整が利きそうだが,より複雑になるときは tabular を使う.~ tabular の中に minipage を入れるとレイアウトを揃えやすい.~ #codeprettify(lang-tex){{ % --- Figure ------------------------------ \begin{figure}[t] % --------------------------------- \begin{tabular}{c} % {c}の数は表現したいレイアウトに応じて調整 % -- (a) -- \begin{minipage}{0.5\linewidth} \centering \includegraphics[keepaspectratio, width=\linewidth]{fig/a.pdf} \subcaption{1つめ} \end{minipage} % --------- % -- (b) -- \begin{minipage}{0.5\linewidth} \centering \includegraphics[keepaspectratio, width=\linewidth]{fig/b.pdf} \subcaption{2つめ} \end{minipage} % --------- \\ % ここで次の行へ (tabularの効果) % -- (c) -- \begin{minipage}{0.5\linewidth} \centering \includegraphics[keepaspectratio, width=\linewidth]{fig/c.pdf} \subcaption{3つめ} \end{minipage} % --------- % -- (d) -- \begin{minipage}{0.5\linewidth} \centering \includegraphics[keepaspectratio, width=\linewidth]{fig/d.pdf} \subcaption{4つめ} \end{minipage} % --------- \end{tabular} % --------------------------------- \caption{全体のキャプション} \label{fig:2x2のレイアウト例} \end{figure} % ----------------------------------------- }} begin{tabular}{ccc} などと複数セルを指定した場合には,同一行内のセル区切りで & をいれることを忘れないように.~ ~ ~ **図中(図上)にa)やb)などのテキストを挿入 [#td6ffdd6] いくつかの subpanel で構成された図で a) や b) など番号を振りたい時は,図の上に別途テキストを載せた方が微調整時にも図を描き直さなくてよいので便利.~ 基本的には通常の図の貼り方と同じで, #codeprettify(lang-tex){{ \usepackage{overpic} }} をプリアンブルで書いた上で, #codeprettify(lang-tex){{ \includegraphics[keepaspectratio,width=\linewidth]{subfigA.pdf} }} の箇所を #codeprettify(lang-tex){{ \begin{overpic}[keepaspectratio,width=\linewidth]{subfigA.pdf} \put(0,80){\Large{\textsf{a)} } } \end{overpic} }} のようにするだけ.(0,80)は横方向,縦方向の相対的な位置.(0,0)が左下原点で(100,100)が右上端.文字の大きさやフォントは都合に応じて変更する.~ 詳細は以下の通り.~ ~ #codeprettify(lang-tex){{ % ------------------------------------------------ \begin{figure}[p] %% -- a) --- \begin{minipage}{\linewidth} \centering %\includegraphics[keepaspectratio,width=\linewidth]{subfigA.pdf} 通常はこっち \begin{overpic}[keepaspectratio,width=\linewidth]{subfigA.pdf} \put(0,80){\Large{\textsf{a)} } } \end{overpic} \end{minipage} %% -- b) --- \begin{minipage}{\linewidth} \centering \begin{overpic}[keepaspectratio,width=\linewidth]{subfigB.pdf} \put(0,80){\Large{\textsf{b)} } } \end{overpic} \end{minipage} \caption{caption text} \label{fig:label} \end{figure} % ------------------------------------------------ }} ~ ~ ~ **右/左寄せで行内に埋め込み [#f3b23b09] 論文では使わないが,某申請書やレポート形式では,ページの上端下端以外で図を入れることもある.~ 論文では使わないが,某申請書やレポート形式の文書では,ページの上端下端以外に図を挿入することもある.~ #codeprettify(lang-tex){{ \usepackage{wrapfig} }} をプリアンブルに書いた上で, #codeprettify(lang-tex){{ % --- Figure ------------------------------ \begin{wrapfigure}[11]{r}{70mm} % [埋め込む行数]{左(l)/右(r)寄せ}{埋め込む幅} \centering \vspace{-3mm} \includegraphics[width=70mm,clip]{something.png} \vspace{-3mm} \caption{なにかの図} \label{fig:something} \end{wrapfigure} % ----------------------------------------- }} とか.~ **キャプションの字下げ [#wd8465c8] キャプションのインデント(字下げ)をするにはプリアンブルで次のように書く. #codeprettify(lang-tex){{ \usepackage{caption} \captionsetup{format=hang} }} ただし,sty ファイルの中で図表の書式が定まっているときは,書式が変わってしまう可能性がある.~ 問題がないか確認してから使う.~ ~ **TikZ の図を挿入 [#g9651d34] TikZ のコードで描いた図をそのまま埋め込みたいとき.~ 別ファイルの hogehoge.tex というファイルに #codeprettify(lang-tex){{ \begin{tikzpicture} }} で始まり #codeprettify(lang-tex){{ \end{tikzpicture} }} で終わるコードを書いたとして,この図を文書に挿入するには次のようにする. #codeprettify(lang-tex){{ \begin{figure}[tb] \centering \resizebox{\linewidth}{!}{\input{hogehoge.tex} } \caption{TikZの図を埋め込む.} \end{figure} }} そのままinputしようとすると大抵サイズが合わないので, #codeprettify(lang-tex){{ \resizebox{width}{height}{content} }} で調整する.上記の例のように,resizebox の引数の width, heightのどちらかを指定してもう一方を{!}にすれば,縦横比が固定される.~ TikZで図を描くのに使用していたパッケージは,文書の方のプリアンブルに追加しておかないと図が描けないので忘れないように,例えば下記のようなもの. #codeprettify(lang-tex){{ \usepackage{pgfplots} \usepackage{tikz} \usetikzlibrary{% decorations.pathreplacing,% decorations.pathmorphing% } }} ~