# The LearningOnline Network with CAPA # Tags Default Definition Module # # $Id: londefdef.pm,v 1.87 2002/09/05 19:33:55 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; BEGIN { &Apache::lonxml::register('Apache::londefdef',('m','html','head','map','select','option','input','textarea','form','meta','title','body','center','b','strong','dt','h1','h2','h3','h4','h5','h6','cite','i','address','dd','dl','dir','ol','ul','menu','dfn','kbd','tt','code','em','q','p','br','big','small','basefont','font','s','sub','strike','sup','hr','a','li','u','output','param','applet','img','embed','allow','frameset','pre','insert','div','externallink','table','tr','th','td','blankspace','bubble','bubbles','bubbleline')); } #======================= 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; } #-- 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; } #-- 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::lonxml::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; } #--