# The LearningOnline Network with CAPA # Tags Default Definition Module # # $Id: londefdef.pm,v 1.150 2003/06/30 19:26:36 sakharuk 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. # # # last modified 06/26/00 by Alexander Sakharuk # 11/6,11/30,02/01/01,5/4 Gerd Kortemeyer # 01/18 Alex Sakharuk package Apache::londefdef; use Apache::lonnet(); use strict; use Apache::lonxml; use Apache::File(); use Image::Magick; use Apache::lonmenu(); use Apache::lonmeta(); BEGIN { &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 ''; } sub end_output { 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; } 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; } 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); } } 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'); } } 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}'. #'\batchmode'. '\newcommand{\keephidden}[1]{} \renewcommand{\deg}{$^{\circ}$} \usepackage{longtable} \usepackage{textcomp} \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}}'; } 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; } #-- 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; } #--