文章内の画像のみを表示する方法

文章内の画像のみを表示する方法

- matsumoto takuma の投稿
返信数: 10
こんにちわ。
texファイル本文の中の画像データ(includegraphicsでjpeg画像を使用)のみを抽出して表示するためにはどういう工夫が必要でしょうか。

具体的に申しますと、現在千ページ弱の長い文章の中に百個程度のカラー画像が入っているのですが、印刷する際にすべてカラーページで出力すると経費がかさむため、その文章自体は\usepackage[draft]{graphicx}の形で文章+単なる枠として出力し、あとで巻頭カラー集として、文章の入っていない画像のみを抜粋したいと思っています。

ゆえに画像のみを出力し巻頭カラー集を出力するpackageと、draftの形で枠のみ出力し文章のみを白黒で出力するpackageの2つを作成し、簡易に切り替えて使えたらな、と思っています。

このうち前者(文章中のincludegraphicsのみを拾うような仕組み)の作成の仕方がどうしても思い浮かびません。

お手数をおかけいたしますが、何卒よろしくお願い申し上げます。



matsumoto takuma への返信

Re: 文章内の画像のみを表示する方法

- 奥村 晴彦 の投稿
Unix/Mac/Linuxならコマンドで
grep '\includegraphics' *.tex >figuresonly.tex
ですが(という意味でいいんでしょうか)。
奥村 晴彦 への返信

Re: 文章内の画像のみを表示する方法

- TONE Kozaburo の投稿

Windows なら Gow (Gnu on Windows)をインストールすれば grep が使えます。

解説記事:Gow のインストール・使い方

TONE Kozaburo への返信

Re: 文章内の画像のみを表示する方法

- 奥村 晴彦 の投稿
Gowってのは知りませんでした(うちの大学のWindows機にはCygwinをインストールしていただいているので,Windowsが苦手な私でもかろうじて使えます)。
奥村 晴彦 への返信

Re: 文章内の画像のみを表示する方法

- KUROKI Yusuke の投稿
出現順がアルファベット順でない *.tex ファイルから,出現順に includegraphics を取り出したいのではないか,と想像しました.

.aux に書き出しておくのが王道でしょうか?(私の手には余りますので他の方にお願いしたく.)

% なお,落とし穴を先に埋めておくと……grep で済むためにはincludegraphicsがすべての箇所で1行で記述されている,などの仮定も必要ですね.
KUROKI Yusuke への返信

Re: 文章内の画像のみを表示する方法

- matsumoto takuma の投稿
表現がわかりにくかったようで失礼いたしました。現状、
\documentclass[uplatex]{jsarticle}
\begin{document}
ああああ
\input{A.tex}
いいいい
\input{C.tex}
うううう
\input{B.tex}
\end{document}

のようにいくつかのtexファイルを呼び出してつないでいる1つのtexファイルがあります(X.texと呼びます)があります。上記でいうA.texやC.tex、B.texにはそれぞれ、

\includegraphics[width=5cm]{p.jpg}
\includegraphics[width=5cm]{g.jpg}

のような任意の画像が含まれ、それを別フォルダから呼び出している状態です。

X.texをそのままタイプセットすると、「ああああ」「いいいい」「うううう」といった文字の上、A, B, Cのファイルがそのまま現れますから、カラー画像pや画像gも含まれてしまいます。

ですが、usepackage[draft]{graphicx}とすれば、画像p、gは単なる枠になるため、カラー印刷の手間がはぶけます。

このX.texのプリアンブルに何か工夫をして、画像pと画像g(「ああああ」などの文字やA, B, Cのファイルの文字データは拾わない)のみを拾っていくことができないか、と考えています。そうすればプリアンブルで切り替えをして、画像をワクだけにした白黒原稿と、画像のみを表示した巻頭カラー集の2つが作成できるはずです。

ちなみに使用環境は主にmacですが、windowsも使用しており、ともにtexが使えます。

お手数をおかけいたします。よろしくお願いいたします。
matsumoto takuma への返信

Re: 文章内の画像のみを表示する方法

- TONE Kozaburo の投稿
  1. 画像をワクだけにした白黒原稿
  2. 画像のみを表示した巻頭カラー集

(1)はドキュメントクラスの draft オプションで可能ですね。
(2)は画像のみの原稿(カラー集)なら grep を用いて \includegraphics の行を列記した別ファイル(原稿)の TeX ソースを作成するのが現実的だと考えます。

呼ばれる子ファイルが複数ありアルファベット順に並んでいないならバッチファイルやスクリプトで順に処理するのが良いと私は思います。

TONE Kozaburo への返信

Re: 文章内の画像のみを表示する方法

- KUROKI Yusuke の投稿
> (2)は画像のみの原稿(カラー集)なら grep を用いて \includegraphics の行を列記した別ファイル(原稿)の TeX ソースを作成するのが現実的だと考えます。

私も自分でやるなら,そうすると思います.
KUROKI Yusuke への返信

Re: 文章内の画像のみを表示する方法

- みなも の投稿
includegraphics を別ファイルに書き出すサンプルです。
サンプルですので,あんまり深いことは考えてません。
適宜改造するのが前提です。

\newwrite\FigFile
\immediate\openout\FigFile=FigFile.tex\relax
\immediate\write\FigFile{%↓オプションはお好みで
  \string\documentclass{jarticle}}%
\immediate\write\FigFile{%
  \string\usepackage{graphicx}}% 同じく
\immediate\write\FigFile{\string\begin{document}}
\AtEndDocument{{%
  \immediate\write\FigFile{\string\end{document}}%
  \immediate\closeout\FigFile}}
\let\oldincludegraphics=\includegraphics
\def\includegraphics[#1]#2{%
  \immediate\write\FigFile{%
  \string\includegraphics[#1]{#2}%
  \string\newpage}%\newpage不要なら\stringごとカット
  \oldincludegraphics[#1]{#2}}

これをプリアンブルの最後にでも書き込んでおけば,
FigFile.tex というファイルに \includegraphics を
書き込んでくれるはずです。

FigFile.tex は直接 TeX にかけられるはずです。
みなも への返信

Re: 文章内の画像のみを表示する方法

- matsumoto takuma の投稿
お返事が遅れて申し訳ありません。
みなも様の作成していただいたサンプルファイル、うまくいきました。
感激のあまり、しばらく体が固まってしまいました(笑)
本当にTeXとはすばらしいものですね
いっそう好きになるとともに、もっと勉強しなくては、と向上心をかきたてられました。

ご質問にお応えいただいた皆様に心から感謝申し上げます。
ありがとうございました。