馬鹿な方法
気合でTeX出力
よい子は真似しない。仮に、
TeX capacity exceeded, sorry.
とか出てもめげない。
気合でPostScript編集
これは真似してもいいんじゃない?
例を1つ。koch-curve.psとでも名前付けて。
%!
/ed {exch def} def
/koch { % level len
2 dict begin /len ed /level ed
level 1 ge {
level 1 sub len 3 div
2 copy koch
2 copy 60 rotate koch
2 copy -120 rotate koch
60 rotate koch
}{
len 0 rlineto
} ifelse
end
} def
/kochcurve { % level len x0 y0
gsave translate 0.1 setlinewidth
newpath 0 0 moveto koch stroke
grestore
} def
1 setlinecap 1 setlinejoin
5 400 100 100 kochcurve
showpage
開いてみるとあら不思議。
ちゃんとしたepsに変換する。(sedがいるらしい。)
ren %1 %1.org
gswin32c -sOutputFile=zzz.tmp -sDEVICE=epswrite -dBATCH -dNOPAUSE %1.org
gswin32c -sDEVICE=bbox -dBATCH -dNOPAUSE %1.org 2> zzz2.tmp
echo %%!PS-Adobe-3.0 EPSF-3.0 > zzz3.tmp
copy zzz3.tmp + zzz2.tmp zzz4.tmp
sed -e "1,3D" zzz.tmp > zzz5.tmp
copy zzz4.tmp + zzz5.tmp %1
このバッチファイルでBoundingBoxもつく。
なお、
for %%F in (*.ps) do call eps2eps %%F %%~nF.eps
というやり方もある。
#! /bin/bash
##############################################################
# convert EPS files (with Times or Helvetica)
# to EPS files without fonts
#
# Copyright (c) 2005 Atsushi Mori <mori@buran.u-gakugei.ac.jp>
##############################################################
if [ $# -ne 2 ]; then
echo "Usage:"
echo " $0 input.eps output.eps"
exit 99
fi
#
# Conversion
#
gs -q -sDEVICE=bbox -dNOPAUSE -dSAFER -dBATCH $1 > Btmpfile.$$ 2>&1
eps2eps -r10000 $1 $2
grep -v '^%%BoundingBox:' $2 | grep -v '^%%HiResBoundingBox:'> tmpfile.$$
head -1 tmpfile.$$ > $2
cat Btmpfile.$$ >> $2
tail +2 tmpfile.$$ >> $2
#
# Remove temporary files
#
rm -f tmpfile.$$ Btmpfile.$$
使い方は
eps2cleaneps input.eps output.eps
だとか。
PostScriptをSVGへ(あえてpstoeditを使わない)
使い方:
cat ps2svg.ps hoge.ps | gs -q -dNOPAUSE -dBATCH \
> -sDEVICE=pswrite -sOutputFile=/dev/null -f - > hoge.svg
参考リンク
最終更新:2009年03月01日 03:17