■PS ファイルの記述方法
●PS ファイルはテキストファイルですので,適当なテキストエディターを使って入力します。
%!
gsave % 現在の座標値などを保存
newpath % 新しいパスの構築
100 200 moveto % カレントポイントを(100,200)に移動
300 200 lineto % 絶対位置(300,200)まで線を引く指定
0 0 0 1 setcmykcolor % CMYK の順番で線や文字の指定
stroke % 実際に線を引く
showpage % 頁全体をプリント
grestore % gsave で保存された座標情報などを元に戻す
●% で始まる行はコメント行です。最初の行は %! で始める約束ですが,%!PS または %!PS-Adobe-3.0 としても % 以降は行末までコメント行ですので,問題はありません。続いて gsave を記述し,最後は grestore で終わるのが流儀です。
100 300 moveto
200 0 rlineto % 相対位置(200,0)-->(100,300)+(200,0)=(300,300)
0 200 rlineto % 相対位置(300,300)-->(300,300)+(0,200)=(300,500)
-200 0 rlineto % 相対位置(-200,0)-->(300,500)+(-200,0)=(100,500)
closepath % 図形のパスを閉じる
gsave
0.8 setgray % 枠の中を20%にする網の指定
fill % 塗りつぶす
grestore
5.0 setlinewidth % 5ポイントの線幅の指定
stroke % 実際に線枠を引く
200 600 50 0 360 arc % 円を描く(中心の座標X Y 半径 開始角度 終了角度)
stroke
●lineto は絶対位置の指定ですが,相対位置で指定したい場合は rlineto を使います。 setgray 命令は stroke で線を書くときの線の濃度にも影響するので,fill を実行後,grestore で濃度の情報を元に戻しておきます。続いて文字の指定と出力です。
/Times-Roman findfont % Times-Romanを選択
15 scalefont setfont % 15ポイントの描画フォントに設定
120 420 moveto % 文字を書く位置に移動
(Hello! world) show % Hello! worldと書く
●英数字の場合は括弧 () の中にそのままの文字を入力し,show 命令すればいいのですが,和文の場合は次のように記述します。
/Ryumin-Light-H findfont % リュウミンライト(JIS形式)
10 scalefont setfont
120 520 moveto
(\044\042\044\044) show % 8進数(JIS形式)で "あい" と書く
/GothicBBB-Medium-H findfont % ゴシックBBBミディアム(JIS形式)
12 scalefont setfont
120 620 moveto
<24 22 24 24> show % 16進数(JIS形式)で "あい" と書く
/GothicBBB-Medium-83pv-RKSJ-H findfont % ゴシックBBBミディアム(Shift-JIS形式)
12 scalefont setfont
120 650 moveto
<82 A0 82 A2> show % 16進数(Shift-JIS形式)で "あい" と書く
showpage
grestore
●このように和文の場合は JIS または Shift-JIS 形式でフォントを指定した後,文字を 8 進数(JIS 形式)のコードで記述し,show 命令します。または 16 進数(JIS 形式),16 進数(Shift-JIS 形式)で記述しますが,この場合はコードを <> で括ります。なお Adobe InDesign などアプリケーションが出力する PS ファイルの和文は内部的に処理しているので,(あい) sh などと 8 進数や 16 進数の文字コードではなく,読める形で表現されています。
%!
gsave
newpath
120 100 moveto
400 100 400 120 20 arcto % 接線の指定による円弧
pop pop pop pop % 2つの接点の座標をクリアする
400 250 380 250 20 arcto
pop pop pop pop
100 250 100 230 20 arcto
pop pop pop pop
100 100 120 100 20 arcto
pop pop pop pop
0.7 0 0 0 setcmykcolor
2 setlinewidth
stroke
showpage
grestore
●この例では,XY 座標(120,100)に移動後,arcto 命令で(400,100)とをつなぐ直線と(400,120)とをつなぐ直線とを接線とする半径が 20 の円弧がパスに追加されます。以下同様の処理を行って角丸付きの枠を作ります。●最後に枠の幅や高さ,半径を指定すれば角丸付きの枠ができるというマクロ定義の例を示し,LaTeX2e へ展開することにします。
%!
gsave
newpath
/WW 300 def % 枠の幅の定義
/HH 150 def % 枠の高さの定義
/RR 2 def % 枠の罫幅の定義(座標指定用)
/r 20 def % 枠の半径の定義
/x1 {RR 0.5 mul} def
/y1 {x1} def
/x2 {WW x1 sub} def
/y2 {HH x1 sub} def
/noudo {0.7 0 0 0 setcmykcolor} def
/senhaba {2 setlinewidth} def
r x1 add y1 moveto
x2 y1 x2 y2 r arcto 4 {pop} repeat
x2 y2 x1 y2 r arcto 4 {pop} repeat
x1 y2 x1 y1 r arcto 4 {pop} repeat
x1 y1 x2 y1 r arcto 4 {pop} repeat
noudo
senhaba
stroke
showpage
grestore
●/WW 300 def のように,マクロ定義は「/変数名 値 def」という記述をします。また空白を含む定義は /x1 {RR 0.5 mul} def のように,{}で囲むようにします。後でこの変数を参照する場合は,/ を付けないで変数名を書きます。■LaTeX2e への展開
\documentclass{jbook}
\makeatletter
\newdimen\PS@WIDTH
\newdimen\PS@HEIGHT
\newdimen\PS@RULE
\newdimen\PS@RADIUS
%# \round{幅}{高}{半径}{罫幅}{罫濃}{網}{テキスト}
\long\def\round#1#2#3#4#5#6#7{%
\leavevmode
\hbox to #1{\vbox to #2{\vfill %%%% 角丸
\PS@WIDTH=#1
\PS@HEIGHT=#2
\PS@RADIUS=#3
\PS@RULE=#4
\special{" userdict begin
/sp {65781 div} def
/WW {\number\PS@WIDTH\space sp} def
/HH {\number\PS@HEIGHT\space sp} def
/RR {\number\PS@RULE\space sp} def
/r {\number\PS@RADIUS\space sp} def
/x1 {RR 0.5 mul} def
/y1 {x1} def
/x2 {WW x1 sub} def
/y2 {HH x1 sub} def
end
r x1 add y1 moveto
x2 y1 x2 y2 r arcto 4 {pop} repeat x2 y2 x1 y2 r arcto 4 {pop} repeat
x1 y2 x1 y1 r arcto 4 {pop} repeat x1 y1 x2 y1 r arcto 4 {pop} repeat
gsave #6 setcmykcolor fill grestore
#5 setcmykcolor RR setlinewidth stroke}\par
\nointerlineskip
\vbox to 0pt{\vss\vbox to #2{\vss\hbox to #1{\hss#7\hss}\vss}}}\hfill}}
\makeatother
\begin{document}
\round{100mm}{50mm}{5mm}{.5mm}{.7 0 0 0}{0 0 0 .1}{PostScriptの基本知識}
\end{document}
●この TeX 文書を実際にコンパイルして DVIOUT や GSview などでご確認ください。■PDF/X-1a
●PDF(Portable Document Format)は,PostScript の拡張版として,当初は印刷・出版の世界で使用されてきましたが,現在では文書のやり取りやインターネット上に文書を公開するためのデファクトスタンダードとして広く活用されています。
●TeX でも PDF に変換するツールはいろいろありますが,信頼性の高い印刷用文書として ISO 規格として認定された PDF/X-1a 仕様の PDF として基本的には対応しておりません。ただし,埋め込みのできるフォント(CID/OpenType/TrueType)を使用し,dvipsk でPSファイルを作成してからCMYK対応の Acrobat 7.0 以降で PDF を作成すれば,PDF/X-1a の PDF を作ることができます。
●現在,印刷・出版業界で大きな話題となっている PDF/X-1a の仕様は以下の通りです。
・PDF のバージョンは PDF1.3 であること ・フォントが埋め込まれていること ・画像は実画像が埋め込まれていること ・OPI は禁止されていること ・全てのエレメントは,CMYK か特色を使用していること ・トランスファー関数やハーフトーンスクリーン情報は含めることができないこと ・ファイルのトラッピングが行われているかいないかが明確にされていること ・メディアサイズと仕上がりサイズまたはアートサイズが定義されていること 裁ち落としサイズはオプション ・指定印刷条件を記述するか,ICC 出力プロファイルを特定することにより, 出力インテント(Japan Color 2001 Coated)が指定されていること●なお PDF/X-1a の仕様になっているかどうかは,Adobe Acrobat 6.0 以降で 該当の PDF を開き,プリフライトすれば結果がわかるようになっています。