--- loncom/xml/lontexconvert.pm 2001/05/04 17:38:22 1.3 +++ loncom/xml/lontexconvert.pm 2003/02/03 18:03:53 1.14 @@ -1,8 +1,42 @@ # The LearningOnline Network with CAPA # TeX Conversion Module # +# $Id: lontexconvert.pm,v 1.14 2003/02/03 18:03:53 harris41 Exp $ +# +# Copyright Michigan State University Board of Trustees +# +# This file is part of the LearningOnline Network with CAPA (LON-CAPA). +# +# LON-CAPA is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# LON-CAPA is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LON-CAPA; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# /home/httpd/html/adm/gpl.txt +# +# http://www.lon-capa.org/ +# +# Copyright for TtHfunc and TtMfunc by Ian Hutchinson. +# TtHfunc and TtMfunc (the "Code") may be compiled and linked into +# binary executable programs or libraries distributed by the +# Michigan State University (the "Licensee"), but any binaries so +# distributed are hereby licensed only for use in the context +# of a program or computational system for which the Licensee is the +# primary author or distributor, and which performs substantial +# additional tasks beyond the translation of (La)TeX into HTML. +# The C source of the Code may not be distributed by the Licensee +# to any other parties under any circumstances. +# # 05/29/00,05/30,10/11,10/20 Gerd Kortemeyer -# 05/03/2001 Scott Harrison # 5/4 Gerd Kortemeyer package Apache::lontexconvert; @@ -20,31 +54,46 @@ sub header { my $time=time; if ($ENV{'browser.mathml'}) { &tth::ttminit(); + if ($ENV{'browser.unicode'}) { + &tth::ttmoptions('-L -u1'); + } else { + &tth::ttmoptions('-L -u0'); + } } else { &tth::tthinit(); + if ($ENV{'browser.unicode'}) { + &tth::tthoptions('-L -u1'); + } else { + &tth::tthoptions('-L -u0'); + } } return &Apache::lonxml::xmlbegin(). &Apache::lonxml::fontsettings(). "\n\n". - &Apache::lonxml::registerurl(). + &Apache::lonxml::registerurl(undef,'tex'). "\n\n"; } # ================================================================== Conversion sub converted { - my $texstring=shift; - my $xmlstring; + my $texstring=shift; + my $xmlstring='[UNDISPLAYABLE]'; + eval(<<'ENDCONV'); + { + local $SIG{SEGV}=sub { die; }; if ($ENV{'browser.mathml'}) { $xmlstring=&tth::ttm($$texstring); $xmlstring=~s/\/\/g; $xmlstring=~s/\/\/g; $xmlstring=~s/\/\\<\/p\>/g; $errorstring.=&tth::ttmerror(); - } else { + } else { $xmlstring=&tth::tth($$texstring); $errorstring.=&tth::ttherror(); + } } +ENDCONV return $xmlstring; } @@ -62,6 +111,34 @@ sub footer { return $xmlstring; } +# ------------------------------------------------------------ Message display + +sub to_convert { + my ($string) = @_; + $string=~s/\/ /g; + return &converted(\$string); +} + +sub msgtexconverted { + my $message=shift; + + #FIXME this crap needs to go but right now the -L option might be + #ignored if this isn;t the first time the tth engine is used + #thus the \\document class crap, it makes sure we init the LaTeX stuff + if ($ENV{'browser.mathml'}) { + &tth::ttminit(); + &tth::ttmoptions("-L"); + } else { + &tth::tthinit(); + &tth::tthoptions("-L"); + } + $message=~s/(\$\$.+?\$\$)/&to_convert("\\documentclass{article}".$1)/ge; + $message=~s/(\$.+?\$)/&to_convert("\\documentclass{article}".$1)/ge; + $message=~s/(\\\(.+?\\\))/&to_convert("\\documentclass{article}".$1)/ge; + $message=~s/(\\\[.+?\\\])/&to_convert("\\documentclass{article}".$1)/ge; + return $message.$errorstring; +} + 1; __END__