version 1.130, 2005/12/06 10:03:57
|
version 1.134, 2006/03/15 00:08:53
|
Line 114 sub start_foilgroup {
|
Line 114 sub start_foilgroup {
|
<td>Delete an Option: |
<td>Delete an Option: |
<select name="$Apache::lonxml::curdepth.deleteopt">$optionlist</select> |
<select name="$Apache::lonxml::curdepth.deleteopt">$optionlist</select> |
ENDTABLE |
ENDTABLE |
|
$result.= &Apache::edit::checked_arg('Print options:','texoptions', |
|
[ ['nochoice','Don\'t show option list'] ] |
|
,$token); |
$result.= &Apache::edit::end_row(); |
$result.= &Apache::edit::end_row(); |
$result.= &Apache::edit::start_spanning_row(); |
$result.= &Apache::edit::start_spanning_row(); |
$result.= $insertlist.'<br />'; |
$result.= $insertlist.'<br />'; |
Line 137 ENDTABLE
|
Line 140 ENDTABLE
|
} |
} |
$optchanged=1; |
$optchanged=1; |
} |
} |
if ($optchanged) { |
my $rebuildtag = &Apache::edit::get_new_args($token,$parstack,$safeeval, |
|
('texoptions')); |
|
if ($optchanged || $rebuildtag ) { |
$result = "<foilgroup options=\"("; |
$result = "<foilgroup options=\"("; |
foreach my $option (@options) { |
foreach my $option (@options) { |
$option=~s/\'/\\\'/g; |
$option=~s/\'/\\\'/g; |
Line 145 ENDTABLE
|
Line 150 ENDTABLE
|
$result .="'".$option."',"; |
$result .="'".$option."',"; |
} |
} |
chop $result; |
chop $result; |
$result.=')">'; |
$result.=')" '; |
|
$result .= 'texoptions="'.$token->[2]{'texoptions'}.'" '; |
|
$result .= '>'; |
} # else nothing changed so just use the default mechanism |
} # else nothing changed so just use the default mechanism |
} |
} |
if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') { |
if ($target eq 'tex' and $Apache::lonhomework::type ne 'exam') { |
Line 407 sub displayfoils {
|
Line 414 sub displayfoils {
|
foreach my $option (@opt) { |
foreach my $option (@opt) { |
my $escopt=&HTML::Entities::encode($option,'\'"&<>'); |
my $escopt=&HTML::Entities::encode($option,'\'"&<>'); |
if ($option eq $lastopt) { |
if ($option eq $lastopt) { |
$optionlist.="<option value='".$escopt."' selected=\"on\">$option</option>\n"; |
$optionlist.="<option value='".$escopt."' selected=\"selected\">$option</option>\n"; |
} else { |
} else { |
$optionlist.="<option value='".$escopt."'>$option</option>\n"; |
$optionlist.="<option value='".$escopt."'>$option</option>\n"; |
} |
} |
Line 474 sub displayfoils {
|
Line 481 sub displayfoils {
|
} |
} |
|
|
|
|
|
# Correct a single option list element. |
|
# - For embedded <display></display> tags, |
|
# we pass literally the stuff between them. |
|
# - For everything else, we run through latex_special_symbols |
|
# so that any symbols that have meaning to LaTeX will be |
|
# correctly escaped. |
|
# |
|
sub correct_option { |
|
my $option = shift; |
|
|
|
|
|
# There's probably a beter way with perl if I was |
|
# more of a regexp wiz..(RF). |
|
|
|
my $strlen = length($option); |
|
my $here = 0; # Where to start searching for <display></display> |
|
my $result =""; # The return string is built here. |
|
|
|
while ($here < $strlen) { |
|
# look for an opening <display> tag: |
|
|
|
my $openloc = index($option, "<display>", $here); |
|
if ($openloc == -1) { |
|
# No more... operate with latex_special_symbols on |
|
# the rest of the string. |
|
|
|
$result .= &Apache::lonxml::latex_special_symbols(substr($option, $here)); |
|
return $result; |
|
} else { |
|
# Need to pass the string up to the <display> tag |
|
# through l_s_s ... |
|
$result .= &Apache::lonxml::latex_special_symbols(substr($option, $here, $openloc-$here)); |
|
} |
|
# look for the closing </display> tag... |
|
# We're a bit stupid..or tolerant... |
|
# in that if the user forgets the </display> tag |
|
# we infer they intended one at the end of the option. |
|
$openloc += 9; # 9 chars in <display> |
|
|
|
my $closeloc = index($option, "</display>", $openloc); # 9 chars in <display> |
|
if ($closeloc == -1) { |
|
$closeloc = $strlen + 9; # 10chars in </display> faked off end. |
|
} |
|
# Pass from openloc through closeloc without any interpretation: |
|
|
|
&Apache::lonnet::logthis("Segment inside display: $openloc through $closeloc"); |
|
$result .= substr($option, $openloc, $closeloc - $openloc); |
|
$here = $closeloc + 10; # Next search is after the </display> |
|
} |
|
|
|
return $result; |
|
|
|
# return &Apache::lonxml::latex_special_symbols($option); |
|
} |
|
|
|
# Correct the option list elements so that if there |
|
# are special symbosl that have meaning to LaTeX |
|
# they get fixed up to display correctly. |
|
|
sub optionlist_correction { |
sub optionlist_correction { |
my ($TeXlayout,@options) = @_; |
my ($TeXlayout,@options) = @_; |
my $texoptionlist='\\item [] Choices: '; |
my $texoptionlist='\\item [] Choices: '; |
Line 481 sub optionlist_correction {
|
Line 547 sub optionlist_correction {
|
if (scalar(@options) > 0) { |
if (scalar(@options) > 0) { |
foreach my $option (@options) { |
foreach my $option (@options) { |
$texoptionlist.='{\bf '. |
$texoptionlist.='{\bf '. |
&Apache::lonxml::latex_special_symbols($option). |
&correct_option($option). |
'}'; |
'}'; |
if ($TeXlayout eq 'vertical') { |
if ($TeXlayout eq 'vertical') { |
$texoptionlist.=' \vskip 0 mm ', |
$texoptionlist.=' \vskip 0 mm ', |
Line 549 sub bubbles {
|
Line 615 sub bubbles {
|
$head.='lr'; |
$head.='lr'; |
} else { |
} else { |
$line=~s/\&\s*$//; |
$line=~s/\&\s*$//; |
$result.='\vskip -2 mm\noindent\begin{tabular}{'.$head.'}'.$line.'\\\\\end{tabular}\vskip 0 mm'; |
$result.='\vskip -2 mm\noindent\setlength{\tabcolsep}{2 mm}\begin{tabular}{'.$head.'}'.$line.'\\\\\end{tabular}\vskip 0 mm'; |
$line = '\hskip -1 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -1 mm & \hskip -3 mm {\small '.$opt[$ind].'} & ';; |
$line = '\hskip -1 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -1 mm & \hskip -3 mm {\small '.$opt[$ind].'} & ';; |
$head ='lr'; |
$head ='lr'; |
$current_length = (length($opt[$ind])+length($alphabet[$ind]))*2; |
$current_length = (length($opt[$ind])+length($alphabet[$ind]))*2; |