--- loncom/xml/londefdef.pm 2004/08/25 20:16:44 1.231.2.2 +++ loncom/xml/londefdef.pm 2004/10/18 22:02:02 1.243 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.231.2.2 2004/08/25 20:16:44 albertel Exp $ +# $Id: londefdef.pm,v 1.243 2004/10/18 22:02:02 albertel Exp $ # # # Copyright Michigan State University Board of Trustees @@ -63,9 +63,9 @@ 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; + undef(@Apache::londefdef::description); + @Apache::londefdef::DD=(0); + @Apache::londefdef::DT=(0); $Apache::londefdef::list_index=0; } @@ -151,11 +151,10 @@ sub start_html { my $options=$ENV{'course.'.$ENV{'request.course.id'}.'.tthoptions'}; &Apache::lontexconvert::init_tth(); if ($target eq 'web' || $target eq 'edit') { - $currentstring = &Apache::lonxml::xmlbegin(). - &Apache::lonxml::fontsettings(); + $currentstring = &Apache::lonxml::xmlbegin(); } elsif ($target eq 'tex') { @Apache::londefdef::table = (); - $currentstring .= '\documentclass[letterpaper]{article}'; + $currentstring .= '\documentclass[letterpaper]{book}'; if ($ENV{'form.latex_type'}=~'batchmode') {$currentstring .='\batchmode';} $currentstring .= '\newcommand{\keephidden}[1]{}'. '\renewcommand{\deg}{$^{\circ}$}'. @@ -177,10 +176,10 @@ sub start_html { } sub end_html { - my ($target,$token) = @_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; my $currentstring = ''; if ($target eq 'web') { - $currentstring = &Apache::lonxml::xmlend(); + $currentstring = &Apache::lonxml::xmlend($target,$parser); } return $currentstring; } @@ -190,7 +189,7 @@ sub start_head { my ($target,$token) = @_; my $currentstring = ''; if ($target eq 'web') { - $currentstring = $token->[4]; + $currentstring = $token->[4].&Apache::lonxml::fontsettings(); } return $currentstring; } @@ -1698,9 +1697,10 @@ sub start_dl { $currentstring = $token->[4]; } elsif ($target eq 'tex') { $currentstring = '\begin{description}'; - @Apache::londefdef::description=(); - $Apache::londefdef::DD_redirection=0; - $Apache::londefdef::DT_redirection=0; + $Apache::londefdef::DL++; + push(@Apache::londefdef::description,[]); + $Apache::londefdef::DD[$Apache::londefdef::DL]=0; + $Apache::londefdef::DT[$Apache::londefdef::DL]=0; } return $currentstring; } @@ -1711,18 +1711,16 @@ sub end_dl { if ($target eq 'web') { $currentstring = $token->[2]; } elsif ($target eq 'tex') { - 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) { + if ($Apache::londefdef::DT[-1]) { &end_dt(@_); } + if ($Apache::londefdef::DD[-1]) { &end_dd(@_); } + foreach my $element (@{$Apache::londefdef::description[-1]}) { $currentstring.=' '.$element.' '; } - @Apache::londefdef::description=(); + pop(@Apache::londefdef::description); $currentstring.='\end{description}'; + delete($Apache::londefdef::DD[$Apache::londefdef::DL]); + delete($Apache::londefdef::DT[$Apache::londefdef::DL]); + $Apache::londefdef::DL--; } return $currentstring; } @@ -1734,16 +1732,10 @@ sub start_dt { if ($target eq 'web') { $currentstring = $token->[4]; } elsif ($target eq 'tex') { - 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; - } + if ($Apache::londefdef::DT[-1]) { &end_dt(@_); } + if ($Apache::londefdef::DD[-1]) { &end_dd(@_); } &Apache::lonxml::startredirection(); - $Apache::londefdef::DT_redirection=1; + $Apache::londefdef::DT[-1]++; } return $currentstring; } @@ -1754,9 +1746,11 @@ sub end_dt { if ($target eq 'web') { $currentstring = $token->[2]; } elsif ($target eq 'tex') { - my $data=&item_cleanup; - push @Apache::londefdef::description,'\item['.$data.']'; - $Apache::londefdef::DT_redirection=0; + if ($Apache::londefdef::DT[-1]) { + my $data=&item_cleanup(); + push(@{$Apache::londefdef::description[-1]},'\item['.$data.']'); + $Apache::londefdef::DT[-1]--; + } } return $currentstring; } @@ -1775,12 +1769,11 @@ sub start_dd { if ($target eq 'web') { $currentstring = $token->[4]; } elsif ($target eq 'tex') { - if ($Apache::londefdef::DT_redirection) { - my $data=&item_cleanup; - push @Apache::londefdef::description,'\item['.$data.']'; - $Apache::londefdef::DT_redirection=0; - } - $Apache::londefdef::DD_redirection=1; + if ($Apache::londefdef::DT[-1]) { &end_dt(@_); } + if ($Apache::londefdef::DD[-1]) { &end_dd(@_);} + push(@{$Apache::londefdef::description[-1]},''); + $Apache::londefdef::description[-1]->[-1].=' \strut '; + $Apache::londefdef::DD[-1]++; &Apache::lonxml::startredirection(); } return $currentstring; @@ -1792,8 +1785,9 @@ sub end_dd { if ($target eq 'web') { $currentstring = $token->[2]; } elsif ($target eq 'tex') { - $Apache::londefdef::description[-1].=&Apache::lonxml::endredirection(); - $Apache::londefdef::DD_redirection=0; + $Apache::londefdef::description[-1]->[-1].= + &Apache::lonxml::endredirection().' \vskip 0mm '; + $Apache::londefdef::DD[-1]--; } return $currentstring; } @@ -2434,13 +2428,9 @@ sub start_img { $currentstring.='[IMAGE: '.$alttag.']'; } } elsif ($target eq 'tex') { + my $oldSRC=$src; + $oldSRC=~s/\.(gif|jpg|png)$/\.eps/; $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src); - #if uploaded restore the path - if ($src=~/^\/uploaded\/([^\/]+)\/([^\/]+)\/simplepage\/([^\/]+)$/) { - $src=&Apache::loncommon::propath($1,$2).'/userfiles/simplepage/'.$3; - } elsif ($src=~/^\/uploaded\/([^\/]+)\/([^\/]+)\/aboutme\/([^\/]+)$/) { - $src=&Apache::loncommon::propath($1,$2).'/userfiles/aboutme/'.$3; - } #if original gif/jpg/png file exist do following: if (-e $src) { #what is the image size? @@ -2448,6 +2438,7 @@ sub start_img { my ($file,$path)=&file_path($src); my $newsrc = $src; $newsrc =~ s/\.(gif|jpg|png)$/.eps/i; + &Apache::lonnet::repcopy($oldSRC); $file=~s/\.(gif|jpg|png)$/.eps/i; #where can we find the picture? if (-e $newsrc) { @@ -2493,6 +2484,8 @@ sub start_img { $currentstring .=&Apache::edit::text_arg('height (pixel):','height',$token,5).'
'; $currentstring .=&Apache::edit::text_arg('TeXwidth (mm):','TeXwidth',$token,5); $currentstring .=&Apache::edit::text_arg('TeXheight (mm):','TeXheight',$token,5); + $currentstring .=&Apache::edit::select_arg('Alignment:','align', + ['','bottom','middle','top','left','right'],$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); @@ -2506,7 +2499,7 @@ sub start_img { my ($osrc,$owidth,$oheight)= ($token->[2]{'src'},$token->[2]{'width'},$token->[2]{'height'}); my $ctag=&Apache::edit::get_new_args($token,$parstack, - $safeeval,'src','alt', + $safeeval,'src','alt','align', 'TeXwidth','TeXheight', 'width','height'); my ($nsrc,$nwidth,$nheight)= @@ -2673,7 +2666,7 @@ sub start_allow { $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src); $Apache::lonxml::extlinks[$#Apache::lonxml::extlinks+1]= &Apache::lonnet::clutter($src); - &image_replication($src); + if ($target eq 'tex') { &image_replication($src); } my $result; if ($target eq 'edit') { $result .=&Apache::edit::tag_start($target,$token); @@ -3714,7 +3707,11 @@ sub eps_generation { $newsrc=~s/\/home\/httpd\/lonUsers//; $newsrc=~s/\/([^\/]+)\/(\w)\/(\w)\/(\w)\//\/$1\//; } - return ' \graphicspath{{/home/httpd/prtspool'.$newsrc.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} '; + if ($newsrc=~/\/userfiles\//) { + return ' \graphicspath{{'.$newsrc.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} '; + } else { + return ' \graphicspath{{/home/httpd/prtspool'.$newsrc.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} '; + } } sub file_path {