--- loncom/xml/londefdef.pm 2002/11/07 19:33:52 1.99 +++ loncom/xml/londefdef.pm 2003/09/30 19:51:44 1.176 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.99 2002/11/07 19:33:52 albertel Exp $ +# $Id: londefdef.pm,v 1.176 2003/09/30 19:51:44 sakharuk Exp $ # # # Copyright Michigan State University Board of Trustees @@ -25,8 +25,7 @@ # /home/httpd/html/adm/gpl.txt # # http://www.lon-capa.org/ -# -# Copyright for TtHfunc and TtMfunc by Ian Hutchinson. +## 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 @@ -44,1254 +43,1713 @@ package Apache::londefdef; -use Apache::lonnet; +use Apache::lonnet(); use strict; use Apache::lonxml; use Apache::File(); use Image::Magick; +use Apache::lonmenu(); +use Apache::lonmeta(); + +$Apache::londefdef::TD_redirection=0; BEGIN { - &Apache::lonxml::register('Apache::londefdef',('a','abbr','acronym','address','allow','applet','area','b','base','basefont','bgo','bgsound','big','blink','blockquote','blankspace','body','br','button','caption','center','cite','code','col','colgroup','dd','del','dfn','dir','div','dl','dt','em','embed','externallink','fieldset','font','form','frame','frameset','h1','h2','h3','h4','h5','h6','head','hr','html','i','iframe','img','input','ins','insert','isindex','kbd','keygen','label','layer','legend','li','link','m','map','marquee','menu','meta','multicol','nobr','noembed','noframes','nolayer','noscript','object','ol','optgroup','option','output','p','param','pre','q','s','samp','select','server','small','spacer','span','strike','strong','sub','sup','table','tbody','td','textarea','tfoot','th','thead','title','tr','tt','u','ul','var','wbr')); + &Apache::lonxml::register('Apache::londefdef',('a','abbr','acronym','accessrule','address','allow','applet','area','b','base','basefont','bgo','bgsound','big','blink','blockquote','blankspace','body','br','button','caption','center','cite','code','col','colgroup','dd','del','dfn','dir','div','dl','dt','em','embed','externallink','fieldset','font','form','frame','frameset','h1','h2','h3','h4','h5','h6','head','hr','html','i','iframe','img','input','ins','insert','isindex','kbd','keygen','label','layer','legend','li','link','m','map','marquee','menu','meta','multicol','nobr','noembed','noframes','nolayer','noscript','object','ol','optgroup','option','output','p','param','pre','q','s','samp','select','server','small','spacer','span','strike','strong','sub','sup','table','tbody','td','textarea','tfoot','th','thead','title','tr','tt','tthoption','u','ul','var','wbr','hideweboutput')); } #======================= TAG SUBROUTINES ===================== #-- sub start_output { - my ($target) = @_; - if ($target eq 'meta') { $Apache::lonxml::metamode--; } - return ''; + my ($target) = @_; + if ($target eq 'meta') { $Apache::lonxml::metamode--; } + return ''; } sub end_output { - my ($target) = @_; - if ($target eq 'meta') { $Apache::lonxml::metamode++; } - return ''; + my ($target) = @_; + if ($target eq 'meta') { $Apache::lonxml::metamode++; } + return ''; } #-- tag sub start_m { - my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; - my $currentstring = ''; - if ($target eq 'web') { - $Apache::lonxml::prevent_entity_encode++; - my $inside = &Apache::lonxml::get_all_text_unbalanced("/m",$parser); - $inside ='\\documentstyle{article}'.$inside; - &Apache::lonxml::debug("M is starting with:$inside:"); - my $eval=&Apache::lonxml::get_param('eval',$parstack,$safeeval); - if ($eval eq 'on') { - $inside=&Apache::run::evaluate($inside,$safeeval,$$parstack[-1]); - #&Apache::lonxml::debug("M is evaulated to:$inside:"); - } - $currentstring = &Apache::lontexconvert::converted(\$inside); - if ($Apache::lontexconvert::errorstring) { - &Apache::lonxml::warning("tth error: ". - $Apache::lontexconvert::errorstring); - $Apache::lontexconvert::errorstring=''; - } - #&Apache::lonxml::debug("M is ends with:$currentstring:"); - } elsif ($target eq 'tex') { - $currentstring = &Apache::lonxml::get_all_text_unbalanced("/m",$parser); - if ($currentstring=~/^(\s*\\\\\s*)*$/) {$currentstring = ' \vskip 0 mm ';} - } else { - my $inside = &Apache::lonxml::get_all_text_unbalanced("/m",$parser); - } - return $currentstring; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $Apache::lonxml::prevent_entity_encode++; + my $inside = &Apache::lonxml::get_all_text_unbalanced("/m",$parser); + $inside ='\\documentstyle{article}'.$inside; + &Apache::lonxml::debug("M is starting with:$inside:"); + my $eval=&Apache::lonxml::get_param('eval',$parstack,$safeeval); + if ($eval eq 'on') { + $inside=&Apache::run::evaluate($inside,$safeeval,$$parstack[-1]); + #&Apache::lonxml::debug("M is evaulated to:$inside:"); + } + $currentstring = &Apache::lontexconvert::converted(\$inside); + if ($Apache::lontexconvert::errorstring) { + &Apache::lonxml::warning("tth error: ". + $Apache::lontexconvert::errorstring); + $Apache::lontexconvert::errorstring=''; + } + #&Apache::lonxml::debug("M is ends with:$currentstring:"); + } elsif ($target eq 'tex') { + $currentstring = &Apache::lonxml::get_all_text_unbalanced("/m",$parser); + if ($currentstring=~/^(\s*\\\\\s*)*$/) {$currentstring = ' \vskip 0 mm ';} + } else { + my $inside = &Apache::lonxml::get_all_text_unbalanced("/m",$parser); + } + return $currentstring; } + sub end_m { - my ($target,$token) = @_; - my $currentstring = ''; - if ($target eq 'web') { - $Apache::lonxml::prevent_entity_encode--; - } elsif ($target eq 'tex') { - $currentstring = ""; - } elsif ($target eq 'meta') { - } - return $currentstring; + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $Apache::lonxml::prevent_entity_encode--; + } elsif ($target eq 'tex') { + $currentstring = ""; + } elsif ($target eq 'meta') { + } + return $currentstring; } -#-- tag - sub start_html { - my ($target,$token) = @_; - my $currentstring = ''; - if ($ENV{'browser.mathml'}) { - &tth::ttminit(); - } else { - &tth::tthinit(); - } - if ($target eq 'web') { - $currentstring = &Apache::lonxml::xmlbegin(). - &Apache::lonxml::fontsettings(); - } elsif ($target eq 'tex') { - @Apache::londefdef::table = (); - $currentstring .= '\documentclass[letterpaper]{article} - \newcommand{\keephidden}[1]{} - \renewcommand{\deg}{$^{\circ}$} - \usepackage[dvips]{graphicx} - \usepackage{epsfig}\usepackage{calc} - \newenvironment{choicelist}{\begin{enumerate}}{\end{enumerate}}'; - } - return $currentstring; - } - sub end_html { - my ($target,$token) = @_; - my $currentstring = ''; - if ($target eq 'web') { - $currentstring = &Apache::lonxml::xmlend(); - } - return $currentstring; + +sub start_tthoption { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; + my $result; + if ($target eq 'web') { + my $inside = &Apache::lonxml::get_all_text("/tthoption",$parser); + $inside=~s/^\s*//; + if ($ENV{'browser.mathml'}) { + &tth::ttmoptions($inside); + } else { + &tth::tthoptions($inside); } -#-- tag - sub start_head { - my ($target,$token) = @_; - my $currentstring = ''; - if ($target eq 'web') { - $currentstring = $token->[4]; - } - return $currentstring; + } + return $result; +} + +sub end_tthoption { + my ($target,$token) = @_; + my $result; + return $result; +} + +#-- tag +sub start_html { + my ($target,$token) = @_; + my $currentstring = ''; + if ($ENV{'browser.mathml'}) { + &tth::ttminit(); + if ($ENV{'browser.unicode'}) { + &tth::ttmoptions('-L -u1'); + } else { + &tth::ttmoptions('-L -u0'); } - sub end_head { - my ($target,$token) = @_; - my $currentstring = ''; - if ($target eq 'web') { - $currentstring = &Apache::lonxml::registerurl(undef,$target). - $token->[2]; - } - return $currentstring; + } else { + &tth::tthinit(); + if ($ENV{'browser.unicode'}) { + &tth::tthoptions('-L -u1'); + } else { + &tth::tthoptions('-L -u0'); } + } + if ($target eq 'web') { + $currentstring = &Apache::lonxml::xmlbegin(). + &Apache::lonxml::fontsettings(); + } elsif ($target eq 'tex') { + @Apache::londefdef::table = (); + $currentstring .= '\documentclass[letterpaper]{article}'; + if ($ENV{'form.latex_type'}=~'batchmode') {$currentstring .='\batchmode';} + $currentstring .= '\newcommand{\keephidden}[1]{} + \renewcommand{\deg}{$^{\circ}$} + \usepackage{longtable} + \usepackage{textcomp} + \usepackage{makeidx} + \usepackage[dvips]{graphicx} + \usepackage{epsfig}\usepackage{calc} +\newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}\setlength{\itemsep}{0.022in}\setlength{\parsep}{0in}\setlength{\belowdisplayskip}{0.04in}\setlength{\abovedisplayskip}{0.05in}\setlength{\abovedisplayshortskip}{-0.04in}\setlength{\belowdisplayshortskip}{0.04in}}}{\end{list}} +\renewenvironment{theindex}{\begin{list}{}{{\vskip 1mm \noindent \large\textbf{Index}} \newline \setlength{\rightmargin}{0in}\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.01in}\setlength{\itemsep}{0.1in}\setlength{\parsep}{-0.02in}\setlength{\belowdisplayskip}{0.01in}\setlength{\abovedisplayskip}{0.01in}\setlength{\abovedisplayshortskip}{-0.04in}\setlength{\belowdisplayshortskip}{0.01in}}}{\end{list}}'; + } + return $currentstring; +} + +sub end_html { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = &Apache::lonxml::xmlend(); + } + return $currentstring; +} + +#-- tag +sub start_head { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[4]; + } + return $currentstring; +} + +sub end_head { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = &Apache::lonmenu::registerurl(undef,$target). + $token->[2]; + } + return $currentstring; +} + #-- tag - sub start_map { - my ($target,$token) = @_; - my $currentstring = ''; - if ($target eq 'web') { - $currentstring = $token->[4]; - } - return $currentstring; - } - sub end_map { - my ($target,$token) = @_; - my $currentstring = ''; - if ($target eq 'web') { - $currentstring = $token->[2]; - } - return $currentstring; - } +sub start_map { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[4]; + } + return $currentstring; +} + +sub end_map { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[2]; + } + return $currentstring; +} + #-- tag +sub start_input { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[4]; + } + return $currentstring; +} + +sub end_input { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[2]; + } + return $currentstring; +} + +#--