]> git.rmz.io Git - dotfiles.git/blobdiff - bin/tex2im
merge bin from shada
[dotfiles.git] / bin / tex2im
diff --git a/bin/tex2im b/bin/tex2im
new file mode 100755 (executable)
index 0000000..ab26ec7
--- /dev/null
@@ -0,0 +1,233 @@
+#!/bin/bash
+#############################################################
+# TEX2IM:   Converts LaTeX formulas to pixel graphics which #
+#           can be easily included in Text-Processors like  #
+#           M$ or Staroffice.                               #
+#                                                           #
+# Required software: latex, convert (image magic)           #
+# to get color, the latex color package is required         #
+#############################################################
+# Version 1.8  (http://www.nought.de/tex2im.html)           #
+# published under the GNU public licence (GPL)              #
+# (c) 14. May 2004 by Andreas Reigber                   #
+# Email: anderl@nought.de                                   #
+#############################################################
+
+#
+# Default values
+#
+
+resolution="150x150"
+format="png"
+color1="white"
+color2="black"
+trans=0
+noformula=0
+aa=1
+extra_header="$HOME/.tex2im_header"
+
+if [ -f ~/.tex2imrc ]; then
+       source ~/.tex2imrc
+fi
+
+OPTERR=0
+
+if [ $# -lt 1 ]; then
+       echo "Usage: `basename $0` [options] file.tex, for help give option -h" 1>&2
+       exit 1
+fi
+
+while getopts hanzb:t:f:o:r:vx: Optionen; do
+       case $Optionen in
+               h) echo "tex2im [options] inputfile
+
+The content of input file should be _plain_ latex mathmode code!
+Alternatively, a string containing the latex code can be specified.
+
+Options:
+-v         show version
+-h         show help
+-a         change status of antialiasing
+           default is on for normal mode and
+                         off for transparent mode
+-o file    specifies output filename, 
+           default is inputfile with new extension
+-f expr    specifies output format, 
+           possible examples: gif, jpg, tif......
+           all formates supported by "convert" should work, 
+           default: png
+-r expr    specifies desired resolution in dpi, 
+           possible examples: 100x100, 300x300, 200x150, 
+           default is 150x150
+-b expr    specifies the background color
+           default: white
+-t expr    specifies the text color
+           default: black
+-n         no-formula mode (do not wrap in eqnarray* environment)
+           default: off
+-z         transparent background
+           default: off
+-x file    file containing extra header lines.
+           default: ~/.tex2im_header"
+                       exit 0 ;;
+               v) echo "TEX2IM Version 1.8"
+                       exit 0 ;;
+               r) resolution=$OPTARG;;
+               o) outfile=$OPTARG;;
+               z) trans=1
+                  aa=0;;
+               a) if [ $aa -eq 0 ]; then 
+                               aa=1 
+                       else 
+                               aa=0
+                       fi;;
+               n) noformula=1;;
+               b) color1=$OPTARG;;
+               t) color2=$OPTARG;;
+               f) format=$OPTARG;;
+      x) extra_header=$OPTARG;;                
+       esac
+done
+
+#
+# Generate temporary directory
+#
+
+if test -n "`type -p mktemp`" ; then
+       tmpdir="`mktemp /tmp/tex2imXXXXXX`"
+       rm $tmpdir
+       mkdir $tmpdir
+else
+       tmpdir=/tmp/tex2im$$
+       if [ -e $tmpdir ] ; then
+               echo "$0: Temporary directory $tmpdir already exists." 1>&2
+               exit 1
+       fi
+       mkdir $tmpdir
+fi
+homedir="`pwd`" || exit 1  
+
+#
+# Names for input and output files
+#
+
+while [ $OPTIND -le $# ]
+do
+
+eval infile=\$${OPTIND}   
+
+if [ -z $outfile ]; then       
+       if [ -e "$infile" ]; then
+               base=`basename ${infile} .tex` ;
+               outfile=${base}.$format
+       else
+               outfile=out.$format
+       fi
+fi
+
+#
+# Here we go
+#
+
+(
+cat << ENDHEADER1
+\documentclass[12pt]{article}
+\usepackage{color}
+\usepackage[dvips]{graphicx}
+\pagestyle{empty}
+ENDHEADER1
+) > $tmpdir/out.tex
+
+#
+# Do we have a file containing extra files to include into the header?
+#
+
+if [ -f $extra_header ]; then
+       (
+       cat $extra_header
+       ) >> $tmpdir/out.tex
+fi
+
+if [ $noformula -eq 1 ]; then
+(
+cat << ENDHEADER2
+\pagecolor{$color1}
+\begin{document}
+{\color{$color2}
+ENDHEADER2
+) >> $tmpdir/out.tex
+else
+(
+cat << ENDHEADER2
+\pagecolor{$color1}
+\begin{document}
+{\color{$color2}
+\begin{eqnarray*}
+ENDHEADER2
+) >> $tmpdir/out.tex
+fi
+
+if [ -e "$infile" ]; then
+       cat $infile >> $tmpdir/out.tex
+else
+       echo $infile >> $tmpdir/out.tex
+fi     
+
+if [ $noformula -eq 1 ]; then
+(
+cat << ENDFOOTER
+}\end{document}
+ENDFOOTER
+) >> $tmpdir/out.tex
+else
+(
+cat << ENDFOOTER
+\end{eqnarray*}}
+\end{document}
+ENDFOOTER
+) >> $tmpdir/out.tex
+fi
+
+cd $tmpdir
+for f in $homedir/*.eps; do
+    test -f ${f##*/} || ln -s $f . # multi-processing!
+done
+latex -interaction=batchmode out.tex > /dev/null
+cd "$homedir"
+dvips -o $tmpdir/out.eps -E $tmpdir/out.dvi 2> /dev/null
+
+#
+# Transparent background
+#
+
+if [ $trans -eq 1 ]; then
+       if [ $aa -eq 1 ]; then
+               convert +adjoin -antialias -transparent $color1 -density $resolution $tmpdir/out.eps $tmpdir/out.$format        
+       else
+               convert +adjoin +antialias -transparent $color1 -density $resolution $tmpdir/out.eps $tmpdir/out.$format        
+       fi
+else   
+       if [ $aa -eq 1 ]; then
+               convert +adjoin -antialias -density $resolution $tmpdir/out.eps $tmpdir/out.$format     
+       else
+               convert +adjoin +antialias -density $resolution $tmpdir/out.eps $tmpdir/out.$format     
+       fi
+fi
+
+
+if [ -e $tmpdir/out.$format ]; then
+       mv $tmpdir/out.$format $outfile
+else
+       mv $tmpdir/out.$format.0 $outfile
+fi
+
+let OPTIND=$OPTIND+1
+outfile=""
+done
+
+#
+# Cleanup
+#
+
+rm -rf $tmpdir 
+exit 0