version 1.159, 2003/08/07 20:12:40
|
version 1.171, 2003/09/05 19:35:40
|
Line 51 use Image::Magick;
|
Line 51 use Image::Magick;
|
use Apache::lonmenu(); |
use Apache::lonmenu(); |
use Apache::lonmeta(); |
use Apache::lonmeta(); |
|
|
|
$Apache::londefdef::TD_redirection=0; |
|
|
BEGIN { |
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')); |
&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')); |
Line 162 sub start_html {
|
Line 164 sub start_html {
|
\renewcommand{\deg}{$^{\circ}$} |
\renewcommand{\deg}{$^{\circ}$} |
\usepackage{longtable} |
\usepackage{longtable} |
\usepackage{textcomp} |
\usepackage{textcomp} |
|
\usepackage{makeidx} |
\usepackage[dvips]{graphicx} |
\usepackage[dvips]{graphicx} |
\usepackage{epsfig}\usepackage{calc} |
\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; |
return $currentstring; |
} |
} |
Line 319 sub start_title {
|
Line 323 sub start_title {
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[4]; |
$currentstring = $token->[4]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring .= '\keephidden{' |
$currentstring .= '\keephidden{Title of the document: ' |
} |
} |
if ($target eq 'meta') { |
if ($target eq 'meta') { |
$currentstring='<title>'; |
$currentstring='<title>'; |
Line 394 sub start_meta {
|
Line 398 sub start_meta {
|
} |
} |
|
|
sub end_meta { |
sub end_meta { |
my ($target,$token,$tagstack,$parstack,$parser) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
my $args=''; |
my $args=''; |
Line 403 sub end_meta {
|
Line 407 sub end_meta {
|
$currentstring = $token->[4]; |
$currentstring = $token->[4]; |
} |
} |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
$currentstring=&Apache::lonxml::endredirection(); |
my $content=&Apache::lonxml::get_param('content',$parstack,$safeeval); |
$currentstring=''; |
my $name=&Apache::lonxml::get_param('name',$parstack,$safeeval); |
|
if ((not defined $content) && (not defined $name)) { |
|
&Apache::lonxml::endredirection(); |
|
} |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
Line 459 sub start_body {
|
Line 466 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::lonhomework::parsing_a_problem) { |
|
&Apache::lonxml::warning("<body> tag found inside of <problem> tag this can cause problems."); |
|
return ''; |
|
} |
if (!$Apache::lonxml::registered) { |
if (!$Apache::lonxml::registered) { |
$currentstring.='<head>'. |
$currentstring.='<head>'. |
&Apache::lonmenu::registerurl(undef,$target).'</head>'; |
&Apache::lonmenu::registerurl(undef,$target).'</head>'; |
Line 530 sub end_body {
|
Line 541 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; |
} |
} |
Line 1400 sub start_a {
|
Line 1411 sub start_a {
|
$currentstring .= $token->[4]; |
$currentstring .= $token->[4]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
my $a=&Apache::lonxml::get_param('href',$parstack,$safeeval,undef,1); |
my $a=&Apache::lonxml::get_param('href',$parstack,$safeeval,undef,1); |
$a=~s/([^\\])%/$1\\\%/g; |
my $b=&Apache::lonxml::get_param('name',$parstack,$safeeval,undef,1); |
$currentstring .= '\ref{'.$a.'}'; |
if ($a=~/\S/) { |
|
$a=~s/([^\\])%/$1\\\%/g; |
|
$currentstring .= '\ref{URI: '.$a.'}'; |
|
} elsif ($b=~/\S/) { |
|
$currentstring .= '\ref{Anchor: '.$b.'}'; |
|
} else { |
|
$currentstring.=''; |
|
} |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
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 1417 sub end_a {
|
Line 1435 sub end_a {
|
|
|
#-- <li> tag |
#-- <li> tag |
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 1781 sub end_table {
|
Line 1799 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 1817 sub end_table {
|
Line 1835 sub end_table {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <tr> tag |
#-- <tr> tag (end tag optional) |
sub start_tr { |
sub start_tr { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 1840 sub start_tr {
|
Line 1858 sub start_tr {
|
} |
} |
|
|
sub end_tr { |
sub end_tr { |
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') { |
|
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]{'TeXlengthrow'} },$Apache::londefdef::table[-1]{'TeXlength'}; |
push @{ $Apache::londefdef::table[-1]{'lengthrow'} },$Apache::londefdef::table[-1]{'length'}; |
push @{ $Apache::londefdef::table[-1]{'lengthrow'} },$Apache::londefdef::table[-1]{'length'}; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <td> tag |
#-- <td> tag (end tag optional) |
sub start_td { |
sub start_td { |
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') { |
|
$Apache::londefdef::TD_redirection = 1; |
&tag_check('tr','td',$tagstack,$parstack,$parser,$safeeval); |
&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; |
return $currentstring; |
} |
} |
|
|
sub tag_check { |
sub tag_check { |
my ($good_tag,$bad_tag,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($good_tag,$bad_tag,$tagstack,$parstack,$parser,$safeeval) = @_; |
my @ar=@$parstack; |
my @ar=@$parstack; |
for (my $i=$#ar-1;$i>=0;$i--) { |
for (my $i=$#ar-1;$i>=0;$i--) { |
if (lc($$tagstack[$i]) eq $good_tag) { |
if (lc($$tagstack[$i]) eq $good_tag) { |
&start_td_tex($parstack,$parser,$safeeval); |
&start_td_tex($parstack,$parser,$safeeval); |
last; |
last; |
} elsif (lc($$tagstack[$i]) eq $bad_tag) { |
} elsif (lc($$tagstack[$i]) eq $bad_tag) { |
splice @ar, $i+1; |
splice @ar, $i+1; |
&end_td_tex(\@ar,$parser,$safeeval); |
&end_td_tex(\@ar,$parser,$safeeval); |
&start_td_tex($parstack,$parser,$safeeval); |
&start_td_tex($parstack,$parser,$safeeval); |
last; |
last; |
} |
|
} |
} |
|
} |
return ''; |
return ''; |
} |
} |
|
|
Line 1921 sub end_td_tex {
|
Line 1931 sub end_td_tex {
|
$Apache::londefdef::table[-1]{'TeXlength'} .= $1.','; |
$Apache::londefdef::table[-1]{'TeXlength'} .= $1.','; |
$Apache::londefdef::table[-1]{'length'} .= '0,'; |
$Apache::londefdef::table[-1]{'length'} .= '0,'; |
} else { |
} else { |
$data=~s/^\s+(\S.*)/$1/; |
$data=~s/^\s+(\S.*)/$1/; |
$data=~s/(.*\S)\s+$/$1/; |
$data=~s/(.*\S)\s+$/$1/; |
my $current_length=2*length($data); |
$data=~s/(\s)+/$1/; |
|
my $current_length=0; |
|
if ($data=~/\\vskip/) { |
|
my $newdata=$data; |
|
$newdata=~s/\\vskip \d*\.?\d*\s*mm/THISISJUSTTEMPORARYSEPARATOR/g; |
|
my @newdata=split(/THISISJUSTTEMPORARYSEPARATOR/,$newdata); |
|
foreach my $elementdata (@newdata) { |
|
$elementdata=~s/^\s+(\S.*)/$1/; |
|
$elementdata=~s/(.*\S)\s+$/$1/; |
|
$elementdata=~s/(\s)+/$1/; |
|
my $lengthnewdata=1.8*length($elementdata); |
|
if ($lengthnewdata>$current_length) {$current_length=$lengthnewdata;} |
|
} |
|
} else { |
|
$current_length=1.8*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 1941 sub end_td {
|
Line 1966 sub end_td {
|
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[2]; |
$currentstring = $token->[2]; |
} elsif ($target eq 'tex') { |
} elsif ($target eq 'tex') { |
|
$Apache::londefdef::TD_redirection =0; |
&end_td_tex($parstack,$parser,$safeeval); |
&end_td_tex($parstack,$parser,$safeeval); |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <th> tag |
#-- <th> tag (end tag optional) |
sub start_th { |
sub start_th { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 2291 sub end_frameset {
|
Line 2317 sub end_frameset {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
|
#-- <xmp> |
|
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> |
#-- <pre> |
sub start_pre { |
sub start_pre { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval) = @_; |
Line 2437 sub start_base {
|
Line 2486 sub start_base {
|
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[4]; |
$currentstring = $token->[4]; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
Line 3077 sub end_tbody {
|
Line 3126 sub end_tbody {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <tfoot> tag |
#-- <tfoot> tag (end tag optional) |
sub start_tfoot { |
sub start_tfoot { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 3096 sub end_tfoot {
|
Line 3145 sub end_tfoot {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <thead> tag |
#-- <thead> tag (end tag optional) |
sub start_thead { |
sub start_thead { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 3121 sub start_var {
|
Line 3170 sub start_var {
|
my $currentstring = ''; |
my $currentstring = ''; |
if ($target eq 'web') { |
if ($target eq 'web') { |
$currentstring = $token->[4]; |
$currentstring = $token->[4]; |
} |
} elsif ($target eq 'tex') { |
|
$currentstring = '\textit{'; |
|
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
Line 3129 sub end_var {
|
Line 3180 sub end_var {
|
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') { |
|
$currentstring = '}'; |
} |
} |
return $currentstring; |
return $currentstring; |
} |
} |
|
|
#-- <wbr> tag |
#-- <wbr> tag (end tag forbidden) |
sub start_wbr { |
sub start_wbr { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |
my $currentstring = ''; |
my $currentstring = ''; |
Line 3153 sub end_wbr {
|
Line 3206 sub end_wbr {
|
return $currentstring; |
return $currentstring; |
} |
} |
|
|
|
|
#-- <hideweboutput> tag |
#-- <hideweboutput> tag |
sub start_hideweboutput { |
sub start_hideweboutput { |
my ($target,$token) = @_; |
my ($target,$token) = @_; |