こいつの引数が大変すぎるから、mkimgが必要なんだ。実は~/.eq2imgというファ
イルを直読みするので~/.eq2imgに書き込み権限を許すと任意のコマンドが実行
可能なので注意しろよ。
#!/bin/bash # eq2img -- equation part of tex source to gif/png converter # using platex , dvips and ImageMagick -- TimeStamp="Time-stamp: <06/08/14 01:43:10 fu7mu4>" Version="1.0macosx-vine" ScriptName=$(basename "$0") INITFILE="${HOME}/.eq2img" ### CODE ### ShowUsage () { cat <<EOF $ScriptName Script for making transparent gif/png $ScriptName :USAGE $ScriptName {-h|-v} $ScriptName [-ne|-nq|-c color|-hf headderfile|-of outputfile|eqfile] -h :show help and quit -v :show version and quit -g / -p : convert to gif/png format -e / -np : with/without eps -q / -nq : need/remove equation file after this run -m / -nm : with/without message -w / -nw : with/without warning -i / -ni : input/don't input tex command directory -c color : change another foregrounf color -hf file : change headder file name -of file : change output file name EOF } ShowPara () { cat <<EOF $ScriptName Script is now configured values ... INITFILE $INITFILE DEFHEADDER $DEFHEADDER SOURCE $SOURCE OUTPUT $OUTPUT TMPDIR $TMPDIR Format $Format Color $Color NeedEPS $NeedEPS NeedEq $NeedEq EOF } ### read from init file ### if [ -r "$INITFILE" ] ; then . "$INITFILE" fi ### read from arguments of this script while [ "$1" != "" ] do if [ -r "$1" ] ; then #Input is readble readble="$1" else if [ "$1" == "-h" ] ; then ##help ShowUsage exit elif [ "$1" == "-v" ] ; then echo "$ScriptName Version $Version" echo "Last Modified $TimeStamp" ##help exit elif [ "$1" == "-batch" ] ; then TeXmode="batch" elif [ "$1" == "-nonstop" ] ; then TeXmode="nonstop" elif [ "$1" == "-p" ] ; then Format="png" elif [ "$1" == "-g" ] ; then Format="gif" elif [ "$1" == "-nw" ] ; then NeedWarning="NO" elif [ "$1" == "-w" ] ; then NeedWarning="YES" elif [ "$1" == "-nm" ] ; then NeedMessage="NO" elif [ "$1" == "-m" ] ; then NeedMessage="YES" elif [ "$1" == "-ne" ] ; then NeedEPS="NO" elif [ "$1" == "-e" ] ; then NeedEPS="YES" elif [ "$1" == "-nq" ] ; then NeedEq="NO" elif [ "$1" == "-q" ] ; then NeedEq="YES" elif [ "$1" == "-i" ] ; then NeedInput="YES" elif [ "$1" == "-ni" ] ; then NeedInput="NO" elif [ "$1" == "-hf" ] ; then if [ "$2" != "" ] ; then DEFHEADDER=$2 shift else ShowUsage fi elif [ "$1" == "-of" ] ; then if [ "$2" != "" ] ; then OUTPUT=$2 shift else ShowUsage fi elif [ "$1" == "-c" ] ; then if [ "$2" != "" ] ; then Color=$2 shift else ShowUsage fi else SOURCE=${readble:-$1} ##SOURCE is new file fi fi shift done ### default variables DEFHEADDER=${DEFHEADDER:-"headder"} HEADDER=${TEXHEADDERFILE:-$DEFHEADDER} SOURCE=${readble:-"eq2gif$$"} OUTPUT=${OUTPUT:-$SOURCE} NeedMessage=${NeedMessage:-"YES"} NeedWarning=${NeedWarning:-"YES"} NeedEPS=${NeedEPS:-"YES"} NeedEq=${NeedEq:-"YES"} NeedInput=${NeedInput:-"NO"} TeXmode=${TeXmode:-"batch"} Color=${Color:-"yellow"} TMPDIR=${DEFTMPDIR:-"/tmp/eq2img$$"} Format=${Format:-"gif"} ### variables SECTION END ### ## SHOW PID ## #in order to kill this process when platex waiting for your input if [ $NeedMessage == "YES" ] ; then echo "$ScriptName 's PID : $$" else if [ $TeXmode != "batch" ]; then if [ $TeXmode != "nonstop" ] ; then echo "$ScriptName 's PID :$$" fi fi fi ## Make TMPDIR ## if [ ! -d "$TMPDIR" ] ; then mkdir "$TMPDIR" fi if [ ! -d "$TMPDIR" ] ; then if [ $NeedWarning == "YES" ]; then echo "Cannot Make $TMPDIR , exit" echo "check DEFTMPDIR variable" fi exit 1 fi ## Define file names ## TMPBASE="${TMPDIR}/${SOURCE}" TMPTEX="${TMPBASE}.tex" TMPAUX="${TMPBASE}.aux" TMPLOG="${TMPBASE}.log" TMPDVI="${TMPBASE}.dvi" TMPEPS="${TMPBASE}.eps" TMPGIF="${TMPBASE}.${Format}" ### making tex file section ### ## make headder ## if [ -r "$HEADDER" ]; then cat "$HEADDER" > "$TMPTEX" #headder exist else echo '\documentclass[12pt]{article}' > "$TMPTEX" #use default headder echo '\usepackage{amsmath,amssymb}' >> "$TMPTEX" echo '\begin{document}' >> "$TMPTEX" fi echo '\pagestyle{empty}' >> "$TMPTEX" #pagestyle empty is needed for dvips ## merge headder with source of tex ## if [ -r "$SOURCE" ]; then cat "$SOURCE" >> "$TMPTEX" else if [ $NeedInput == "YES" ] ; then echo "type tex command , that treat as in \[...\] env" read -er TEXLINEINPUT ## directory tex source input echo '\[' >> "$SOURCE" echo $TEXLINEINPUT >> "$SOURCE" echo '\]' >> "$SOURCE" cat "$SOURCE" >> "$TMPTEX" else if [ $NeedWarning == "YES" ] ; then echo "can not read $SOURCE and not recieve directly input" fi /bin/rm -rf "$TMPDIR" exit fi fi echo '\end{document}' >> "$TMPTEX" ## remove equation part file if [ "$NeedEq" != "YES" ] ; then if [ -e "$SOURCE" ] ; then /bin/rm -f "$SOURCE" fi fi ### making tex file section ### cd "$TMPDIR" ### compile and convert ### ## platex compile TEX->DVI## if [ "$TeXmode" == "batch" ] ; then platex -interaction=batchmode "$TMPTEX" > /dev/null 2> /dev/null elif [ "$TeXmode" == "nonstop" ] ; then platex -interaction=nonstopmode "$TMPTEX" > /dev/null 2> /dev/null else platex "$TMPTEX" > /dev/null 2> /dev/null fi if [ ! -r "$TMPDVI" ] ; then if [ $NeedWarning == "YES" ] ; then echo "DVI file $TMPDVI is not exist" fi exit 1 fi ## by dvips ,DVI -> EPS dvips -q -E "$TMPDVI" -o "$TMPEPS" if [ ! -r "$TMPEPS" ] ; then if [ $NeedWarning == "YES" ] ; then echo "Enhanced PostScript file $TMPEPS is not exist" fi exit 1 fi ## EPS -> GIF , by convert (ImageMagick) convert -density 800x800 "$TMPEPS" -transparent white -fill "$Color" -fuzz 15% -opaque black "$TMPGIF" ##convert # first file name is input (format is automatic detected) # second file name is output (format is automatic detected) # -density XxY :resolove along with x and y direction (X,Y dpi) # -transparent color : transparent an area where is painted in that # -color fill color area : fill color in an area where is given bellow # "-opaque" option # -fuzz parcent : error for color # -opaque color : return an area where patinted given color cd "$OLDPWD" ### END SECTION ### ## move need files if [ $NeedEPS == "YES" ] ; then cp "$TMPEPS" "${OUTPUT}.eps" fi cp "$TMPGIF" "${OUTPUT}.${Format}" ## remove the others /bin/rm -rf "$TMPDIR"