--- loncom/xml/londefdef.pm 2002/01/09 23:11:59 1.39 +++ loncom/xml/londefdef.pm 2002/07/25 15:28:26 1.78 @@ -1,7 +1,8 @@ # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.39 2002/01/09 23:11:59 albertel Exp $ +# $Id: londefdef.pm,v 1.78 2002/07/25 15:28:26 sakharuk Exp $ +# # # Copyright Michigan State University Board of Trustees # @@ -39,15 +40,19 @@ # # 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','table','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','tr','td','allow','frameset')); + &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','externallink','table','tr','th','td','blankspace','bubble','bubbles','bubbleline')); } @@ -68,7 +73,8 @@ sub start_m { my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; my $currentstring = ''; if ($target eq 'web') { - my $inside = &Apache::lonxml::get_all_text("/m",$$parser[-1]); + $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); @@ -84,7 +90,10 @@ sub start_m { } #&Apache::lonxml::debug("M is ends with:$currentstring:"); } elsif ($target eq 'tex') { - $currentstring = ""; + $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; } @@ -92,6 +101,7 @@ 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') { @@ -101,7 +111,7 @@ sub end_m { #-- tag sub start_html { my ($target,$token) = @_; - my $currentstring = ''; + my $currentstring = ''; if ($ENV{'browser.mathml'}) { &tth::ttminit(); } else { @@ -111,16 +121,12 @@ sub end_m { $currentstring = &Apache::lonxml::xmlbegin(). &Apache::lonxml::fontsettings(); } elsif ($target eq 'tex') { + @Apache::londefdef::table = (); $currentstring .= '\documentclass[letterpaper]{article} - \setlength{\oddsidemargin}{-40pt} - \setlength{\evensidemargin}{-60pt} - \setlength{\topmargin}{200pt} - \setlength{\textwidth}{4.4in} - \setlength{\textheight}{6.8in} - \setlength{\parindent}{20pt} - \setlength{\marginparwidth}{90pt} - \setlength{\textfloatsep}{8pt plus 2.0pt minus 4.0pt} - \newcommand{\keephidden}[1]{}'; + \newcommand{\keephidden}[1]{} + \renewcommand{\deg}{$^{\circ}$} + \usepackage[dvips]{graphicx} + \usepackage{epsfig}\usepackage{calc}'; } return $currentstring; } @@ -145,7 +151,7 @@ sub end_m { my ($target,$token) = @_; my $currentstring = ''; if ($target eq 'web') { - $currentstring = &Apache::lonxml::registerurl(). + $currentstring = &Apache::lonxml::registerurl(undef,$target). $token->[2]; } return $currentstring; @@ -322,11 +328,13 @@ sub end_m { } #-- tag sub start_body { - my ($target,$token) = @_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; +# my ($target,$token) = @_; my $currentstring = ''; if ($target eq 'web') { if (!$Apache::lonxml::registered) { - $currentstring.=''.&Apache::lonxml::registerurl().''; + $currentstring.=''. + &Apache::lonxml::registerurl(undef,$target).''; } my $onLoad=''; foreach my $key (keys(%{$token->[2]})) { @@ -335,7 +343,8 @@ sub end_m { delete($token->[2]->{$key}); } } - $token->[2]->{'onLoad'}=$onLoad.&Apache::lonxml::loadevents(); + $token->[2]->{'onLoad'}=&Apache::lonxml::loadevents(). + ';'.$onLoad; my $onUnload=''; foreach my $key (keys(%{$token->[2]})) { if ($key =~ /^onunload$/i) { @@ -343,14 +352,21 @@ sub end_m { delete($token->[2]->{$key}); } } - $token->[2]->{'onUnload'}=$onUnload. - &Apache::lonxml::unloadevents(); + $token->[2]->{'onUnload'}=&Apache::lonxml::unloadevents(). + ';'.$onUnload; $currentstring .= '<'.$token->[1]; foreach (keys %{$token->[2]}) { $currentstring.=' '.$_.'="'.$token->[2]->{$_}.'"'; } $currentstring.='>'; + if ($ENV{'request.state'} ne 'published') { + $currentstring.=(< + + +EDITBUTTON + } } elsif ($target eq 'tex') { $currentstring = '\begin{document}'; } @@ -519,7 +535,7 @@ sub end_m { if ($target eq 'web') { $currentstring .= $token->[4]; } elsif ($target eq 'tex') { - $currentstring .= '\large{\textbf'; + $currentstring .= '\large{\textbf{'; } return $currentstring; } @@ -823,12 +839,14 @@ sub end_m { } #--
tag sub start_br { - my ($target,$token) = @_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my $currentstring = ''; if ($target eq 'web') { $currentstring .= $token->[4]; } elsif ($target eq 'tex') { - $currentstring .= '\\'; + if ($$tagstack[-2] ne 'sub' && $$tagstack[-2] ne 'sup') { + $currentstring .= '\vskip 0 mm'; + } } elsif ($target eq 'latexsource') { $currentstring .= '\\'; } @@ -851,7 +869,7 @@ sub end_m { } elsif ($target eq 'tex') { $currentstring .= '\large{'; } elsif ($target eq 'latexsource') { - $currentstring .= '\large{'; + $currentstring .= '{\Large '; } return $currentstring; } @@ -874,9 +892,9 @@ sub end_m { if ($target eq 'web') { $currentstring .= $token->[4]; } elsif ($target eq 'tex') { - $currentstring .= '\footnotesize{'; + $currentstring .= '{\footnotesize '; } elsif ($target eq 'latexsource') { - $currentstring .= '\footnotesize{'; + $currentstring .= '{\footnotesize '; } return $currentstring; } @@ -911,17 +929,21 @@ sub end_m { } #-- tag sub start_font { - my ($target,$token) = @_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my $currentstring = ''; if ($target eq 'web') { + my $face=&Apache::lonxml::get_param('face',$parstack,$safeeval); + if ($face=~/symbol/i) {$Apache::lonxml::prevent_entity_encode++;} $currentstring = $token->[4]; } return $currentstring; } sub end_font { - my ($target,$token) = @_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; my $currentstring = ''; if ($target eq 'web') { + my $face=&Apache::lonxml::get_param('face',$parstack,$safeeval); + if ($face=~/symbol/i) {$Apache::lonxml::prevent_entity_encode--;} $currentstring = $token->[2]; } return $currentstring; @@ -933,7 +955,7 @@ sub end_m { if ($target eq 'web') { $currentstring .= $token->[4]; } elsif ($target eq 'tex') { - $currentstring .= "{\\underline "; + $currentstring .= '\underline{'; } return $currentstring; } @@ -943,7 +965,7 @@ sub end_m { if ($target eq 'web') { $currentstring .= $token->[2]; } elsif ($target eq 'tex') { - $currentstring .= " }"; + $currentstring .= '}'; } return $currentstring; } @@ -954,7 +976,7 @@ sub end_m { if ($target eq 'web') { $currentstring .= $token->[4]; } elsif ($target eq 'tex') { - $currentstring .= "{\\underline "; + $currentstring .= '\underline{'; } return $currentstring; } @@ -964,7 +986,7 @@ sub end_m { if ($target eq 'web') { $currentstring .= $token->[2]; } elsif ($target eq 'tex') { - $currentstring .= " }"; + $currentstring .= '}'; } return $currentstring; } @@ -1017,7 +1039,7 @@ sub end_m { if ($target eq 'web') { $currentstring .= $token->[4]; } elsif ($target eq 'tex') { - $currentstring .= "\\hline "; + $currentstring .= '\vskip 0 mm \noindent\makebox[\textwidth - 8 mm][b]{\hrulefill}'; } return $currentstring; } @@ -1094,7 +1116,7 @@ sub end_m { if ($target eq 'web') { $currentstring .= $token->[4]; } elsif ($target eq 'tex') { - $currentstring .= "{\\underline "; + $currentstring .= '\underline{'; } return $currentstring; } @@ -1104,7 +1126,7 @@ sub end_m { if ($target eq 'web') { $currentstring .= $token->[2]; } elsif ($target eq 'tex') { - $currentstring .= " }"; + $currentstring .= '}'; } return $currentstring; } @@ -1115,7 +1137,7 @@ sub end_m { if ($target eq 'web') { $currentstring = $token->[4]; } elsif ($target eq 'tex') { - $currentstring = " \\begin{itemize} "; + $currentstring = '\begin{itemize}'; } return $currentstring; } @@ -1125,7 +1147,7 @@ sub end_m { if ($target eq 'web') { $currentstring = $token->[2]; } elsif ($target eq 'tex') { - $currentstring = " \\end{itemize}"; + $currentstring = '\end{itemize}'; } return $currentstring; } @@ -1178,7 +1200,7 @@ sub end_m { if ($target eq 'web') { $currentstring = $token->[4]; } elsif ($target eq 'tex') { - $currentstring = " \\begin{enumerate} "; + $currentstring = '\begin{enumerate}'; } return $currentstring; } @@ -1188,7 +1210,7 @@ sub end_m { if ($target eq 'web') { $currentstring = $token->[2]; } elsif ($target eq 'tex') { - $currentstring = " \\end{enumerate}"; + $currentstring = '\end{enumerate}'; } return $currentstring; } @@ -1199,7 +1221,7 @@ sub end_m { if ($target eq 'web') { $currentstring = $token->[4]; } elsif ($target eq 'tex') { - $currentstring = " \\begin{description} "; + $currentstring = '\begin{description}'; } return $currentstring; } @@ -1209,7 +1231,7 @@ sub end_m { if ($target eq 'web') { $currentstring = $token->[2]; } elsif ($target eq 'tex') { - $currentstring = " \\end{description}"; + $currentstring = '\end{description}'; } return $currentstring; } @@ -1220,7 +1242,7 @@ sub end_m { if ($target eq 'web') { $currentstring = $token->[4]; } elsif ($target eq 'tex') { - $currentstring = "\\item[ "; + $currentstring = '\item['; } return $currentstring; } @@ -1230,7 +1252,7 @@ sub end_m { if ($target eq 'web') { $currentstring = $token->[2]; } elsif ($target eq 'tex') { - $currentstring = "]"; + $currentstring = ']'; } return $currentstring; } @@ -1253,12 +1275,26 @@ sub end_m { } #-- tag sub start_table { - my ($target,$token) = @_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; my $currentstring = ''; if ($target eq 'web') { $currentstring = $token->[4]; } elsif ($target eq 'tex') { - $currentstring = ""; + my $aa = {}; + push @Apache::londefdef::table, $aa; + $Apache::londefdef::table[-1]{'row_number'} = -1; + $Apache::londefdef::table[-1]{'output'} = '\begin{tabular} '; + my $border = &Apache::lonxml::get_param('border',$parstack,$safeeval); + unless (defined $border) { $border = 0; } + if ($border) { + $Apache::londefdef::table[-1]{'hinc'} = '\hline '; + $Apache::londefdef::table[-1]{'vinc'} = '&'; + $Apache::londefdef::table[-1]{'vvinc'} = '|'; + } else { + $Apache::londefdef::table[-1]{'hinc'} = ''; + $Apache::londefdef::table[-1]{'vinc'} = '&'; + $Apache::londefdef::table[-1]{'vvinc'} = ''; + } } return $currentstring; } @@ -1268,74 +1304,235 @@ sub end_m { if ($target eq 'web') { $currentstring = $token->[2]; } elsif ($target eq 'tex') { - $currentstring = ""; - } + my $inmemory = ''; + my $output = ''; + my $header_of_table = '{'.$Apache::londefdef::table[-1]{'vvinc'}; + my $in; + for ($in=0;$in<=$Apache::londefdef::table[-1]{'counter_columns'};$in++) { + $header_of_table .= $Apache::londefdef::table[-1]{'columns'}[$in].$Apache::londefdef::table[-1]{'vvinc'}; + } + $header_of_table .= '}'; + for ($in=0;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) { + $output .= $Apache::londefdef::table[-1]{'rowdata'}[$in]; + chop $output; + $output .= ' \\\\ '; + } + my @length = split(/,/,$Apache::londefdef::table[-1]{'length'}); + my $how_many_columns = $#length; + my $parboxlength = '(\textwidth'; + for (my $io=0; $io<=$#length;$io++) { + if ($length[$io] ne '') { + $parboxlength .= ' - '.$length[$io].' '; + } + } + $parboxlength .= ')/'.$how_many_columns.' - 7 mm'; + $output =~ s/\\parbox{}/\\parbox{$parboxlength}/g; + $Apache::londefdef::table[-1]{'output'} .= $header_of_table.$output.$Apache::londefdef::table[-1]{'hinc'}.'\end{tabular}\vskip 0 mm '; + if ($#Apache::londefdef::table > 0) { + $inmemory = $Apache::londefdef::table[-1]{'output'}; + pop @Apache::londefdef::table; + $Apache::londefdef::table[-1]{'rowdata'}[$Apache::londefdef::table[-1]{'row_number'}] .= $inmemory; + } else { + $currentstring = $Apache::londefdef::table[-1]{'output'}; + $currentstring =~ s/\\\\\s+\\\\/\\\\/g; + pop @Apache::londefdef::table; + } + } return $currentstring; } #-- tag sub start_tr { - my ($target,$token) = @_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; my $currentstring = ''; if ($target eq 'web') { $currentstring = $token->[4]; } elsif ($target eq 'tex') { - $currentstring = ''; + $Apache::londefdef::table[-1]{'row_number'}++; + my $alignchar = substr(&Apache::lonxml::get_param('align',$parstack,$safeeval),0,1); + if ($alignchar ne '') { + push @ {$Apache::londefdef::table[-1]{'rows'} }, $alignchar; + } else { + push @ {$Apache::londefdef::table[-1]{'rows'} }, 'l'; + } + push ( @{ $Apache::londefdef::table[-1]{'rowdata'} }, $Apache::londefdef::table[-1]{'hinc'}); + $Apache::londefdef::table[-1]{'counter_columns'} = -1; + $Apache::londefdef::table[-1]{'length'} = ''; + } return $currentstring; - } + } sub end_tr { my ($target,$token) = @_; my $currentstring = ''; if ($target eq 'web') { - $currentstring = $token->[2]; + $currentstring = $token->[2]; } elsif ($target eq 'tex') { - $currentstring = ""; - } +# $currentstring .= ' START ROW '. $Apache::londefdef::table[-1]{'rowdata'}[$Apache::londefdef::table[-1]{'row_number'}].' END ROW '; + } return $currentstring; } #--
tag sub start_td { - my ($target,$token) = @_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; my $currentstring = ''; if ($target eq 'web') { $currentstring = $token->[4]; } elsif ($target eq 'tex') { - $currentstring = ''; + my $what_to_push = substr(&Apache::lonxml::get_param('align',$parstack,$safeeval),0,1); + if ($what_to_push eq '') { + $what_to_push = substr($Apache::londefdef::table[-1]{'rows'}[0],0,1);; + } + push @{ $Apache::londefdef::table[-1]{'columns'} }, $what_to_push; + $Apache::londefdef::table[-1]{'counter_columns'}++; + &Apache::lonxml::startredirection(); +; } return $currentstring; - } + } sub end_td { my ($target,$token) = @_; my $currentstring = ''; if ($target eq 'web') { - $currentstring = $token->[2]; + $currentstring = $token->[2]; + } elsif ($target eq 'tex') { + my $current_row = $Apache::londefdef::table[-1]{'row_number'}; + my $data=&Apache::lonxml::endredirection(); + if ($data=~m/width\s*=\s*(\d+\.*\d*\s*(mm|cm))/) { + $Apache::londefdef::table[-1]{'length'} .= $1.','; + } else { + $Apache::londefdef::table[-1]{'length'} .= '0 mm,'; + } + @{ $Apache::londefdef::table[-1]{'rowdata'} }[$current_row] .= '\parbox{'.$1.'}{'.$data.'} '.$Apache::londefdef::table[-1]{'vinc'}; + } + return $currentstring; + } +#-- tag + sub start_th { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[4]; } elsif ($target eq 'tex') { - $currentstring = ""; + my $what_to_push = substr(&Apache::lonxml::get_param('align',$parstack,$safeeval),0,1); + if ($what_to_push eq '') { + $what_to_push = substr($Apache::londefdef::table[-1]{'rows'}[0],0,1);; + } + push @{ $Apache::londefdef::table[-1]{'columns'} }, $what_to_push; + $Apache::londefdef::table[-1]{'counter_columns'}++; + &Apache::lonxml::startredirection(); +; } return $currentstring; + } + sub end_th { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[2]; + } elsif ($target eq 'tex') { + my $current_row = $Apache::londefdef::table[-1]{'row_number'}; + my $data=&Apache::lonxml::endredirection(); + if ($data=~m/width\s*=\s*(\d+\.*\d*\s*(mm|cm))/) { + $Apache::londefdef::table[-1]{'length'} .= $1.','; + } else { + $Apache::londefdef::table[-1]{'length'} .= '0 mm,'; + } + @{ $Apache::londefdef::table[-1]{'rowdata'} }[$current_row] .= '\parbox{'.$1.'}{\textbf{'.$data.'}} '.$Apache::londefdef::table[-1]{'vinc'}; + } + return $currentstring; } #-- tag - sub start_img { - my ($target,$token) = @_; - $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]= + my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; + $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]= $token->[2]->{'src'}; my $currentstring = ''; - if ($target eq 'web') { + my $width_param = ''; + my $height_param = ''; + my $scaling = .3; + + if ($target eq 'web') { $currentstring = $token->[4]; } elsif ($target eq 'tex') { - $currentstring = " \\begin{figure} "; - } - return $currentstring; + my $src = &Apache::lonxml::get_param('src',$parstack,$safeeval); + $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src); + my $image = Image::Magick->new; + my $current_figure = $image->Read($src); + $width_param = $image->Get('width') * $scaling;; + $height_param = $image->Get('height') * $scaling;; + undef $image; + my $epssrc = $src; + $epssrc =~ s/(\.gif|\.jpg)$/\.eps/i; + if (not -e $epssrc) { + my $localfile = $epssrc; + $localfile =~ s/.*(\/res)/$1/; + my $file; + my $path; + if ($localfile =~ m!(.*)/([^/]*)$!) { + $file = $2; + $path = $1.'/'; + } + my $signal_eps = 0; + my @content_directory = &Apache::lonnet::dirlist($path); + for (my $iy=0;$iy<=$#content_directory;$iy++) { + my @tempo_array = split(/&/,$content_directory[$iy]); + $content_directory[$iy] = $tempo_array[0]; + if ($file eq $tempo_array[0]) { + $signal_eps = 1; + last; + } + } + if ($signal_eps) { + my $eps_file = &Apache::lonnet::getfile($localfile); + } else { + $localfile = $src; + $localfile =~ s/.*(\/res)/$1/; + my $as = &Apache::lonnet::getfile($src); + } + } + my $file; + my $path; + if ($src =~ m!(.*)/([^/]*)$!) { + $file = $2; + $path = $1.'/'; + } + my $newsrc = $src; + $newsrc =~ s/(\.gif|\.jpg)$/\.eps/i; + $file=~s/(\.gif|\.jpg)$/\.eps/i; + #do we have any specified size of the picture? + my $TeXwidth = &Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval); + my $TeXheight = &Apache::lonxml::get_param('TeXheight',$parstack,$safeeval); + my $width = &Apache::lonxml::get_param('width',$parstack,$safeeval); + if ($TeXwidth ne '') { + $width_param = $TeXwidth; + } elsif ($TeXheight ne '') { + $width_param = $TeXheight/$height_param*$width_param; + } elsif ($width ne '') { + $width_param = $width*$scaling; + } + #where can we find the picture? + if (-e $newsrc) { + if ($path) { + $currentstring .= '\noindent\graphicspath{{'.$path.'}}\fbox{\includegraphics[width='.$width_param.' mm]{'.$file.'}} '; + } + } else { + my $temp_file; + my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat"; + $temp_file = Apache::File->new('>>'.$filename); + print $temp_file "$src\n"; + $currentstring .= '\graphicspath{{/home/httpd/prtspool/}}\fbox{\includegraphics[width='.$width_param.' mm]{'.$file.'}} '; + } + } + return $currentstring; } sub end_img { my ($target,$token) = @_; my $currentstring = ''; if ($target eq 'web') { - $currentstring = $token->[2]; + $currentstring = $token->[2]; } elsif ($target eq 'tex') { - $currentstring = " \\end{figure}"; - } + $currentstring = ''; + } return $currentstring; } #-- tag @@ -1344,41 +1541,41 @@ sub end_m { my ($target,$token) = @_; $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]= $token->[2]->{'code'}; - $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]= + $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]= $token->[2]->{'archive'}; my $currentstring = ''; if ($target eq 'web') { - $currentstring = $token->[4]; - } elsif ($target eq 'tex') { - $currentstring = " \\begin{figure} "; - } - return $currentstring; - } - sub end_applet { - my ($target,$token) = @_; - my $currentstring = ''; - if ($target eq 'web') { - $currentstring = $token->[2]; + $currentstring = $token->[4]; } elsif ($target eq 'tex') { - $currentstring = " \\end{figure}"; + $currentstring = " \\begin{figure} "; } return $currentstring; } +sub end_applet { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[2]; + } elsif ($target eq 'tex') { + $currentstring = " \\end{figure}"; + } + return $currentstring; +} #-- tag - sub start_embed { - my ($target,$token) = @_; - $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]= - $token->[2]->{'src'}; - my $currentstring = ''; - if ($target eq 'web') { - $currentstring = $token->[4]; - } elsif ($target eq 'tex') { - $currentstring = " \\begin{figure} "; - } - return $currentstring; - } +sub start_embed { + my ($target,$token) = @_; + $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]= + $token->[2]->{'src'}; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring = $token->[4]; + } elsif ($target eq 'tex') { + $currentstring = " \\begin{figure} "; + } + return $currentstring; +} sub end_embed { my ($target,$token) = @_; my $currentstring = ''; @@ -1438,7 +1635,8 @@ sub end_m { my $currentstring = ''; if ($target eq 'web') { if (!$Apache::lonxml::registered) { - $currentstring.=''.&Apache::lonxml::registerurl().''; + $currentstring.=''. + &Apache::lonxml::registerurl(undef,$target).''; } $currentstring .= $token->[4]; } @@ -1452,5 +1650,81 @@ sub end_m { } return $currentstring; } +#--
+	sub start_pre {
+	    my ($target,$token) = @_;
+            my $currentstring = '';
+            if ($target eq 'web') {
+	       $currentstring .= $token->[4];
+	    } elsif ($target eq 'tex') {
+		$currentstring .= '\begin{verbatim}';
+	    } 
+           return $currentstring;
+	}
+        sub end_pre {
+	    my ($target,$token) = @_;
+            my $currentstring = '';
+            if ($target eq 'web') {
+	       $currentstring .= $token->[2];
+	    } elsif ($target eq 'tex') {
+		$currentstring .= '\end{verbatim}';
+	    }
+           return $currentstring;
+	}
+#-- 
+	sub start_insert {
+	    my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
+            my $currentstring = '';
+            if ($target eq 'web') {
+		my $display = &Apache::lonxml::get_param('display',$parstack,$safeeval);
+	       $currentstring .= ''.$display.'';;
+	    }
+           return $currentstring;
+	}
+        sub end_insert {
+	    my ($target,$token) = @_;
+            my $currentstring = '';
+            if ($target eq 'web') {
+	       $currentstring .= '';
+	    }
+           return $currentstring;
+	}
+#-- 
+	sub start_externallink {
+	    my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
+            my $currentstring = '';
+            if ($target eq 'web') {
+		my $display = &Apache::lonxml::get_param('display',$parstack,$safeeval);
+	       $currentstring .= ''.$display.'';;
+	    }
+           return $currentstring;
+	}
+        sub end_externallink {
+	    my ($target,$token) = @_;
+            my $currentstring = '';
+            if ($target eq 'web') {
+	       $currentstring .= '';
+	    }
+           return $currentstring;
+	}
+#-- 
+        sub start_blankspace {
+	    my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_;
+            my $currentstring = '';
+            if ($target eq 'tex') {
+		my $howmuch = &Apache::lonxml::get_param('heigth',$parstack,$safeeval);
+		$currentstring .= '\vskip '.$howmuch.' ';
+	    }
+           return $currentstring;
+	}
+        sub end_blankspace {
+	    my ($target,$token) = @_;
+            my $currentstring = '';
+            if ($target eq 'tex') {
+	       $currentstring .= '';
+	    }
+           return $currentstring;
+	}
+
 1;
 __END__


500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.