--- loncom/xml/londefdef.pm 2003/08/07 20:12:40 1.159 +++ loncom/xml/londefdef.pm 2003/08/22 16:29:15 1.164 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Tags Default Definition Module # -# $Id: londefdef.pm,v 1.159 2003/08/07 20:12:40 sakharuk Exp $ +# $Id: londefdef.pm,v 1.164 2003/08/22 16:29:15 albertel Exp $ # # # Copyright Michigan State University Board of Trustees @@ -51,6 +51,8 @@ use Image::Magick; use Apache::lonmenu(); use Apache::lonmeta(); +$Apache::londefdef::TD_redirection=0; + BEGIN { &Apache::lonxml::register('Apache::londefdef',('a','abbr','acronym','accessrule','address','allow','applet','area','b','base','basefont','bgo','bgsound','big','blink','blockquote','blankspace','body','br','button','caption','center','cite','code','col','colgroup','dd','del','dfn','dir','div','dl','dt','em','embed','externallink','fieldset','font','form','frame','frameset','h1','h2','h3','h4','h5','h6','head','hr','html','i','iframe','img','input','ins','insert','isindex','kbd','keygen','label','layer','legend','li','link','m','map','marquee','menu','meta','multicol','nobr','noembed','noframes','nolayer','noscript','object','ol','optgroup','option','output','p','param','pre','q','s','samp','select','server','small','spacer','span','strike','strong','sub','sup','table','tbody','td','textarea','tfoot','th','thead','title','tr','tt','tthoption','u','ul','var','wbr','hideweboutput')); @@ -162,9 +164,11 @@ sub start_html { \renewcommand{\deg}{$^{\circ}$} \usepackage{longtable} \usepackage{textcomp} + \usepackage{makeidx} \usepackage[dvips]{graphicx} \usepackage{epsfig}\usepackage{calc} -\newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}\setlength{\itemsep}{0.022in}\setlength{\parsep}{0in}\setlength{\belowdisplayskip}{0.04in}\setlength{\abovedisplayskip}{0.05in}\setlength{\abovedisplayshortskip}{-0.04in}\setlength{\belowdisplayshortskip}{0.04in}}}{\end{list}}'; +\newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}\setlength{\itemsep}{0.022in}\setlength{\parsep}{0in}\setlength{\belowdisplayskip}{0.04in}\setlength{\abovedisplayskip}{0.05in}\setlength{\abovedisplayshortskip}{-0.04in}\setlength{\belowdisplayshortskip}{0.04in}}}{\end{list}} +\renewenvironment{theindex}{\begin{list}{}{{\vskip 1mm \noindent \large\textbf{Index}} \newline \setlength{\rightmargin}{0in}\setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.01in}\setlength{\itemsep}{0.1in}\setlength{\parsep}{-0.02in}\setlength{\belowdisplayskip}{0.01in}\setlength{\abovedisplayskip}{0.01in}\setlength{\abovedisplayshortskip}{-0.04in}\setlength{\belowdisplayshortskip}{0.01in}}}{\end{list}}'; } return $currentstring; } @@ -403,8 +407,9 @@ sub end_meta { $currentstring = $token->[4]; } } elsif ($target eq 'tex') { - $currentstring=&Apache::lonxml::endredirection(); - $currentstring=''; + if ((not defined $content) && (not defined $name)) { + &Apache::lonxml::startredirection(); + } } return $currentstring; } @@ -1400,8 +1405,15 @@ sub start_a { $currentstring .= $token->[4]; } elsif ($target eq 'tex') { my $a=&Apache::lonxml::get_param('href',$parstack,$safeeval,undef,1); - $a=~s/([^\\])%/$1\\\%/g; - $currentstring .= '\ref{'.$a.'}'; + my $b=&Apache::lonxml::get_param('name',$parstack,$safeeval,undef,1); + if ($a=~/\S/) { + $a=~s/([^\\])%/$1\\\%/g; + $currentstring .= '\ref{URI: '.$a.'}'; + } elsif ($b=~/\S/) { + $currentstring .= '\ref{Anchor: '.$b.'}'; + } else { + $currentstring.=''; + } } return $currentstring; } @@ -1840,11 +1852,14 @@ sub start_tr { } sub end_tr { - my ($target,$token) = @_; + my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; my $currentstring = ''; if ($target eq 'web') { $currentstring = $token->[2]; } elsif ($target eq 'tex') { + if ($Apache::londefdef::TD_redirection) { + &end_td_tex($parstack,$parser,$safeeval); + } push @{ $Apache::londefdef::table[-1]{'TeXlengthrow'} },$Apache::londefdef::table[-1]{'TeXlength'}; push @{ $Apache::londefdef::table[-1]{'lengthrow'} },$Apache::londefdef::table[-1]{'length'}; } @@ -1858,37 +1873,26 @@ sub start_td { if ($target eq 'web') { $currentstring = $token->[4]; } elsif ($target eq 'tex') { + $Apache::londefdef::TD_redirection = 1; &tag_check('tr','td',$tagstack,$parstack,$parser,$safeeval); -# my @ar=@$parstack; -# for (my $i=$#ar-1;$i>=0;$i--) { -# if (lc($$tagstack[$i]) eq 'tr') { -# &start_td_tex($parstack,$parser,$safeeval); -# last; -# } elsif (lc($$tagstack[$i]) eq 'td') { -# splice @ar, $i+1; -# &end_td_tex(\@ar,$parser,$safeeval); -# &start_td_tex($parstack,$parser,$safeeval); -# last; -# } -# } } return $currentstring; } sub tag_check { my ($good_tag,$bad_tag,$tagstack,$parstack,$parser,$safeeval) = @_; - my @ar=@$parstack; - for (my $i=$#ar-1;$i>=0;$i--) { - if (lc($$tagstack[$i]) eq $good_tag) { - &start_td_tex($parstack,$parser,$safeeval); - last; - } elsif (lc($$tagstack[$i]) eq $bad_tag) { - splice @ar, $i+1; - &end_td_tex(\@ar,$parser,$safeeval); - &start_td_tex($parstack,$parser,$safeeval); - last; - } + my @ar=@$parstack; + for (my $i=$#ar-1;$i>=0;$i--) { + if (lc($$tagstack[$i]) eq $good_tag) { + &start_td_tex($parstack,$parser,$safeeval); + last; + } elsif (lc($$tagstack[$i]) eq $bad_tag) { + splice @ar, $i+1; + &end_td_tex(\@ar,$parser,$safeeval); + &start_td_tex($parstack,$parser,$safeeval); + last; } + } return ''; } @@ -1941,6 +1945,7 @@ sub end_td { if ($target eq 'web') { $currentstring = $token->[2]; } elsif ($target eq 'tex') { + $Apache::londefdef::TD_redirection =0; &end_td_tex($parstack,$parser,$safeeval); } return $currentstring; @@ -2291,6 +2296,29 @@ sub end_frameset { return $currentstring; } +#-- +sub start_xmp { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring .= $token->[4]; + } elsif ($target eq 'tex') { + $currentstring .= '\begin{verbatim}'; + } + return $currentstring; +} + +sub end_xmp { + my ($target,$token) = @_; + my $currentstring = ''; + if ($target eq 'web') { + $currentstring .= $token->[2]; + } elsif ($target eq 'tex') { + $currentstring .= '\end{verbatim}'; + } + return $currentstring; +} + #-- <pre> sub start_pre { my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; @@ -2437,7 +2465,7 @@ sub start_base { my $currentstring = ''; if ($target eq 'web') { $currentstring = $token->[4]; - } + } return $currentstring; } @@ -3121,7 +3149,9 @@ sub start_var { my $currentstring = ''; if ($target eq 'web') { $currentstring = $token->[4]; - } + } elsif ($target eq 'tex') { + $currentstring = '\textit{'; + } return $currentstring; } @@ -3129,12 +3159,14 @@ sub end_var { my ($target,$token) = @_; my $currentstring = ''; if ($target eq 'web') { - $currentstring = $token->[2]; + $currentstring = $token->[2]; + } elsif ($target eq 'tex') { + $currentstring = '}'; } return $currentstring; } -#-- <wbr> tag +#-- <wbr> tag (end tag forbidden) sub start_wbr { my ($target,$token) = @_; my $currentstring = ''; @@ -3153,7 +3185,6 @@ sub end_wbr { return $currentstring; } - #-- <hideweboutput> tag sub start_hideweboutput { my ($target,$token) = @_;