version 1.166, 2003/08/26 14:40:03
|
version 1.201, 2004/03/09 20:37:58
|
Line 50 use Apache::File();
|
Line 50 use Apache::File();
|
use Image::Magick; |
use Image::Magick; |
use Apache::lonmenu(); |
use Apache::lonmenu(); |
use Apache::lonmeta(); |
use Apache::lonmeta(); |
|
use Apache::Constants qw(:common); |
|
|
$Apache::londefdef::TD_redirection=0; |
|
|
|
BEGIN { |
BEGIN { |
|
|
Line 59 BEGIN {
|
Line 59 BEGIN {
|
|
|
} |
} |
|
|
|
sub initialize_londefdef { |
|
$Apache::londefdef::TD_redirection=0; |
|
@Apache::londefdef::table = (); |
|
$Apache::londefdef::select=0; |
|
@Apache::londefdef::description=(); |
|
$Apache::londefdef::DD_redirection=0; |
|
$Apache::londefdef::DT_redirection=0; |
|
} |
|
|
#======================= TAG SUBROUTINES ===================== |
#======================= TAG SUBROUTINES ===================== |
#-- <output> |
#-- <output> |
sub start_output { |
sub start_output { |
Line 73 sub end_output {
|
Line 82 sub end_output {
|
} |
} |
#-- <m> tag |
#-- <m> tag |
sub start_m { |
sub start_m { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
my $inside = &Apache::lonxml::get_all_text_unbalanced("/m",$parser); |
|
if ($target eq 'web' || $target eq 'analyze') { |
$Apache::lonxml::prevent_entity_encode++; |
$Apache::lonxml::prevent_entity_encode++; |
my $inside = &Apache::lonxml::get_all_text_unbalanced("/m",$parser); |
|
$inside ='\\documentstyle{article}'.$inside; |
$inside ='\\documentstyle{article}'.$inside; |
&Apache::lonxml::debug("M is starting with:$inside:"); |
&Apache::lonxml::debug("M is starting with:$inside:"); |
my $eval=&Apache::lonxml::get_param('eval',$parstack,$safeeval); |
my $eval=&Apache::lonxml::get_param('eval',$parstack,$safeeval); |
Line 92 sub start_m {
|
Line 101 sub start_m {
|
$Apache::lontexconvert::errorstring=''; |
$Apache::lontexconvert::errorstring=''; |
} |
} |
#&Apache::lonxml::debug("M is ends with:$currentstring:"); |
#&Apache::lonxml::debug("M is ends with:$currentstring:"); |
|
$Apache::lonxml::post_evaluate=0; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring = &Apache::lonxml::get_all_text_unbalanced("/m",$parser); |
$currentstring = $inside; |
|
my $eval=&Apache::lonxml::get_param('eval',$parstack,$safeeval); |
|
if ($eval eq 'on') { |
|
$currentstring=&Apache::run::evaluate($currentstring,$safeeval,$$parstack[-1]); |
|
} |
if ($currentstring=~/^(\s*\\\\\s*)*$/) {$currentstring = ' \vskip 0 mm ';} |
if ($currentstring=~/^(\s*\\\\\s*)*$/) {$currentstring = ' \vskip 0 mm ';} |
} else { |
$Apache::lonxml::post_evaluate=0; |
my $inside = &Apache::lonxml::get_all_text_unbalanced("/m",$parser); |
|
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 134 sub end_tthoption {
|
Line 147 sub end_tthoption {
|
return $result; |
return $result; |
} |
} |
|
|
#-- <html> tag |
#-- <html> tag (end tag optional) |
sub start_html { |
sub start_html { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($ENV{'browser.mathml'}) { |
my $options=$ENV{'course.'.$ENV{'request.course.id'}.'.tthoptions'}; |
&tth::ttminit(); |
&Apache::lontexconvert::init_tth(); |
if ($ENV{'browser.unicode'}) { |
if ($target eq 'web' || $target eq 'edit') { |
&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(). |
$currentstring = &Apache::lonxml::xmlbegin(). |
&Apache::lonxml::fontsettings(); |
&Apache::lonxml::fontsettings(); |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
Line 182 sub end_html {
|
Line 182 sub end_html {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <head> tag |
#-- <head> tag (end tag optional) |
sub start_head { |
sub start_head { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 195 sub start_head {
|
Line 195 sub start_head {
|
sub end_head { |
sub end_head { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web' && $ENV{'request.state'} eq 'published') { |
$currentstring = &Apache::lonmenu::registerurl(undef,$target). |
$currentstring = &Apache::lonmenu::registerurl(undef,$target). |
$token->[2]; |
$token->[2]; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <map> tag |
#-- <map> tag (end tag required) |
sub start_map { |
sub start_map { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 221 sub end_map {
|
Line 221 sub end_map {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <select> tag |
#-- <select> tag (end tag required) |
sub start_select { |
sub start_select { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[4]; |
$currentstring = $token->[4]; |
} |
} elsif ($target eq 'tex') { |
|
$Apache::londefdef::select=0; |
|
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
Line 240 sub end_select {
|
Line 242 sub end_select {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <option> tag |
#-- <option> tag (end tag optional) |
sub start_option { |
sub start_option { |
my ($target,$token) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[4]; |
$currentstring = $token->[4]; |
} |
} elsif ($target eq 'tex') { |
|
$Apache::londefdef::select++; |
|
if ($Apache::londefdef::select == 1) { |
|
$currentstring='\noindent\fbox{'.&Apache::lonxml::get_param('value',$parstack,$safeeval).'}\keephidden{'; |
|
} else { |
|
$currentstring='\keephidden{'; |
|
} |
|
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
Line 255 sub end_option {
|
Line 264 sub end_option {
|
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[2]; |
$currentstring = $token->[2]; |
} |
} elsif ($target eq 'tex') { |
|
$currentstring='}'; |
|
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <input> tag |
#-- <input> tag (end tag forbidden) |
sub start_input { |
sub start_input { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 278 sub end_input {
|
Line 289 sub end_input {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <textarea> tag |
#-- <textarea> tag (end tag required) |
sub start_textarea { |
sub start_textarea { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 297 sub end_textarea {
|
Line 308 sub end_textarea {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <form> tag |
#-- <form> tag (end tag required) |
sub start_form { |
sub start_form { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 316 sub end_form {
|
Line 327 sub end_form {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <title> tag |
#-- <title> tag (end tag required) |
sub start_title { |
sub start_title { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 327 sub start_title {
|
Line 338 sub start_title {
|
} |
} |
if ($target eq 'meta') { |
if ($target eq 'meta') { |
$currentstring='<title>'; |
$currentstring='<title>'; |
&start_output(); |
&start_output($target); |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 341 sub end_title {
|
Line 352 sub end_title {
|
$currentstring .= '}'; |
$currentstring .= '}'; |
} |
} |
if ($target eq 'meta') { |
if ($target eq 'meta') { |
&end_output(); |
&end_output($target); |
$currentstring='</title>'; |
$currentstring='</title>'; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <meta> tag |
#-- <meta> tag (end tag forbidden) |
sub start_meta { |
sub start_meta { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 410 sub end_meta {
|
Line 421 sub end_meta {
|
my $content=&Apache::lonxml::get_param('content',$parstack,$safeeval); |
my $content=&Apache::lonxml::get_param('content',$parstack,$safeeval); |
my $name=&Apache::lonxml::get_param('name',$parstack,$safeeval); |
my $name=&Apache::lonxml::get_param('name',$parstack,$safeeval); |
if ((not defined $content) && (not defined $name)) { |
if ((not defined $content) && (not defined $name)) { |
&Apache::lonxml::startredirection(); |
&Apache::lonxml::endredirection(); |
} |
} |
} |
} |
return $currentstring; |
return $currentstring; |
Line 461 sub end_accessrule {
|
Line 472 sub end_accessrule {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <body> tag |
#-- <body> tag (end tag required) |
sub start_body { |
sub start_body { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
if (!$Apache::lonxml::registered) { |
if ($Apache::lonhomework::parsing_a_problem) { |
|
&Apache::lonxml::warning("<body> tag found inside of <problem> tag this can cause problems."); |
|
return ''; |
|
} |
|
if (!$Apache::lonxml::registered && |
|
$ENV{'request.state'} eq 'published') { |
$currentstring.='<head>'. |
$currentstring.='<head>'. |
&Apache::lonmenu::registerurl(undef,$target).'</head>'; |
&Apache::lonmenu::registerurl(undef,$target).'</head>'; |
} |
} |
Line 519 sub start_body {
|
Line 535 sub start_body {
|
if ($ENV{'request.state'} ne 'published') { |
if ($ENV{'request.state'} ne 'published') { |
$currentstring.=(<<EDITBUTTON); |
$currentstring.=(<<EDITBUTTON); |
<form method="post"> |
<form method="post"> |
<input type="submit" name="editmode" value="Edit" /> |
<input type="submit" name="editmode" accesskey="e" value="Edit" /> |
</form> |
</form> |
EDITBUTTON |
EDITBUTTON |
} else { |
} else { |
$currentstring.=&Apache::lonmenu::menubuttons(undef,$target,1); |
$currentstring.=&Apache::lonmenu::menubuttons(undef,$target,1); |
} |
} |
|
$currentstring.=&Apache::lonxml::message_location(); |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring = '\begin{document}'; |
$currentstring = '\begin{document}'; |
} |
} |
Line 537 sub end_body {
|
Line 554 sub end_body {
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[2]; |
$currentstring = $token->[2]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring = '\end{document}'; |
$currentstring = '\strut\newline\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill}\newline\noindent \end{document}'; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <center> tag |
#-- <center> tag (end tag required) |
sub start_center { |
sub start_center { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 565 sub end_center {
|
Line 582 sub end_center {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <b> tag |
#-- <b> tag (end tag required) |
sub start_b { |
sub start_b { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 588 sub end_b {
|
Line 605 sub end_b {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <strong> tag |
#-- <strong> tag (end tag required) |
sub start_strong { |
sub start_strong { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 603 sub start_strong {
|
Line 620 sub start_strong {
|
sub end_strong { |
sub end_strong { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
|
|
$currentstring = $token->[2]; |
$currentstring = $token->[2]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring = '}'; |
$currentstring = '}'; |
Line 612 sub end_strong {
|
Line 628 sub end_strong {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <h1> tag |
#-- <h1> tag (end tag required) |
sub start_h1 { |
sub start_h1 { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 620 sub start_h1 {
|
Line 636 sub start_h1 {
|
$currentstring .= $token->[4]; |
$currentstring .= $token->[4]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
my $pre; |
my $pre; |
my $align=&Apache::lonxml::get_param('align',$parstack,$safeeval,undef,1); |
my $align=lc(&Apache::lonxml::get_param('align',$parstack,$safeeval,undef,1)); |
if (($align eq 'center') || (not defined $align)) { |
if (($align eq 'center') || (not defined $align)) { |
$pre='\begin{center}'; |
$pre='\begin{center}'; |
} elsif ($align eq 'left') { |
} elsif ($align eq 'left') { |
Line 633 sub start_h1 {
|
Line 649 sub start_h1 {
|
$currentstring .= $pre.'{\\'.$TeXsize.' \textbf{'; |
$currentstring .= $pre.'{\\'.$TeXsize.' \textbf{'; |
} elsif ($target eq 'meta') { |
} elsif ($target eq 'meta') { |
$currentstring='<subject>'; |
$currentstring='<subject>'; |
&start_output(); |
&start_output($target); |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 655 sub end_h1 {
|
Line 671 sub end_h1 {
|
} |
} |
$currentstring .= '}}'.$post; |
$currentstring .= '}}'.$post; |
} elsif ($target eq 'meta') { |
} elsif ($target eq 'meta') { |
&end_output(); |
&end_output($target); |
$currentstring='</subject>'; |
$currentstring='</subject>'; |
} |
} |
return $currentstring; |
return $currentstring; |
Line 876 sub end_h6 {
|
Line 892 sub end_h6 {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#--- <cite> tag |
#--- <cite> tag (end tag required) |
sub start_cite { |
sub start_cite { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring .= $token->[4]; |
$currentstring .= $token->[4]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring .= "\\textit{"; |
$currentstring .= '\textit{'; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 894 sub end_cite {
|
Line 910 sub end_cite {
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring .= $token->[2]; |
$currentstring .= $token->[2]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring .= "}"; |
$currentstring .= '}'; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <i> tag |
#-- <i> tag (end tag required) |
sub start_i { |
sub start_i { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 922 sub end_i {
|
Line 938 sub end_i {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <address> tag |
#-- <address> tag (end tag required) |
sub start_address { |
sub start_address { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring .= $token->[4]; |
$currentstring .= $token->[4]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring .= "\\textit{"; |
$currentstring .= '\textit{'; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 940 sub end_address {
|
Line 956 sub end_address {
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring .= $token->[2]; |
$currentstring .= $token->[2]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring .= "}"; |
$currentstring .= '}'; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <dfn> tag |
#-- <dfn> tag (end tag required) |
sub start_dfn { |
sub start_dfn { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring .= $token->[4]; |
$currentstring .= $token->[4]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring .= "\\textit{"; |
$currentstring .= '\textit{'; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 963 sub end_dfn {
|
Line 979 sub end_dfn {
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring .= $token->[2]; |
$currentstring .= $token->[2]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring .= "}"; |
$currentstring .= '}'; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <tt> tag |
#-- <tt> tag (end tag required) |
sub start_tt { |
sub start_tt { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 991 sub end_tt {
|
Line 1007 sub end_tt {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <kbd> tag |
#-- <kbd> tag (end tag required) |
sub start_kbd { |
sub start_kbd { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring .= $token->[4]; |
$currentstring .= $token->[4]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring .= "\\texttt"; |
$currentstring .= '\texttt{'; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 1009 sub end_kbd {
|
Line 1025 sub end_kbd {
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring .= $token->[2]; |
$currentstring .= $token->[2]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring .= "}"; |
$currentstring .= '}'; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <code> tag |
#-- <code> tag (end tag required) |
sub start_code { |
sub start_code { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 1037 sub end_code {
|
Line 1053 sub end_code {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <em> tag |
#-- <em> tag (end tag required) |
sub start_em { |
sub start_em { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 1060 sub end_em {
|
Line 1076 sub end_em {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <q> tag |
#-- <q> tag (end tag required) |
sub start_q { |
sub start_q { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring .= $token->[4]; |
$currentstring .= $token->[4]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring .= "\\emph{"; |
$currentstring .= '\emph{'; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 1078 sub end_q {
|
Line 1094 sub end_q {
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring .= $token->[2]; |
$currentstring .= $token->[2]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring .= "}"; |
$currentstring .= '}'; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <p> tag |
#-- <p> tag (end tag optional) |
|
#optional attribute - align="center|left|right" |
sub start_p { |
sub start_p { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring .= $token->[4]; |
$currentstring .= $token->[4]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
my $signal=1; |
my $align=&Apache::lonxml::get_param('align',$parstack,$safeeval,undef,1); |
foreach my $tag (@$tagstack) {if (lc($tag) eq 'b') {$signal=0;}} |
if ($align eq 'center') { |
if ($signal) {$currentstring .= '\par ';} |
$currentstring='\begin{center}\par'; |
|
} elsif ($align eq 'right') { |
|
$currentstring='\makebox['.$ENV{'form.textwidth'}.']{\hfill\llap{'; |
|
} elsif ($align eq 'left') { |
|
$currentstring='\noindent\makebox['.$ENV{'form.textwidth'}.']{\rlap{'; |
|
} |
|
my $signal=1;#<p> does not work inside <b>...</b> |
|
foreach my $tag (@$tagstack) {if (lc($tag) eq 'b') {$signal=0;} |
|
if (!$signal) {$currentstring = '';} |
|
} |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
sub end_p { |
sub end_p { |
my ($target,$token) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring .= $token->[2]; |
$currentstring .= $token->[2]; |
|
} elsif ($target eq 'tex') { |
|
if ($$tagstack[-1] eq 'p') { |
|
my $align=&Apache::lonxml::get_param('align',$parstack,$safeeval,undef,1); |
|
if ($align eq 'center') { |
|
$currentstring .= '\end{center}'; |
|
} elsif ($align eq 'right') { |
|
$currentstring .= '}}'; |
|
} elsif ($align eq 'left') { |
|
$currentstring .= '}\hfill}'; |
|
} |
|
} |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <br> tag |
#-- <br> tag (end tag forbidden) |
sub start_br { |
sub start_br { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 1129 sub end_br {
|
Line 1166 sub end_br {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <big> tag |
#-- <big> tag (end tag required) |
sub start_big { |
sub start_big { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 1152 sub end_big {
|
Line 1189 sub end_big {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <small> tag |
#-- <small> tag (end tag required) |
sub start_small { |
sub start_small { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 1175 sub end_small {
|
Line 1212 sub end_small {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <basefont> tag |
#-- <basefont> tag (end tag forbidden) |
sub start_basefont { |
sub start_basefont { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 1204 sub end_basefont {
|
Line 1241 sub end_basefont {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <font> tag |
#-- <font> tag (end tag required) |
sub start_font { |
sub start_font { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 1242 sub end_font {
|
Line 1279 sub end_font {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <strike> tag |
#-- <strike> tag (end tag required) |
sub start_strike { |
sub start_strike { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 1268 sub end_strike {
|
Line 1305 sub end_strike {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <s> tag |
#-- <s> tag (end tag required) |
sub start_s { |
sub start_s { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 1294 sub end_s {
|
Line 1331 sub end_s {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <sub> tag |
#-- <sub> tag (end tag required) |
sub start_sub { |
sub start_sub { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring .= $token->[4]; |
$currentstring .= $token->[4]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring .= "\$_{ "; |
$currentstring .= "\$_{"; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 1312 sub end_sub {
|
Line 1349 sub end_sub {
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring .= $token->[2]; |
$currentstring .= $token->[2]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring .= " }\$"; |
$currentstring .= "}\$"; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <sup> tag |
#-- <sup> tag (end tag required) |
sub start_sup { |
sub start_sup { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring .= $token->[4]; |
$currentstring .= $token->[4]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring .= "\$^{ "; |
$currentstring .= "\$^{"; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 1335 sub end_sup {
|
Line 1372 sub end_sup {
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring .= $token->[2]; |
$currentstring .= $token->[2]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring .= " }\$"; |
$currentstring .= "}\$"; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <hr> tag |
#-- <hr> tag (end tag forbidden) |
sub start_hr { |
sub start_hr { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 1380 sub end_hr {
|
Line 1417 sub end_hr {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <div> tag |
#-- <div> tag (end tag required) |
sub start_div { |
sub start_div { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 1399 sub end_div {
|
Line 1436 sub end_div {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <a> tag |
#-- <a> tag (end tag required) |
sub start_a { |
sub start_a { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 1421 sub start_a {
|
Line 1458 sub start_a {
|
} |
} |
|
|
sub end_a { |
sub end_a { |
my ($target,$token,$tagstack,$parstack,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring .= $token->[2]; |
$currentstring .= $token->[2]; |
Line 1429 sub end_a {
|
Line 1466 sub end_a {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <li> tag |
#-- <li> tag (end tag optional) |
sub start_li { |
sub start_li { |
my ($target,$token,$tagstack,$parstack,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[4]; |
$currentstring = $token->[4]; |
Line 1459 sub end_li {
|
Line 1496 sub end_li {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <u> tag |
#-- <u> tag (end tag required) |
sub start_u { |
sub start_u { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 1485 sub end_u {
|
Line 1522 sub end_u {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <ul> tag |
#-- <ul> tag (end tag required) |
sub start_ul { |
sub start_ul { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 1528 sub end_ul {
|
Line 1565 sub end_ul {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <menu> tag |
#-- <menu> tag (end tag required) |
sub start_menu { |
sub start_menu { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 1551 sub end_menu {
|
Line 1588 sub end_menu {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <dir> tag |
#-- <dir> tag (end tag required) |
sub start_dir { |
sub start_dir { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 1574 sub end_dir {
|
Line 1611 sub end_dir {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <ol> tag |
#-- <ol> tag (end tag required) |
sub start_ol { |
sub start_ol { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 1627 sub end_ol {
|
Line 1664 sub end_ol {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <dl> tag |
#-- <dl> tag (end tag required) |
sub start_dl { |
sub start_dl { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[4]; |
$currentstring = $token->[4]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring = '\begin{description}'; |
$currentstring = '\begin{description}'; |
|
@Apache::londefdef::description=(); |
|
$Apache::londefdef::DD_redirection=0; |
|
$Apache::londefdef::DT_redirection=0; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
sub end_dl { |
sub end_dl { |
my ($target,$token) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[2]; |
$currentstring = $token->[2]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring = '\end{description}'; |
if ($Apache::londefdef::DT_redirection) { |
|
my $data=&item_cleanup; |
|
push @Apache::londefdef::description,'\item['.$data.']'; |
|
$Apache::londefdef::DT_redirection=0; |
|
} elsif ($Apache::londefdef::DD_redirection) { |
|
$Apache::londefdef::description[-1].=&Apache::lonxml::endredirection(); |
|
} |
|
foreach my $element (@Apache::londefdef::description) { |
|
$currentstring.=' '.$element.' '; |
|
} |
|
@Apache::londefdef::description=(); |
|
$currentstring.='\end{description}'; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <dt> tag |
#-- <dt> tag (end tag optional) |
sub start_dt { |
sub start_dt { |
my ($target,$token) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring=''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[4]; |
$currentstring = $token->[4]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring = '\item['; |
if ($Apache::londefdef::DT_redirection) { |
|
my $data=&item_cleanup; |
|
push @Apache::londefdef::description,'\item['.$data.']'; |
|
$Apache::londefdef::DT_redirection=0; |
|
} elsif ($Apache::londefdef::DD_redirection) { |
|
$Apache::londefdef::description[-1].=&Apache::lonxml::endredirection(); |
|
$Apache::londefdef::DD_redirection=0; |
|
} |
|
&Apache::lonxml::startredirection(); |
|
$Apache::londefdef::DT_redirection=1; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
sub end_dt { |
sub end_dt { |
my ($target,$token) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[2]; |
$currentstring = $token->[2]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring = ']'; |
my $data=&item_cleanup; |
|
push @Apache::londefdef::description,'\item['.$data.']'; |
|
$Apache::londefdef::DT_redirection=0; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <dd> tag |
sub item_cleanup { |
|
my $item=&Apache::lonxml::endredirection(); |
|
$item=~s/\\begin{center}//g; |
|
$item=~s/\\end{center}//g; |
|
return $item; |
|
} |
|
|
|
#-- <dd> tag (end tag optional) |
sub start_dd { |
sub start_dd { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[4]; |
$currentstring = $token->[4]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
if ($$tagstack[-2] eq 'dl') { |
if ($Apache::londefdef::DT_redirection) { |
$currentstring = ' \item [] '; |
my $data=&item_cleanup; |
} elsif ($$tagstack[-2] eq 'dt') { |
push @Apache::londefdef::description,'\item['.$data.']'; |
$currentstring = ']'; |
$Apache::londefdef::DT_redirection=0; |
} |
} |
|
$Apache::londefdef::DD_redirection=1; |
|
&Apache::lonxml::startredirection(); |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
sub end_dd { |
sub end_dd { |
my ($target,$token) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[2]; |
$currentstring = $token->[2]; |
} |
} elsif ($target eq 'tex') { |
|
$Apache::londefdef::description[-1].=&Apache::lonxml::endredirection(); |
|
$Apache::londefdef::DD_redirection=0; |
|
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <table> tag |
#-- <table> tag (end tag required) |
sub start_table { |
sub start_table { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $textwidth=''; |
my $textwidth=''; |
Line 1776 sub end_table {
|
Line 1850 sub end_table {
|
} |
} |
} |
} |
#continues trying estimate the width of raw data |
#continues trying estimate the width of raw data |
# $currentstring.=' SSS '.$Apache::londefdef::table[-1]{'lengthrow'}[0].' FFF '; ####for test only |
|
my @length_raw_row = split(/,/,$Apache::londefdef::table[-1]{'lengthrow'}[0]); |
my @length_raw_row = split(/,/,$Apache::londefdef::table[-1]{'lengthrow'}[0]); |
for (my $in=1;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) { |
for (my $in=1;$in<=$Apache::londefdef::table[-1]{'row_number'};$in++) { |
my @length_row = split(/,/,$Apache::londefdef::table[-1]{'lengthrow'}[$in]); |
my @length_row = split(/,/,$Apache::londefdef::table[-1]{'lengthrow'}[$in]); |
# $currentstring.=' SSS '.$Apache::londefdef::table[-1]{'lengthrow'}[$in].' FFF '; ####for test only |
|
for (my $jn=0;$jn<=$#length_row;$jn++) { |
for (my $jn=0;$jn<=$#length_row;$jn++) { |
if ($length_raw_row[$jn]<$length_row[$jn]) {$length_raw_row[$jn]=$length_row[$jn];} |
if ($length_raw_row[$jn]<$length_row[$jn]) {$length_raw_row[$jn]=$length_row[$jn];} |
} |
} |
Line 1797 sub end_table {
|
Line 1869 sub end_table {
|
$needed=$#length_row_final-$needed+1; |
$needed=$#length_row_final-$needed+1; |
for (my $jn=0;$jn<=$#length_row_final;$jn++) { |
for (my $jn=0;$jn<=$#length_row_final;$jn++) { |
if ($length_row_final[$jn]==0) { |
if ($length_row_final[$jn]==0) { |
if ($length_raw_row[$jn]<$available_length/3) { |
if ($length_raw_row[$jn]<$available_length) { |
$length_row_final[$jn]=$length_raw_row[$jn]; |
$length_row_final[$jn]=$length_raw_row[$jn]; |
$available_length=$available_length-$length_raw_row[$jn]; |
$available_length=$available_length-$length_raw_row[$jn]; |
$needed--; |
$needed--; |
Line 1938 sub end_td_tex {
|
Line 2010 sub end_td_tex {
|
$newdata=~s/\\vskip \d*\.?\d*\s*mm/THISISJUSTTEMPORARYSEPARATOR/g; |
$newdata=~s/\\vskip \d*\.?\d*\s*mm/THISISJUSTTEMPORARYSEPARATOR/g; |
my @newdata=split(/THISISJUSTTEMPORARYSEPARATOR/,$newdata); |
my @newdata=split(/THISISJUSTTEMPORARYSEPARATOR/,$newdata); |
foreach my $elementdata (@newdata) { |
foreach my $elementdata (@newdata) { |
$elementdata=~s/^\s+(\S.*)/$1/; |
my $lengthnewdata=1.8*LATEX_length($elementdata); |
$elementdata=~s/(.*\S)\s+$/$1/; |
|
$elementdata=~s/(\s)+/$1/; |
|
my $lengthnewdata=1.8*length($elementdata); |
|
if ($lengthnewdata>$current_length) {$current_length=$lengthnewdata;} |
if ($lengthnewdata>$current_length) {$current_length=$lengthnewdata;} |
} |
} |
} else { |
} else { |
$current_length=1.8*length($data); |
$current_length=1.8*LATEX_length($data); |
} |
} |
$Apache::londefdef::table[-1]{'length'} .= $current_length.','; |
$Apache::londefdef::table[-1]{'length'} .= $current_length.','; |
$Apache::londefdef::table[-1]{'TeXlength'} .= '0,'; |
$Apache::londefdef::table[-1]{'TeXlength'} .= '0,'; |
Line 2026 sub end_th {
|
Line 2095 sub end_th {
|
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
#-- <img> tag |
#-- <img> tag (end tag forbidden) |
sub start_img { |
sub start_img { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $src = &Apache::lonxml::get_param('src',$parstack,$safeeval, |
my $src = &Apache::lonxml::get_param('src',$parstack,$safeeval, |
undef,1); |
undef,1); |
|
if (not $src and ($target eq 'web' or $target eq 'tex')) { |
|
my $inside = &Apache::lonxml::get_all_text("/img",$parser); |
|
&Apache::lonnet::logthis("inside was $inside"); |
|
return ''; |
|
} |
$Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=$src; |
$Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]=$src; |
my $currentstring = ''; |
my $currentstring = ''; |
my $width_param = ''; |
|
my $height_param = ''; |
|
my $scaling = .3; |
my $scaling = .3; |
if ($target eq 'web') { |
if ($target eq 'web') { |
if ($ENV{'browser.imagesuppress'} ne 'on') { |
if ($ENV{'browser.imagesuppress'} ne 'on') { |
Line 2050 sub start_img {
|
Line 2122 sub start_img {
|
} |
} |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src); |
$src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src); |
&image_replication($src); |
|
#if original gif/jpg/png file exist do following: |
#if original gif/jpg/png file exist do following: |
if (-e $src) { |
if (-e $src) { |
#defines the default size of image |
#what is the image size? |
my $image = Image::Magick->new; |
my $width_param=&image_size($src,$scaling,$parstack,$safeeval); |
my $current_figure = $image->Read($src); |
my ($file,$path)=&file_path($src); |
$width_param = $image->Get('width') * $scaling;; |
|
$height_param = $image->Get('height') * $scaling;; |
|
undef $image; |
|
#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, |
|
undef,1); |
|
if ($TeXwidth ne '') { |
|
if ($TeXwidth=~/(\d+)\s*\%/) { |
|
$width_param = $1*$ENV{'form.textwidth'}/100; |
|
} else { |
|
$width_param = $TeXwidth; |
|
} |
|
} elsif ($TeXheight ne '') { |
|
$width_param = $TeXheight/$height_param*$width_param; |
|
} elsif ($width ne '') { |
|
$width_param = $width*$scaling; |
|
} |
|
if ($width_param > $ENV{'form.textwidth'}) {$width_param =0.95*$ENV{'form.textwidth'}} |
|
my $file; |
|
my $path; |
|
if ($src =~ m!(.*)/([^/]*)$!) { |
|
$file = $2; |
|
$path = $1.'/'; |
|
} |
|
my $newsrc = $src; |
my $newsrc = $src; |
$newsrc =~ s/\.(gif|jpg|png)$/.eps/i; |
$newsrc =~ s/\.(gif|jpg|png)$/.eps/i; |
$file=~s/\.(gif|jpg|png)$/.eps/i; |
$file=~s/\.(gif|jpg|png)$/.eps/i; |
Line 2101 sub start_img {
|
Line 2146 sub start_img {
|
$currentstring .= '\vskip 1 mm \noindent\graphicspath{{'.$path.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} '; |
$currentstring .= '\vskip 1 mm \noindent\graphicspath{{'.$path.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} '; |
} |
} |
} else { |
} else { |
#there aren't eps or ps - so create eps |
#care about eps dynamical generation |
my $temp_file; |
$currentstring.='\vskip 1 mm '.&eps_generation($src,$file,$width_param); |
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 .= '\vskip 1 mm \graphicspath{{/home/httpd/prtspool/}}\includegraphics[width='.$width_param.' mm]{'.$file.'} '; |
|
} |
} |
} |
} |
} else { |
} else { |
Line 2123 sub start_img {
|
Line 2164 sub start_img {
|
#<allow> tag will care about replication |
#<allow> tag will care about replication |
} |
} |
} |
} |
|
} elsif ($target eq 'edit') { |
|
$currentstring .=&Apache::edit::tag_start($target,$token); |
|
$currentstring .=&Apache::edit::text_arg('Image Url:','src',$token,70). |
|
&Apache::edit::browse('src',undef,'alt').' '. |
|
&Apache::edit::search('src',undef,'alt').'<br />'; |
|
$currentstring .=&Apache::edit::text_arg('Description:','alt',$token,70).'<br />'; |
|
$currentstring .=&Apache::edit::text_arg('width (pixel):','width',$token,5); |
|
$currentstring .=&Apache::edit::text_arg('height (pixel):','height',$token,5).'<br />'; |
|
$currentstring .=&Apache::edit::text_arg('TeXwidth (mm):','TeXwidth',$token,5); |
|
$currentstring .=&Apache::edit::text_arg('TeXheight (mm):','TeXheight',$token,5); |
|
$currentstring .=&Apache::edit::end_row().&Apache::edit::start_spanning_row(); |
|
my $src=&Apache::lonxml::get_param('src',$parstack,$safeeval); |
|
my $alt=&Apache::lonxml::get_param('alt',$parstack,$safeeval); |
|
my $width=&Apache::lonxml::get_param('width',$parstack,$safeeval); |
|
my $height=&Apache::lonxml::get_param('height',$parstack,$safeeval); |
|
$currentstring .= '<img src="'.$src.'" alt="'.$alt.'" '; |
|
if ($width) { $currentstring.=' width="'.$width.'" '; } |
|
if ($height) { $currentstring.=' height="'.$height.'" '; } |
|
$currentstring .= ' />'; |
|
} elsif ($target eq 'modified') { |
|
my $constructtag=&Apache::edit::get_new_args($token,$parstack, |
|
$safeeval,'src','alt', |
|
'TeXwidth','TeXheight', |
|
'width','height'); |
|
$src=$token->[2]{'src'}; |
|
if (!$token->[2]{'width'} && !$token->[2]{'height'}) { |
|
$src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src); |
|
&image_replication($src); |
|
if (-e $src) { |
|
my $image = Image::Magick->new; |
|
my ($width, $height, $size, $format) = $image->Ping($src); |
|
if ($width && $height) { |
|
$token->[2]{'width'} =$width; |
|
$token->[2]{'height'}=$height; |
|
$constructtag=1; |
|
} |
|
} |
|
} |
|
if ($constructtag) {$currentstring=&Apache::edit::rebuild_tag($token);} |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 2138 sub end_img {
|
Line 2218 sub end_img {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <applet> tag |
#-- <applet> tag (end tag required) |
sub start_applet { |
sub start_applet { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
|
|
Line 2163 sub start_applet {
|
Line 2243 sub start_applet {
|
$currentstring='[APPLET: '.$alttag.']'; |
$currentstring='[APPLET: '.$alttag.']'; |
} |
} |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring = " \\begin{figure} "; |
my $alttag= &Apache::lonxml::get_param('alt',$parstack, |
|
$safeeval,undef,1); |
|
unless ($alttag) { |
|
my $code=&Apache::lonxml::get_param('code',$parstack,$safeeval, |
|
undef,1); |
|
$alttag=&Apache::lonmeta::alttag($Apache::lonxml::pwd[-1], |
|
$code); |
|
} |
|
$currentstring.='\begin{center} \fbox{Java Applet: '.$alttag. |
|
'.}\end{center}'; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 2174 sub end_applet {
|
Line 2263 sub end_applet {
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[2]; |
$currentstring = $token->[2]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring = " \\end{figure}"; |
|
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <embed> tag |
#-- <embed> tag (end tag optional/required) |
sub start_embed { |
sub start_embed { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $src=&Apache::lonxml::get_param('src',$parstack,$safeeval,undef,1); |
my $src=&Apache::lonxml::get_param('src',$parstack,$safeeval,undef,1); |
Line 2197 sub start_embed {
|
Line 2285 sub start_embed {
|
$currentstring='[EMBED: '.$alttag.']'; |
$currentstring='[EMBED: '.$alttag.']'; |
} |
} |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring = " \\begin{figure} "; |
|
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 2207 sub end_embed {
|
Line 2294 sub end_embed {
|
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[2]; |
$currentstring = $token->[2]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring = " \\end{figure}"; |
|
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <param> tag |
#-- <param> tag (end tag forbidden) |
sub start_param { |
sub start_param { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
if (&Apache::lonxml::get_param |
if (&Apache::lonxml::get_param |
Line 2227 sub start_param {
|
Line 2313 sub start_param {
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[4]; |
$currentstring = $token->[4]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring = " \\begin{figure} "; |
|
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 2238 sub end_param {
|
Line 2323 sub end_param {
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[2]; |
$currentstring = $token->[2]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring = " \\end{figure}"; |
|
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 2270 sub end_allow {
|
Line 2354 sub end_allow {
|
return ''; |
return ''; |
} |
} |
|
|
#-- Frames |
#-- Frames (end tag required) |
|
#-- <frameset> |
sub start_frameset { |
sub start_frameset { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
if (!$Apache::lonxml::registered) { |
if (!$Apache::lonxml::registered && |
|
$ENV{'request.state'} eq 'published') { |
$currentstring.='<head>'. |
$currentstring.='<head>'. |
&Apache::lonmenu::registerurl(undef,$target).'</head>'; |
&Apache::lonmenu::registerurl(undef,$target).'</head>'; |
} |
} |
Line 2315 sub end_frameset {
|
Line 2401 sub end_frameset {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <xmp> |
#-- <xmp> (end tag required) |
sub start_xmp { |
sub start_xmp { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2338 sub end_xmp {
|
Line 2424 sub end_xmp {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <pre> |
#-- <pre> (end tag required) |
sub start_pre { |
sub start_pre { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2421 sub end_blankspace {
|
Line 2507 sub end_blankspace {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <abbr> tag |
#-- <abbr> tag (end tag required) |
sub start_abbr { |
sub start_abbr { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2440 sub end_abbr {
|
Line 2526 sub end_abbr {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <acronym> tag |
#-- <acronym> tag (end tag required) |
sub start_acronym { |
sub start_acronym { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2459 sub end_acronym {
|
Line 2545 sub end_acronym {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <area> tag |
#-- <area> tag (end tag forbidden) |
sub start_area { |
sub start_area { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2478 sub end_area {
|
Line 2564 sub end_area {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <base> tag |
#-- <base> tag (end tag forbidden) |
sub start_base { |
sub start_base { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2497 sub end_base {
|
Line 2583 sub end_base {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <bdo> tag |
#-- <bdo> tag (end tag required) |
sub start_bdo { |
sub start_bdo { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2516 sub end_bdo {
|
Line 2602 sub end_bdo {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <bgsound> tag |
#-- <bgsound> tag (end tag optional) |
sub start_bgsound { |
sub start_bgsound { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2535 sub end_bgsound {
|
Line 2621 sub end_bgsound {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <blink> tag |
#-- <blink> tag (end tag required) |
sub start_blink { |
sub start_blink { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2554 sub end_blink {
|
Line 2640 sub end_blink {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <blockquote> tag |
#-- <blockquote> tag (end tag required) |
sub start_blockquote { |
sub start_blockquote { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2573 sub end_blockquote {
|
Line 2659 sub end_blockquote {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <button> tag |
#-- <button> tag (end tag required) |
sub start_button { |
sub start_button { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2592 sub end_button {
|
Line 2678 sub end_button {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <caption> tag |
#-- <caption> tag (end tag required) |
sub start_caption { |
sub start_caption { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2611 sub end_caption {
|
Line 2697 sub end_caption {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <col> tag |
#-- <col> tag (end tag forbdden) |
sub start_col { |
sub start_col { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2630 sub end_col {
|
Line 2716 sub end_col {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <colgroup> tag |
#-- <colgroup> tag (end tag optional) |
sub start_colgroup { |
sub start_colgroup { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2649 sub end_colgroup {
|
Line 2735 sub end_colgroup {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <del> tag |
#-- <del> tag (end tag required) |
sub start_del { |
sub start_del { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2668 sub end_del {
|
Line 2754 sub end_del {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <fieldset> tag |
#-- <fieldset> tag (end tag required) |
sub start_fieldset { |
sub start_fieldset { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2687 sub end_fieldset {
|
Line 2773 sub end_fieldset {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <frame> tag |
#-- <frame> tag (end tag forbidden) |
sub start_frame { |
sub start_frame { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2706 sub end_frame {
|
Line 2792 sub end_frame {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <iframe> tag |
#-- <iframe> tag (end tag required) |
sub start_iframe { |
sub start_iframe { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2725 sub end_iframe {
|
Line 2811 sub end_iframe {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <ins> tag |
#-- <ins> tag (end tag required) |
sub start_ins { |
sub start_ins { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2744 sub end_ins {
|
Line 2830 sub end_ins {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <isindex> tag |
#-- <isindex> tag (end tag forbidden) |
sub start_isindex { |
sub start_isindex { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2763 sub end_isindex {
|
Line 2849 sub end_isindex {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <keygen> tag |
#-- <keygen> tag (end tag forbidden) |
sub start_keygen { |
sub start_keygen { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2801 sub end_label {
|
Line 2887 sub end_label {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <layer> tag |
#-- <layer> tag (end tag required) |
sub start_layer { |
sub start_layer { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2820 sub end_layer {
|
Line 2906 sub end_layer {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <legend> tag |
#-- <legend> tag (end tag required) |
sub start_legend { |
sub start_legend { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2839 sub end_legend {
|
Line 2925 sub end_legend {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <link> tag |
#-- <link> tag (end tag forbidden) |
sub start_link { |
sub start_link { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2858 sub end_link {
|
Line 2944 sub end_link {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <marquee> tag |
#-- <marquee> tag (end tag optional) |
sub start_marquee { |
sub start_marquee { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2877 sub end_marquee {
|
Line 2963 sub end_marquee {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <malticol> tag |
#-- <multicol> tag (end tag required) |
sub start_malticol { |
sub start_multicol { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
Line 2887 sub start_malticol {
|
Line 2973 sub start_malticol {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
sub end_malticol { |
sub end_multicol { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
Line 2896 sub end_malticol {
|
Line 2982 sub end_malticol {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <nobr> tag |
#-- <nobr> tag (end tag required) |
sub start_nobr { |
sub start_nobr { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[4]; |
$currentstring = $token->[4]; |
} |
} elsif ($target eq 'tex') { |
|
$currentstring='\mbox{'; |
|
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
Line 2911 sub end_nobr {
|
Line 2999 sub end_nobr {
|
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[2]; |
$currentstring = $token->[2]; |
} |
} elsif ($target eq 'tex') { |
|
$currentstring='}'; |
|
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <noembed> tag |
#-- <noembed> tag (end tag required) |
sub start_noembed { |
sub start_noembed { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2934 sub end_noembed {
|
Line 3024 sub end_noembed {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <noframes> tag |
#-- <noframes> tag (end tag required) |
sub start_noframes { |
sub start_noframes { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2953 sub end_noframes {
|
Line 3043 sub end_noframes {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <nolayer> tag |
#-- <nolayer> tag (end tag required) |
sub start_nolayer { |
sub start_nolayer { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2972 sub end_nolayer {
|
Line 3062 sub end_nolayer {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <noscript> tag |
#-- <noscript> tag (end tag required) |
sub start_noscript { |
sub start_noscript { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2991 sub end_noscript {
|
Line 3081 sub end_noscript {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <object> tag |
#-- <object> tag (end tag required) |
sub start_object { |
sub start_object { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 3010 sub end_object {
|
Line 3100 sub end_object {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <optgroup> tag |
#-- <optgroup> tag (end tag required) |
sub start_optgroup { |
sub start_optgroup { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 3029 sub end_optgroup {
|
Line 3119 sub end_optgroup {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <samp> tag |
#-- <samp> tag (end tag required) |
sub start_samp { |
sub start_samp { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[4]; |
$currentstring = $token->[4]; |
} |
} elsif ($target eq 'tex') { |
|
$currentstring='\texttt{'; |
|
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
Line 3044 sub end_samp {
|
Line 3136 sub end_samp {
|
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[2]; |
$currentstring = $token->[2]; |
} |
} elsif ($target eq 'tex') { |
|
$currentstring='}'; |
|
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
Line 3067 sub end_server {
|
Line 3161 sub end_server {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <spacer> tag |
#-- <spacer> tag (end tag forbidden) |
sub start_spacer { |
sub start_spacer { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 3086 sub end_spacer {
|
Line 3180 sub end_spacer {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <span> tag |
#-- <span> tag (end tag required) |
sub start_span { |
sub start_span { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 3105 sub end_span {
|
Line 3199 sub end_span {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <tbody> tag |
#-- <tbody> tag (end tag optional) |
sub start_tbody { |
sub start_tbody { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 3225 sub end_hideweboutput {
|
Line 3319 sub end_hideweboutput {
|
|
|
sub image_replication { |
sub image_replication { |
my $src = shift; |
my $src = shift; |
if (not -e $src) { |
if (not -e $src) { &Apache::lonnet::repcopy($src); } |
#replicates image itself |
#replicates eps or ps |
&Apache::lonnet::repcopy($src); |
my $epssrc = my $pssrc = $src; |
#replicates eps or ps |
$epssrc =~ s/\.(gif|jpg|jpeg|png)$/.eps/i; |
my $newsrc = $src; |
$pssrc =~ s/\.(gif|jpg|jpeg|png)$/.ps/i; |
$newsrc =~ s/\.(gif|jpg|jpeg|png)$/.eps/i; |
if (not -e $epssrc && not -e $pssrc) { |
if (not -e $newsrc) { |
my $result=&Apache::lonnet::repcopy($epssrc); |
if (&Apache::lonnet::repcopy($newsrc) ne 'OK') { |
if ($result ne OK) { &Apache::lonnet::repcopy($pssrc); } |
$newsrc =~ s/\.eps$/\.ps/; |
|
&Apache::lonnet::repcopy($newsrc); |
|
} |
|
} |
|
} |
} |
return ''; |
return ''; |
} |
} |
|
|
|
sub image_size { |
|
my ($src,$scaling,$parstack,$safeeval)=@_; |
|
#size of image from gif/jpg/jpeg/png |
|
my $image = Image::Magick->new; |
|
my $current_figure = $image->Read($src); |
|
my $width_param = $image->Get('width') * $scaling;; |
|
my $height_param = $image->Get('height') * $scaling;; |
|
undef $image; |
|
#do we have any specified LaTeX size of the picture? |
|
my $TeXwidth = &Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval); |
|
my $TeXheight = &Apache::lonxml::get_param('TeXheight',$parstack,$safeeval); |
|
#do we have any specified web size of the picture? |
|
my $width = &Apache::lonxml::get_param('width',$parstack,$safeeval, |
|
undef,1); |
|
if ($TeXwidth ne '') { |
|
if ($TeXwidth=~/(\d+)\s*\%/) { |
|
$width_param = $1*$ENV{'form.textwidth'}/100; |
|
} else { |
|
$width_param = $TeXwidth; |
|
} |
|
} elsif ($TeXheight ne '') { |
|
$width_param = $TeXheight/$height_param*$width_param; |
|
} elsif ($width ne '') { |
|
$width_param = $width*$scaling; |
|
} |
|
if ($width_param > $ENV{'form.textwidth'}) {$width_param =0.95*$ENV{'form.textwidth'}} |
|
return $width_param; |
|
} |
|
|
|
sub eps_generation { |
|
my ($src,$file,$width_param) = @_; |
|
my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat"; |
|
my $temp_file = Apache::File->new('>>'.$filename); |
|
print $temp_file "$src\n"; |
|
my $newsrc = $src; |
|
$newsrc =~ s/(\.gif|\.jpg|\.jpeg)$/\.eps/i; |
|
$newsrc=~s/\/home\/httpd\/html\/res//; |
|
$newsrc=~s/\/home\/([^\/]*)\/public_html\//\/$1\//; |
|
$newsrc=~s/\/\.\//\//; |
|
$newsrc=~s/\/([^\/]+)\.(ps|eps)/\//; |
|
return ' \graphicspath{{/home/httpd/prtspool'.$newsrc.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} '; |
|
} |
|
|
|
sub file_path { |
|
my $src=shift; |
|
my ($file,$path); |
|
if ($src =~ m!(.*)/([^/]*)$!) { |
|
$file = $2; |
|
$path = $1.'/'; |
|
} |
|
return $file,$path; |
|
} |
|
|
sub recalc { |
sub recalc { |
my $argument = shift; |
my $argument = shift; |
if (not $argument=~/(mm|cm|in|pc|pt)/) {return $argument.' mm';} |
if (not $argument=~/(mm|cm|in|pc|pt)/) {return $argument.' mm';} |
Line 3259 sub recalc {
|
Line 3402 sub recalc {
|
return $value.' mm'; |
return $value.' mm'; |
} |
} |
|
|
|
sub LATEX_length { |
|
my $garbage=shift; |
|
$garbage=~s/^\s+(\S.*)/$1/; |
|
$garbage=~s/(.*\S)\s+$/$1/; |
|
$garbage=~s/(\s)+/$1/; |
|
$garbage=~s/(\\begin{([^\}]+)}|\\end{([^\}]+)})//g; |
|
$garbage=~s/(\$\_\{|\$\_|\$\^{|\$\^|\}\$|\$)//g; |
|
$garbage=~s/(\\alpha|\\beta|\\gamma|\\delta|\\epsilon|\\verepsilon|\\zeta|\\eta|\\theta|\\vartheta|\\iota|\\kappa|\\lambda|\\mu|\\nu|\\xi|\\pi|\\varpi|\\rho|\\varrho|\\sigma|\\varsigma|\\tau|\\upsilon|\\phi|\\varphi|\\chi|\\psi|\\omega|\\Gamma|\\Delta|\\Theta|\\Lambda|\\Xi|\\Pi|\\Sigma|\\Upsilon|\\Phi|\\Psi|\\Omega)/1/g; |
|
$garbage=~s/(\\pm|\\mp|\\times|\\div|\\cdot|\\ast|\\star|\\dagger|\\ddagger|\\amalg|\\cap|\\cup|\\uplus|\\sqcap|\\sqcup|\\vee|\\wedge|\\oplus|\\ominus|\\otimes|\\circ|\\bullet|\\diamond|\\lhd|\\rhd|\\unlhd|\\unrhd|\\oslash|\\odot|\\bigcirc|\\Box|\\Diamond|\\bigtriangleup|\\bigtriangledown|\\triangleleft|\\triangleright|\\setminus|\\wr)/1/g; |
|
$garbage=~s/(\\le|\\ll|\\leq|\\ge|\\geq|\\gg|\\neq|\\doreq|\\sim|\\simeq|\\subset|\\subseteq|\\sqsubset|\\sqsubseteq|\\in|\\vdash|\\models|\\supset|\\supseteq|\\sqsupset|\\sqsupseteq|\\ni|\\dash|\\perp|\\approx|\\cong|\\equiv|\\propto|\\prec|\\preceq|\\parallel|\\asymp|\\smile|\\frown|\\bowtie|\\succ|\\succeq|\\mid)/1/g; |
|
$garbage=~s/(\\not<|\\\\not\\le|\\not\\prec|\\not\\preceq|\\not\\subset|\\not\\subseteq|\\not\\sqsubseteq|\\not\\in|\\not>|\\not\\ge|\\not\\succ|\\notsucceq|\\not\\supset|\\notsupseteq|\\not\\sqsupseteq|\\notin|\\not=|\\not\\equiv|\\not\\sim|\\not\\simeq|\\not\\approx|\\not\\cong|\\not\\asymp)/1/g; |
|
$garbage=~s/(\\leftarrow|\\gets|\\Leftarrow|\\rightarrow|\\to|\\Rightarrow|\\leftrightarrow|\\Leftrightarrow|\\mapsto|\\hookleftarrow|\\leftharpoonup|\\leftkarpoondown|\\rightleftharpoons|\\longleftarrow|\\Longleftarrow|\\longrightarrow|\\Longrightarrow|\\longleftrightarrow|\\Longleftrightarrow|\\longmapsto|\\hookrightarrow|\\rightharpoonup|\\rightharpoondown|\\uparrow|\\Uparrow|\\downarrow|\\Downarrow|\\updownarrow|\\Updownarrow|\\nearrow|\\searrow|\\swarrow|\\nwarrow)/1/g; |
|
$garbage=~s/(\\aleph|\\hbar|\\imath|\\jmath|\\ell|\\wp|\\Re|\\Im|\\mho|\\prime|\\emptyset|\\nabla|\\surd|\\partial|\\top|\\bot|\\vdash|\\dashv|\\forall|\\exists|\\neg|\\flat|\\natural|\\sharp|\\\||\\angle|\\backslash|\\Box|\\Diamond|\\triangle|\\clubsuit|\\diamondsuit|\\heartsuit|\\spadesuit|\\Join|\\infty)/ /g; |
|
$garbage=~s/(\\hat{([^}]+)}|\\check{([^}]+)}|\\dot{([^}]+)}|\\breve{([^}]+)}|\\acute{([^}]+)}|\\ddot{([^}]+)}|\\grave{([^}]+)}|\\tilde{([^}]+)}|\\mathring{([^}]+)}|\\bar{([^}]+)}|\\vec{([^}]+)})/$1/g; |
|
my $value=length($garbage); |
|
return $value; |
|
} |
|
|
|
|
|
|
|
|
1; |
1; |
__END__ |
__END__ |