ファイルパスにピリオドが含まれるかどうかで画像サイズが異なる

ファイルパスにピリオドが含まれるかどうかで画像サイズが異なる

- myu myo の投稿
返信数: 16

 

http://fast-uploader.com/file/6998876051613/

ここに問題となるtexファイルをアップロードしました。

四角の箱に画像を収まるようにしたいのですが
同じ画像ファイルであってもファイルパスにピリオドが含まれるか含まれないかで
挿入される画像のサイズが違ってしまいます。

これはなぜでしょうか?
統一するにはどうしたら良いですか?


myu myo への返信

Re: ファイルパスにピリオドが含まれるかどうかで画像サイズが異なる

- 若 雲 の投稿
詳しい仕組みはわかりませんが、

> bb=0 0 512 390

と直接指定するのではなく、extractbbコマンドに自動的に算出させると、両方とも意図したサイズになりました。

最近のTeX環境であれば、特に追加の設定などなくextractbbが呼び出せるはずなので、とりあえずの解決策としては、BoundingBoxの指定を外す、というのはいかがでしょうか。

# 技術的な理由はわかりません。
若 雲 への返信

Re: ファイルパスにピリオドが含まれるかどうかで画像サイズが異なる

- myu myo の投稿

ご回答ありがとうございます。

一度、extractbbを使ってみたいのですが

使い方がわかりません。

http://qiita.com/akisute3@github/items/32ea69d031701463f789

このページに解説記事がありますが

xbb ファイルを作成する、ためには通常はコマンドラインで実行する必要あるが

恐らく、texmf.cnf の shell_escape_commands に extractbb を記述しておけば自動的に生成されるため、その必要がないという意味でしょうか?

texmf.cnfをメモ帳で開いてみましたがextractbb はどこに記述すれば良いでしょうか?

xbbファイルで得られた解像度を「bb=」以降のに入力する必要がありますが

自動で入力するにはどうしたら良いですか?

調べてみましたがよくわかりませんでしたので

教えていただけないでしょうか?

myu myo への返信

Re: ファイルパスにピリオドが含まれるかどうかで画像サイズが異なる

- 若 雲 の投稿
最近TeXを新たにインストールしたのであれば、extractbbはTeXの配布物に含まれていて、しかも自動的に呼び出されるようになっているので、特に気にする必要はありません。

昨年以前にTeXをインストールして、そのまま使っているのであれば、TeX Wikiの以下のページを参考に設定する必要があります。

http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?extractbb%20%E3%81%AE%E8%87%AA%E5%8B%95%E5%AE%9F%E8%A1%8C%E8%A8%B1%E5%8F%AF%E3%81%AE%E8%A8%AD%E5%AE%9A

また、extractbbが正常に呼び出される環境では、コンパイル実行時に、「bb=」として指定していた数値を、自動的に算出、指定してくれるので、ソースファイル中に記述する必要はありません。

-----
ただ、「00.1.png」というように、拡張子の前にドットが含まれたファイル名だと、extractbbがうまく呼び出せないようです(Windows 10、TeX Live 2015)。

とりあえずは、「ファイル名にドットは使わない」というようにすると安全なのではないでしょうか。
若 雲 への返信

Re: ファイルパスにピリオドが含まれるかどうかで画像サイズが異なる

- myu myo の投稿

ご回答ありがとうございます。

昨日Texのアップデートを行ってからおかしくなりました。

これは、自動的にextractbbが有効になるという仕様に変更になったせいということでしょうか。

既に作ってあるプログラムを流用したいので

逆にextractbbを無効にして自動的に算出した値を使わないように設定するにはどうしたら良いですか?

よろしくお願いいたします。

myu myo への返信

Re: ファイルパスにピリオドが含まれるかどうかで画像サイズが異なる

- 奥村 晴彦 の投稿
現在の仕様上正しい bb=0 0 384 384 を両方指定すれば問題ないですよね(つまり512x512 96ppiを72ppiに換算すると384x384になる)。
奥村 晴彦 への返信

Re: ファイルパスにピリオドが含まれるかどうかで画像サイズが異なる

- myu myo の投稿

ご回答ありがとうございます。

アップロードした画像の場合には問題ないのですが

実際には様々なdpiの画像を使うことになるので

教えてくださった解決策ではうまくいきません。

myu myo への返信

Re: ファイルパスにピリオドが含まれるかどうかで画像サイズが異なる

- 奥村 晴彦 の投稿
あ,すみません,あのようにせよということではなく,あの方法でも正しく動作させることができることを示したまでです。おすすめはもちろんextractbb自動実行です。

最近の美文書DVDからインストールされればextractbb自動実行に設定されていますが,もしされていなければ若雲さんのお示しになっている方法で設定してください。かなり古いシステムでも大丈夫なはずです。
myu myo への返信

Re: ファイルパスにピリオドが含まれるかどうかで画像サイズが異なる

- 飯島 徹 の投稿
これはbbに指定した「間違った値」を「正しい値」に直さないで正しい表示を行いたいということでしょうか?
これはちょっと都合が良すぎるような気がします.

恐らく BoundingBox に関する知識が間違えている気がしますので,次のサイトの
http://qiita.com/zr_tex8r/items/5413a29d5276acac3771
「タブー②: \includegraphics の bb オプション 」を参考にされるとよいと思います.
飯島 徹 への返信

Re: ファイルパスにピリオドが含まれるかどうかで画像サイズが異なる

- myu myo の投稿

BoundingBoxを使うか使わないかは問題ではなくて

ピリオド有りと無しのファイルが混在している場合

どのようにして画像サイズを整えるかというのが問題なのですが。

ちなみにextractbbが自動で有効になるのは

どのファイルのバージョンが問題なのでしょうか?

そのファイルだけバージョンを下げればうまくいかないでしょうか?

あるいは/usr/local/texlive/texmf/web2c/texmf.cnf からextractbbの

記述を削除できないでしょうか?

myu myo への返信

Re: ファイルパスにピリオドが含まれるかどうかで画像サイズが異なる

- Z. R. の投稿

状況を整理しましょう。

LaTeX で画像ファイルを読み込む場合、ピリオドの付いたファイル名は使えません。

  • もし使うと、LaTeX がワケノワカラナイ動作を起こします。

LaTeX + dvipdfmx で PNG 画像を読み込む場合は画像の bounding box (今の画像の場合、“0 0 384 384”です)が必要です

  • これには次のような方法があります。
    • extractbb を自動起動して得る。
    • 人間が bounding box の値を調べて、オプションに bb=0 0 384 384 を書く。
  • もし、人間がデタラメな bounding box の値(0 0 512 390)を LaTeX に教えると、LaTeX はワケノワカラナイ動作を起こします。

ここで大事なのは、「正しい動作」はちゃんと仕様で決められているので、TeX 環境のバージョンが変わっても同じ結果になるますが、「ワケノワカラナイ動作」は“何が起こるかわからない”ということですから、TeX 環境によって結果が異なります。

従って、今やりたいのは次のようなことだとになるでしょう。

  • 古い(例えば2010年の)環境のワケノワカラナイ動作は“自分の期待通り”になっていた。
  • ところが最新の(2015年の)環境のワケノワカラナイ動作は“自分の期待通り”ではなくなった。
  • 文書を“正しい動作”のものに修正するのは面倒だ。
  • だから 2015 年の TeX で「2010 年のワケノワカラナイ動作」をさせることはできないか。

結論をいうと、残念ですが、非常に困難です

ワケノワカラナイ動作は LaTeX のシステムの内部の実装に強く依存するので、そのあたりの詳しい知識がないと、“内部状態”を同じにすることが難しいのです。もちろん、古い環境が“何”であったかの情報は必須です。

あと、たいていのユーザは「正しい動作」にしか関心を持たないため、「ワケノワカラナイ動作」が具体的にどんなものかは(“TeX に詳しい”人であっても)知りません。従って、「ワケノワカラナイ動作」を前提にした質問をしても、それに答えるのは難しいことだと思います。

Z. R. への返信

Re: ファイルパスにピリオドが含まれるかどうかで画像サイズが異なる

- 和田 勇 の投稿
自己解決方法が示されていませんので、みなさんと情報共有のため投稿します。

今回の話題に関係ありそうな以下を参照してください。
http://tex.stackexchange.com/questions/10574/includegraphics-dots-in-filename

今回の修正方法は includegraphics に指定するファイル名を以下のように {} で囲うと対応できます。

    \includegraphics[width=10cm,bb=0 0 512 390]{./test2/{00.1}.png}

ただこの bounding box 情報を指定する場合は、boxedminipageの枠外に表示されてしまうようです。
なので自動計算か予め extractbb で xbb ファイルを作っておくと枠内に収まるようです。

以下のようにマクロ化してテストして(多分)問題なく処理できるようです。
なお、行間調整はいろいろあるかと思いますが \usepackage{setspace} などの利用で解決できるかと思います。あるいは図との間だけであれば横方向ではなく縦方向の vspace を使ってください。

\gdef\myPNG#1{
  \begin{boxedminipage}{0.5\hsize}
    \setstretch{1.5}
    \includegraphics[width=\hsize]{{#1}.png}
    \raggedright\small{#1\\ ()}
  \end{boxedminipage}
}

\begin{figure}[htb]
  \section{\textcolor{blue}{\Large{test2}}}

  \myPNG{./test2/00.1}
  \myPNG{./test2/001}

\end{figure}

飯島 徹 への返信

Re: ファイルパスにピリオドが含まれるかどうかで画像サイズが異なる

- myu myo の投稿

すいません、勘違いしていました

BoundingBoxを使わなければ

ピリオド有り無しによって画像サイズが変わらないという意味だったでしょうか?

BoundingBoxを使わずに画像に横に二つ並べるにはどうしたら良いですか?

飯島 徹 への返信

Re: ファイルパスにピリオドが含まれるかどうかで画像サイズが異なる

- myu myo の投稿

たびたびすいません。

http://www.latex-cmd.com/fig_tab/alignment.html

このページを参考に為てtabularで所望の操作ができそうなことがわかりました。

http://fast-uploader.com/file/6998899712582/

それで質問なのですが、

boundingboxを使っていた時にはピリオド無しのファイルパスだと

bbの値を変えても画像のサイズは変化しなかったのですが

tabularを使った方法だとピリオド有り無しに拘わらず、

変化します。

つまり、これはextractbbが読み込めていないということでしょうか?

あと、画像の下に文字を入れたいのですが

どうしても文字と下の画像の間隔が狭くなりすぎてしまいます。

hspaceで調整できるかと思ったのですが

ここの値を変えても何も起こりません。

どうすれば画像と文字間隔を調整することができますでしょうか?

myu myo への返信

Re: ファイルパスにピリオドが含まれるかどうかで画像サイズが異なる

- 飯島 徹 の投稿
>bbの値を変えても画像のサイズは変化しなかったのですが

やはり BoundingBox に対して間違った認識をしています.先ほど教えたサイトで勉強することをおすすめします.
myu myo への返信

Re: ファイルパスにピリオドが含まれるかどうかで画像サイズが異なる

- Z. R. の投稿

検索でこのスレッドにたどり着いた人のために、「複数ピリオド(ドット)の入った画像ファイル名」の問題の対処法へのリンクを載せておきます。

複数ピリオドがあるファイル名の場合、エンジンやドライバに関係なく、ほぼ間違いなく異常動作を起こします。オプションなどの状況によっては、エラーも何も出ず出力が異常になる場合もあるでしょう。

 


なお、さきほどの回答でこれを書かなかったのは、「“正しい動作”に変えてしまうと“期待通りの出力”にならない」という判断があったからです。