"subcaption"パッケージを使用した複数の図の出力について

"subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
返信数: 30
"subcaption"パッケージを使用した複数の図の出力に関して問題に直面しており、問題解決法をご教授いただければとご連絡いたしました。どうぞ宜しくお願い致します。

(1) PCおよびtexの基本情報

OS: Windows 7 Professional (64bit)
Tex version: 角藤版w32tex (インストール日: 2013年7月31日)
統合環境: TeXworks

(2) 問題に関連する画像ファイルのサイズ

MM.eps = 254kb
SD.eps = 254kb
Skewness.eps = 108kb
Kurtosis.eps = 115kb

(3) 問題

上記(2)で記した4つの画像ファイルを2行2列(1行目左にMM.eps、右にSD.eps。2行目左にSkewness.eps、右にKurtosis.eps)の形でドキュメントに表示するため、"subcaption"パッケージを用いた以下のコードを作成しました。

\documentclass[a4paper, 12pt, fleqn]{article}
\usepackage{graphicx, fancyhdr, url, abstract}
\usepackage{amsmath, amsthm, amssymb, amsfonts, geometry}
\usepackage{caption, subcaption}
\usepackage{booktabs, dcolumn, multirow, float, rotating, morefloats, here}
\usepackage[round, longnamesfirst]{natbib}

\setlength{\topmargin}{20mm}
\addtolength{\topmargin}{-1in}
\setlength{\textheight}{235mm}

\begin{document}

\begin{figure}[H]

\begin{subfigure}{0.5\columnwidth}
\centering
\includegraphics[width=\columnwidth]{MM.eps}
\caption{MM}
\label{}
\end{subfigure}
\begin{subfigure}{0.5\columnwidth}
\centering
\includegraphics[width=\columnwidth]{SD.eps}
\caption{SD}
\label{}
\end{subfigure}\\

\begin{subfigure}{0.5\columnwidth}
\centering
\includegraphics[width=\columnwidth]{Skewness.eps}
\caption{Skewness}
\label{}
\end{subfigure}
\begin{subfigure}{0.5\columnwidth}
\centering
\includegraphics[width=\columnwidth]{Kurtosis.eps}
\caption{Kurtosis}
\label{}
\end{subfigure}

\caption{Sample Statistics}\label{}
\end{figure}

\end{document}

このコードを用いると、2行目の2つの画像(Skewness.epsとKurtosis.eps)は望んだとおりサブキャプション付で横並びにpdfに出力・表示されるのですが、1行目の画像(MM.epsとSD.eps)が一切表示されません。「ログの表示」および「Latex errors」パネルに表示された(おそらく関連する)文章は以下の通りです。

「ログの表示」

<MM.eps> (c:/w32tex/share/texmf/tex/latex/amsfonts/umsa.fd)
(c:/w32tex/share/texmf/tex/latex/amsfonts/umsb.fd) <SD.eps>
Overfull \hbox (2.61107pt too wide) in paragraph at lines 19--31
[]$[]$ $[]$
<Skewness.eps> <Kurtosis.eps>
Overfull \hbox (2.61107pt too wide) in paragraph at lines 32--44
[]$[]$ $[]$
[1] (./problem.aux)

「Latex errors」

19 Overfull \hbox (2.61107pt too wide) in paragraph at lines 19--31

32 Overfull \hbox (2.61107pt too wide) in paragraph at lines 32--44

今後、n行m列(n,mともに2以上)の形で画像を出力することも必要になり、かなり頭を悩ませております。大変恐縮ですが、解決法のご教授のほど、どうぞ宜しくお願いしたします。
user 14070 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- 和田 勇 の投稿
OSX TeXLive 2015 で適当なサンプル EPS ファイルだと特に問題なく処理されますので、いくつかの対策例をあげたいと思います。

1) \fbox{\ include graphics{...}} として読み込む eps ファイルの周囲に枠をつけて大きさをチェック

2) width=\columnwidth をもっと狭くしてみる 例えば 1cm とか
eps ファイルの高さがどれくらいあるか不明なので

1) と 2) は高さをチェックするためのものです。

3) 確固たる理由はないのですが problem.aux を削除してやってみる
以前処理した EPS の誤った情報が残っているかもしれないので
和田 勇 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
和田様、早速のご返信と対応策のご教授、誠にありがとうございます。ところで、ご指摘の3つの方法を試してみましたが、残念ながら、目的の結果を得ることが出来ませんでした。ご参考までに、ご指摘の(1)および(2)の方法を加えたコード、コンパイル後に得たpdfファイル、および全epsファイルを本Subjectに添付いたします。お時間の有るときに付加的な対処法を教えていただければ、うれしい限りです。今後ともどうぞ宜しくお願い致します。
user 14070 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
フォーラムにご参加の皆様へ、

ご教授頂いた対処法を含むコードをコンパイル後のpdfファイルをこちらに添付いたします。コードは以下の通りです。どうぞ宜しくお願い致します。

\documentclass[a4paper, 12pt, fleqn]{article}

\usepackage{graphicx, fancyhdr, url, abstract}

\usepackage{amsmath, amsthm, amssymb, amsfonts, geometry}

\usepackage{caption, subcaption}

\usepackage{booktabs, dcolumn, multirow, float, rotating, morefloats, here}

\usepackage[round, longnamesfirst]{natbib}


\setlength{\topmargin}{20mm}

\addtolength{\topmargin}{-1in}

\setlength{\textheight}{235mm}


 

\begin{document}


%オリジナルのコード

\begin{figure}[H]

\begin{subfigure}{0.5\columnwidth}

\centering

\includegraphics[width=\columnwidth]{MM.eps}

\caption{}

\label{}

\end{subfigure}

\begin{subfigure}{0.5\columnwidth}

\centering

\includegraphics[width=\columnwidth]{SD.eps}

\caption{}

\label{}

\end{subfigure}\\

\begin{subfigure}{0.5\columnwidth}

\centering

\includegraphics[width=\columnwidth]{Skewness.eps}

\caption{}

\label{}

\end{subfigure}

\begin{subfigure}{0.5\columnwidth}

\centering

\includegraphics[width=\columnwidth]{Kurtosis.eps}

\caption{}

\label{}

\end{subfigure}

\caption{Sample Stats 1}\label{}

\end{figure}


\newpage


%ご指摘の対処法1

\begin{figure}[H]

\begin{subfigure}{0.5\columnwidth}

\centering

\fbox{\includegraphics[width=\columnwidth]{MM.eps}}

\caption{}

\label{}

\end{subfigure}

\begin{subfigure}{0.5\columnwidth}

\centering

\fbox{\includegraphics[width=\columnwidth]{SD.eps}}

\caption{}

\label{}

\end{subfigure}\\

\begin{subfigure}{0.5\columnwidth}

\centering

\fbox{\includegraphics[width=\columnwidth]{Skewness.eps}}

\caption{}

\label{}

\end{subfigure}

\begin{subfigure}{0.5\columnwidth}

\centering

\fbox{\includegraphics[width=\columnwidth]{Kurtosis.eps}}

\caption{}

\label{}

\end{subfigure}

\caption{Sample Stats 2}\label{}

\end{figure}


\newpage


%ご指摘の対処法2

\begin{figure}[H]

\begin{subfigure}{0.5\columnwidth}

\centering

\includegraphics[width=0.7\columnwidth]{MM.eps}

\caption{}

\label{}

\end{subfigure}

\begin{subfigure}{0.5\columnwidth}

\centering

\includegraphics[width=0.7\columnwidth]{SD.eps}

\caption{}

\label{}

\end{subfigure}\\

\begin{subfigure}{0.5\columnwidth}

\centering

\includegraphics[width=10mm]{Skewness.eps}

\caption{}

\label{}

\end{subfigure}

\begin{subfigure}{0.5\columnwidth}

\centering

\includegraphics[width=10mm]{Kurtosis.eps}

\caption{}

\label{}

\end{subfigure}

\caption{Sample Stats 3}\label{}

\end{figure}


\end{document}


user 14070 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
4つのepsファイルを各replyにひとつずつ添付いたします。

(1)MM.eps
user 14070 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
user 14070 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
user 14070 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- 和田 勇 の投稿
提供していただいた TeX eps ファイルを使いOSX のTeXLive 2015 で問題なく
処理出来ました。また、古い OSX 10.6 くらいのマシンに 2009 があり、それ
でも検証しましたが問題なく表示できました。


提示された pdf の 3ページ目を見ると部分的ではありますが表示されていま
すので、なんとか処理しているようですね。この時も LaTeX Error は表示さ
れましたか?

処理しようとしているeps ファイルは Mathematicaで作成され、ざっとみた限
りBoundingBox も問題はなさそうだし ...

   %!PS-Adobe-3.0 EPSF-1.2
   %%BoundingBox: 0 0 370 237
   %%HiResBoundingBox: 0 0 370 237
   %%Creator: (Wolfram Mathematica 10.1 for Microsoft Windows ... snip ...

   BoundingBox情報

   MM.eps:%%BoundingBox:            0 0 370 237 <=うまくいかない
   MM.eps:%%HiResBoundingBox:       0 0 370 237 <=うまくいかない
   SD.eps:%%BoundingBox:            0 0 370 237 <=うまくいかない
   SD.eps:%%HiResBoundingBox:       0 0 370 237 <=うまくいかない

   Skewness.eps:%%BoundingBox:      0 0 370 245
   Skewness.eps:%%HiResBoundingBox: 0 0 370 245
   Kurtosis.eps:%%BoundingBox:      0 0 370 245
   Kurtosis.eps:%%HiResBoundingBox: 0 0 370 245


原因は ... 角藤版w32tex(2013?) と TeXLive 2015の処理環境の違いかしら?

こちらでは latex platex uplatex と dvipdfmx を組み合わせたり ptex2pdf
-lなどで pdf を作成して検証していますが、TeXworks ではどのようにされて
いますか?problem.tex を作成したフォルダーに problem.log があると思い
ますが、そのログファイルの先頭に何を使ってコンパイルを行ったか記録され
ていますので今回ので解決しなければログファイルを見せてください。

提供していただいた LaTeX ソースで \label{} となっているためラベル重複
の警告メッセージが出ていますので簡単にラベルを付けられるようマクロ化し
た添付のソース(ファイル名 ZZZ.tex)でそちらでコンパイルしてみてくださ
い。解決しなければ、ZZZ.log というファイルを提示してください。

w32tex を利用されている方で協力していただける方へ

検証用LaTeX ファイルは ZZZ.tex ですが、eps ファイルはこのスレッ
ドの質問された方が投稿している4っつのeps ファイルを使ってくだ
さい。エンジンは platex uplatex どちらでも可能です。

和田 勇 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- Akira Kakuto の投稿
W32TeX の場合は,不足パッケージがあるかも知れません。
手元では abstract が無かったので,いつか追加して
おきます。
こちらでは W32TeX でも問題ないようですが (zzz.pdf)
dvipdfmx の場合は,使用している Ghostscript
に依存しますから, dvips も確かめられると
よいかもしれません。
和田 勇 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
和田様

詳細な確認作業および大幅な改良コードの作成と過分なご助力を頂戴し、恐縮しております。本当にありがとうございます。こちらの不手際でいまだ目的の結果にはいたっておりませんが、ご質問に関して以下回答いたします。


(1) この時も LaTeX Error は表示されましたか?


はい。コンパイル時にエラーでストップしてしまうことはなく、そのままpdfが表示されるのですが、「LaTeX errors」のパネルに以下の表示があります(以下はproblem.texに関してですが、頂戴したzzz.texに関しても、図は不完全にしか表示されませんでした。):


19 Overfull \hbox (2.61107pt too wide) in paragraph at lines 19--31

32 Overfull \hbox (2.61107pt too wide) in paragraph at lines 32--44

54 Overfull \hbox (6.79999pt too wide) in paragraph at lines 54--55

60 Overfull \hbox (6.79999pt too wide) in paragraph at lines 60--61

52 Overfull \hbox (2.61107pt too wide) in paragraph at lines 52--64

67 Overfull \hbox (6.79999pt too wide) in paragraph at lines 67--68

73 Overfull \hbox (6.79999pt too wide) in paragraph at lines 73--74

65 Overfull \hbox (2.61107pt too wide) in paragraph at lines 65--77

85 Overfull \hbox (2.61107pt too wide) in paragraph at lines 85--97

98 Overfull \hbox (2.61107pt too wide) in paragraph at lines 98--110


(2) こちらでは latex platex uplatex と dvipdfmx を組み合わせたり ptex2pdf-lなどで pdf を作成して検証していますが、TeXworks ではどのようにされていますか?


TeXworksのタイプセットボックスでは、pdfpLatexとなっています。


(3) 本件およびこれ以降の返信に、problem.log, ZZZ.log, zzz.pdfの3つのファイルを添付いたします。


(4) もし宜しければ、Kakuto様への当方からの返信をご確認いただければ、うれしい限りです。


どうぞ宜しくお願い致します。

user 14070 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
user 14070 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- Akira Kakuto の投稿
Overfull と Underfull を除いて,LaTeX 処理はほぼ正常に
終了しており,問題は dvipdfmx 処理時に起きています。
つまり,お持ちの Ghostscript が うまく eps を pdf に
変換できていないようです。
dvipdfmx -vv filename.dvi
とすると,メッセージが表示されるので,原因がわかる
かもしれません。

dvips の場合は,そのまま eps が採りこまれますから,
dvips -Ppdf filename.dvi
として出来た filename.ps を Ghostscript で見ると,
問題の図が見えるかも知れません。

こちらでは Ghostscript 9.18 ですが,
dvipdfmx filename.dvi
で,全ての図が PDF に入っています。
Akira Kakuto への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
Kakuto様

本件に関してのご対応と確認作業、誠にありがとうございます。ご助言を基に行った作業を以下お伝えします。


(1) コマンドプロンプト上で、dvipdfmx -vv filename.dviを実行し、その結果をテキストファイルに保存しました。お恥ずかしい限りですが、当方の知識不足のため、当該ファイルの内容を理解するまでにはいたっておりません。ご参考までに当該テキストファイル- problem_dvipdfmx.txt -をお送り致します。大変恐縮ですが、ご確認のほど、宜しくお願い致します。


(2) dvips -Ppdf filename.dviの実行を通して、problem.psファイルを作成し、その結果を確認しました。Kakuto様ご指摘の通り、図が全て表示されておりました。また、problem.dviを確認したところ、こちらでも図が全て表示されておりました。ご参考までに、本件以降のReplyでproblem.psおよびproblem.dviをお送り致します。


(3) 当方のGhostscriptは古いバージョンです: Ghostscript 9.02


Ghostscriptの最新版のインストール、或いは、W32TeX(2015)を使用したTexの再インストール等、問題解決のためのご助言をいただければうれしい限りです。どうぞ宜しくお願い致します。

user 14070 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
problem.psのファイルサイズが2MBを超過しており、本Replyに添付できないため、problem.dviのみお送りいたします。以上です。
user 14070 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- 奥村 晴彦 の投稿
失礼しました。100MBに増やしました。

(Moodle(この掲示板に使っているシステム)の新しいバージョンは複数ファイル添付にも対応しているのですが,とりあえずはZIPで束ねるなどでご対応下さい)。
奥村 晴彦 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
奥村様

こちらの不手際でスレッドを乱雑なものにしてしまい、誠に申し訳ありません。ご指摘に感謝すると同時に、今後はより注意深く対応することを心がけます。重ねながら、ありがとうございました。
user 14070 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- 和田 勇 の投稿
ghostscript の問題だと想定されます。ですので ghostscript のアップデートを検討してください。
和田 勇 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
和田様、

早速のご返信、誠にありがとうございます。ご助言に従って、ghostscriptをアップデートし、結果をこちらに報告致します。幾度となく貴重なサジェスチョンを頂き、本当にありがとうございました。感謝致します。


和田 勇 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
和田様

お忙しいところ、本件に関して全てのファイルをご確認頂くと同時に改良版のtexファイルを提供していただき、本当にありがとうございます。心より感謝申し上げます。


近日中にTeXのアップデートを実行し、再度挑戦いたします。実行後の状況をこちらで報告いたしますので、その折もアドバイスのほどを、どうぞ宜しくお願い致します。重ねながら、ありがとうございました。


user 14070 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
ご教授頂いた対処法を講じましたが、思うような結果が得られませんでしたのでご報告します。実行したことは以下の通りです。

(1) 旧バージョンのGhostscriptおよびGSViewをアンインストール

(2) Ghostscript9.18およびGSView5.0をインストール後、和田様より頂戴したzzz.texをコンパイル。


zzz.texのコードには全く変更を加えていません。エラーによりストップすることはありませんでしたが、LaTex errorsのパネルには以下の表示が出ております:


44 Overfull \hbox (6.79999pt too wide) in paragraph at lines 44--44

45 Overfull \hbox (6.79999pt too wide) in paragraph at lines 45--45

46 Overfull \hbox (6.79999pt too wide) in paragraph at lines 46--46

47 Overfull \hbox (6.79999pt too wide) in paragraph at lines 47--47


また、zzz.dviには全ての図が表示されています。ご参考までに、pdfの結果を本Replyに添付いたします。


あわせて、zzz.log.txt、 zzz.dvi、および、dvipdfmx -vv zzz.dviを実行し、その結果をテキストファイルに保存した、zzz_dvipdfmx_102015.txtの3つのファイルを以降のReplyに添付いたします。


大変恐縮ですが、ご協力のほど、どうぞ宜しくお願い致します。

user 14070 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
user 14070 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
user 14070 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
zzz_dvipdfmx_102015.txtを添付します。以上です。
user 14070 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- Akira Kakuto の投稿
user 14070 さんの zzz.dvi は問題ありません。
zzz_dvipdfmx_102015.txt を見ても,エラーメッセージは
無く,正常終了しているように見えます。
user 14070 さんの zzz.pdf を, Adobe Reader ではなくて,
gsview-5.0 + Ghostscript 9.18 で見ると,正しい図が
一瞬見えて,すぐ消えるという,不思議なものになっています。
そういうことで,私にはちゃんとした原因がわかりません。
(当時の dvipdfmx にバグがあったという可能性が大のように思います)。
大変ですが,時間があるときに,TeX を update するのが
結局早道かもしれません。
Akira Kakuto への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
Kakuto様

お忙しいところ、全てのファイルをご確認頂くと同時に適切なアドバイスを提供していただき、本当にありがとうございます。心より感謝申し上げます。

では、TeXのアップデートを実行し、再度挑戦してみます。いずれにせよ、実行後の状況をこちらで報告いたしますので、その折もアドバイスのほどを、どうぞ宜しくお願い致します。重ねながら、ありがとうございました。
Akira Kakuto への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- h s の投稿
元の図は背景を一度白で塗りつぶしてからグラフを描画するようになっているようです。
その塗りつぶしが大きく外にはみ出すから一瞬見えて消えるわけです。

includegraphics に clip オプションつけてみて変化はないでしょうか?

追記:
ログをよく見たら gs 呼出しが -dEPSCrop になっていないからじゃないでしょうか?
h s への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- Akira Kakuto の投稿
> 元の図は背景を一度白で塗りつぶしてからグラフを描画するようになっているようです。
> その塗りつぶしが大きく外にはみ出すから一瞬見えて消えるわけです。

ありがとうございます。わかったような気がします。

> includegraphics に clip オプションつけてみて変化はないでしょうか?

user 14070 さん,これを試してみて下さい。

> 追記:
> ログをよく見たら gs 呼出しが -dEPSCrop になっていないからじゃないでしょうか?

最近の場合,うまく行くのはこれが原因かもしれません。
user 14070 さんの場合,-sPAPERSIZE=a0 なので,
dvipdfmx.def が -dEPSCrop に対応していない頃でしょう。
h s への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
h s様、

ご助言のclipオプションを付け加えることにより、全ての画像がpdfに表示されました!問題解決の対処法をご教授くださり、誠にありがとうございました!
user 14070 への返信

Re: "subcaption"パッケージを使用した複数の図の出力について

- user 14070 の投稿
和田様、Kakuto様、奥村様、およびh s様をはじめとするフォーラムの皆様へ、

ご教授およびご協力に心から感謝申し上げます。本件に関して、当方の問題は解決いたしました。当面texの新インストールは控え、現状のままで対応してみます。何かしら新しい問題に直面した場合には、まず新インストールを実行し、様子をみる予定です。

重ねながら、感謝申し上げますと同時に、今後ともどうぞ宜しくお願い致します。