
.ipe
を使用すると、ファイルから単一のビューを抽出できることがわかっていますiperender -eps -view 3 a.ipe a3.eps
。
.ipe
ファイルを引数として受け取り、ファイルに含まれるビューの数に関係なく、すべてのビューを抽出するスクリプトを作成したいと考えています.ipe
。
そのためには、ファイル内のビューをカウントする関数が必要です.ipe
。失敗するまでビューごとに抽出を試みることはできますが、これは無駄な解決策のようです。その後、別の理由で失敗した場合はiperender
、何も表示されずに失敗します。
ipe
ファイル内のビューの数だけを出力する関連ツールはありますか.ipe
?
答え1
IPE ファイル形式は xml なので、一般的な xml ツールを使用できます。たとえば、次の IPE ページには 2 つのビューが含まれており、1 つは長方形で、もう 1 つは 2 つの長方形です。
<page>
<layer name="alpha"/>
<layer name="beta"/>
<view layers="alpha" active="alpha"/>
<view layers="alpha beta" active="beta"/>
<path layer="alpha" stroke="orange">
16 832 m
16 800 l
48 800 l
48 832 l
h
</path>
<path layer="beta" stroke="orange">
64 784 m
64 816 l
32 816 l
32 784 l
h
</path>
</page>
view
冒頭に2つのタグがあります。xmllint
。たとえば(他にも多くのツールがあります)を使用して、タグの数を抽出できます(https://stackoverflow.com/a/35576314/):
xmllint --xpath "count(//view)" myfile.ipe
これを小さな bash スクリプトに記述します。
nrviews=`xmllint --xpath "count(//view)" $1`
fbase=`basename "$1"`
fname="${fbase%.*}"
for VIEW in $(seq 1 $nrviews)
do
iperender -eps -view $VIEW $1 $fname.$VIEW.eps
done