需要あるらしいので貼ってみた。
TeX数式部分から背景透明のGIF続き
意外に需要があったのではりはりする。あ、必要なのはBash/Perl/ImageMagick/platex/dvipsってところね。VineLinuxなら確実にそろう。テスト環境はMacOSX WorkShopとVineLinux 3.2。
まず、CUIのフロントエンドmkimgから。これはBash。これにTeXファイルを食わせるとcutterというPerlがTeXの数式環境部分eqpartとプレアンブルheadderに分解するんだ。あと、eqpartいっこいっことheadderからミニTeXファイルを作らせて、それをconvertしてpngかgifにするんだ。それをeq2imgというんだよ。もちろんオプションで完全に制御できるんだけど、設定ファイルをホームに置けば自動で読むんだよ。はっはっは。
mkimg
mkimg texfile [texfile2...]
mkimg section*.tex
も可。-iで実はTeXの数式部分を直書きするという荒技が可能。
mkimg -i
で出るプロンプトに対して、
\sin(x)
とか入力してみろ。
#!/bin/bash # mkimg -- CUI frontend of cutter and eq2img -- TimeStamp="Time-stamp: <05/09/18 16:13:57 fu7mu4>" Version="2.0" ScriptName=$(basename "$0") ShowUsage () { cat <<EOF $ScriptName Script for making equation gif/png from tex source $ScriptName :USAGE $ScriptName [-h|-v|-ne|-nq|-c color|-f filename|texfile1 [texfile2 ..] ] Show and Quit -h :show help and quit -v :show version and quit Input -hf headderfile :use anothre file as headderfile -i :allow to directory input tex-command. use this if file was empty -ni:not allow to input; igonre file if that file was empty Output Files -p : as png format -g : as gif format -c color: change text color, color name, white, hex '#ffffff' ... Output File Name -of basename: change base name of output files -0 : add 0 before number of output files -x : don't add 0 before number of output files (default) Other Files -e :with eps -ne:no eps -q :with eq files -nq:no equation files Message and Warning -nm:no message -m :message -nw:no warning -w :with warning If you want more infomation , see readme.tex EOF } #default value Need0="NO" while [ "$1" != "" ] do if [ -r "$1" ] ; then #Input is readble readbles=( ${readbles[@]} "$1" ) else if [ "$1" == "-h" ] ; then ##help ShowUsage exit elif [ "$1" == "-v" ] ; then echo "mkgif Version $Version" echo "Last Modified $TimeStamp" ##help exit elif [ "$1" == "-0" ] ; then Need0="YES" elif [ "$1" == "-p" ] ; then Format="png" elif [ "$1" == "-g" ] ; then Format="gif" elif [ "$1" == "-x" ] ; then Need0="NO" elif [ "$1" == "-e" ] ; then NeedEPS="YES" elif [ "$1" == "-ne" ] ; then NeedEPS="NO" elif [ "$1" == "-q" ] ; then NeedEq="YES" elif [ "$1" == "-nq" ] ; then NeedEq="NO" elif [ "$1" == "-m" ] ; then NeedMessage="YES" elif [ "$1" == "-nm" ] ; then NeedMessage="NO" elif [ "$1" == "-w" ] ; then NeedWarning="YES" elif [ "$1" == "-nw" ] ; then NeedWarning="NO" elif [ "$1" == "-hf" ] ; then if [ "$2" != "" ] ; then if [ -r "$2" ] ; then DEFHEADDER="$2" fi shift else ShowUsage fi elif [ "$1" == "-of" ] ; then if [ "$2" != "" ] ; then OutPut="$2" shift else ShowUsage fi elif [ "$1" == "-c" ] ; then if [ "$2" != "" ] ; then ForeColor="$2" shift else ShowUsage fi else ShowUsage fi fi shift done # OutPut=${OutPut:-"image"} # generate eq2gifp options if [ "$NeedEPS" == "YES" ] ; then Eq2Options=( ${Eq2Options[@]} "-e" ) else Eq2Options=( ${Eq2Options[@]} "-ne" ) fi if [ "$NeedEq" == "YES" ] ; then Eq2Options=( ${Eq2Options[@]} "-q" ) else Eq2Options=( ${Eq2Options[@]} "-nq" ) fi if [ "$NeedWarning" == "YES" ] ; then Eq2Options=( ${Eq2Options[@]} "-w" ) else Eq2Options=( ${Eq2Options[@]} "-nw" ) fi if [ "$NeedMessage" == "YES" ] ; then Eq2Options=( ${Eq2Options[@]} "-m" ) else Eq2Options=( ${Eq2Options[@]} "-nm" ) fi if [ "$ForeColor" != "" ] ; then Eq2Options=( ${Eq2Options[@]} "-c" "$ForeColor" ) fi if [ "$Format" == "png" ] ; then Eq2Options=( ${Eq2Options[@]} "-p" ) else Eq2Options=( ${Eq2Options[@]} "-g" ) fi if [ "$DEFHEADDER" != "" ] ; then Eq2Options=( ${Eq2Options[@]} "-hf" "$DEFHEADDER" ) fi # execute perl script to cutting TeX source to get equation parts file # eqpart1, eqpart2, ... #echo "Options: ${Eq2Options[@]}" cutter "${readbles[@]}" # Bad source code sometime stop platex compiling to wait your input, echo "$ScriptName PID: $$" i=1 while [ "$i" -le 999 ] do if [ $i -lt 10 ] ; then num=00${i} elif [ $i -lt 100 ] ; then num=0${i} else num=${i} fi inputfile=eqpart${i} if [ "$Need0" == "YES" ]; then outputfile=${OutPut:-"eqpart"}${num} else outputfile=${OutPut}${i} fi if [ -r "$inputfile" ] ; then #echo "${Eq2Options[@]}" eq2img "$inputfile" "${Eq2Options[@]}" "-of" "$outputfile" i=$(expr $i + 1) else i=1000 #escape while loop fi done