PS, EPSファイルの編集

(last modified: 2009/05/08)
自分の備忘録のために書いていますが, 中には他の方の役に立つ情報もあるかと思い,公開しています. したがって,必ずしも(すべての環境で)これらの方法が上手くいくかどうかはわかりません. ご了承ください(現在使用している環境は Ubunto Linux 8.10, gnuplot 4.2)
(追記/2009/05/08: 環境をMac OS X 10.5.6に変更し,Mac port経由のgnuplotを使用するようになりました (Ver. 4.2 patchlevel 5). その結果,若干epsの中身が変更になっていますが,基本は一緒です)
  1. gnuplotで図(eps)を作るためのスクリプト
  2. gnuplotでの記号(点)の対応表
  3. gnuplotで生成されたepsファイルを直接いじる方法
  4. psファイルを直接いじる(Acrobatを使わずにpdfに線や文字を記入する)

1. gnuplotで図(eps)を作るためのスクリプト

「for_figure.sh」という名前で以下のスクリプトを作ったならば,
./for_figure.sh datafile.dat
のようにして使う. 複数のデータファイルを使用する場合には,
./for_figure.sh datafile1.dat datafile2.dat
のようにする. それぞれスクリプトの中の「$1」「$2」に対応する.

以下がスクリプト本文. 必要に応じて,適当にコメントをはずしたり, 追加の命令を書き込む必要がある. なお,記号(点)については対応表も載せておいた(必要そうな部分のみ). また,フォントについては

{/Times-Roman    }
{/Times-Italic   }
{/Symbol         }
などを使うことができる.


#!/bin/sh 

# ------------ tmp_fileの設定
comm=./disp.tmp.$$

# ------------ gnuplotのパスを設定
GNUPLOT=/usr/bin/gnuplot

# ------------ gnuplotへの出力
cat << EOF > $comm
#!$GNUPLOT

# ------------ 出力のファイル名などの設定
set terminal postscript eps enhanced "Times-Roman" 30
set output "tmp.eps"

# ------------ 記号(点)の設定
set style line 1 lt 1 pt 1
set style line 2 lt 1 pt 2
set style line 3 lt 1 pt 3
set style line 4 lt 1 pt 4
set style line 5 lt 1 pt 5
set style line 6 lt 1 pt 6
set style line 7 lt 1 pt 7
set style line 8 lt 1 pt 8
set style line 9 lt 1 pt 9
set style line 10 lt 1 pt 10
set style line 11 lt 1 pt 11
set style line 12 lt 1 pt 12
set style line 13 lt 1 pt 13


# ------------ x ラベルと y ラベルの設定(symbolも使用可) 
set xlabel "{/Times-Italic k}" offset 0, 0.3 font "Times-Roman,34"
set ylabel "P({/Times-Italic k})" offset +2.5, 0 font "Times-Roman,34"

# ------------ 複数の図をまとめるときのラベル
set label "(a)" at 2.0, 0.0001 font "Times-Roman,40" 

##### 目盛軸の設定
# ------------ 対数目盛の使用
set logscale x
set format x "10^{%L}"
set logscale y
set format y "10^{%L}"

# ------------ 普通の目盛の使用(桁数は任意に調整可)
#set format x "%2.0f"
#set xtics 2.0
#set mxtics 2           # 主目盛を2分割
#set format y "%3.2f"
#set ytics 0.05
#set mytics 2

# ------------ 目盛の範囲
set xrange [1:500]
set yrange [0.00001:1]
#set yrange [0.00001:1]
#set zrange [0:0.2]

# ------------ 3次元プロットを2次元に射影した分布の出力(gray mode用)
#set format cb "%3.2f"
#set mcbtics 2
#set cbra [0:0.15]
#unset colorbox
#set pm3d map

#set palette gray negative
# ------------ 等高線表示用
#set data style lines
#set nosurface
#set contour base
#set view 0,0

# ------------ 図の大きさの設定(図をまとめて Tex で出力する際に必要)
set lmargin 8
set bmargin 3
set rmargin 5
set tmargin 1

# ----------- もし図の形を正方形にするのなら
#set size square

# ----------- 凡例を入れるなら set key、入れないのなら set nokey
#set key left bottom
#set nokey

# ----------- 実際に plot
#plot "$1" w p linestyle 9 notitle, 0.1*x**(-2) w l notitle
#plot "$1" w yerr linestyle 9 notitle, 0.1*x**(-2) w l notitle    #エラーバーあり

EOF

LC_ALL=C $GNUPLOT $comm

# End of Script
rm $comm

2. gnuplotでの記号(点)の対応表

3. gnuplotで生成されたepsファイルを直接いじる方法

出力したepsが,論文用だったためにモノクロだったとして, しかしこれをカラーにしてPower Pointで使いたいと考えたとする. その際,もう一度データから図を作り直すのは非常に面倒くさい. また,ラベルを(a),(b),(c)と書いたにも関わらず, 図(b)と図(c)しか使わないことになったとき,ラベルを変更して図を作り直す必要が生じる. そのような面倒は,epsファイルを直に手書きで編集すれば回避できる. 以下がその方法.gnuplotで作ったepsファイルの中に以下のような文章の部分があるので, 必要に応じて編集する.

4. psファイルを直接いじる(Acrobatを使わずにpdfに線や文字を記入する)

基本用途: pdfファイルをpsファイルに変換して,コメントや線などを追加する.

例えば論文のcopyrightを提出する際に, 手書き署名以外に名前や論文タイトルなどを印刷する必要がある場合に使えます. または,論文の校正刷りでpdfファイルが送られてきたときにも使えるのかもしれません. 普通はAcrobatなどを使うのでしょうが,使わずにpdfファイルの編集を行うように見せかける(?)方法.

  1. pdf2ps (pdftops?) を使用してpdfをpsに変換
  2. psファイルを直に編集
  3. psファイルをpdfに戻す(pstopdf)

例えば,psファイルの1ページ目にコメントを入れたい場合には,次のような箇所を探す

cleartomark end end pagesave restore
showpage
%%PageTrailer
%%Page: 2 2
%%BeginPageSetup
自分が試した範囲では,各ページの最後には
cleartomark end end pagesave restore
showpage
と書かれていた. そこで,
cleartomark end end pagesave restore
の前の行に必要な部分を挿入する.