You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdenetwork/kopete/plugins/latex/kopete_latexconvert.sh

235 lines
4.9 KiB

#!/bin/sh
#############################################################
# 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=1
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] latex_expression
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
# Kopete does not need to parse the content of a file.
#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