version 1.134, 2006/03/15 00:08:53
|
version 1.137, 2007/02/22 01:25:31
|
Line 183 sub end_foilgroup {
|
Line 183 sub end_foilgroup {
|
$safeeval,'-2'); |
$safeeval,'-2'); |
if ($target eq 'web' || $target eq 'tex') { |
if ($target eq 'web' || $target eq 'tex') { |
$result.=&displayfoils($target,$max,$randomize,$TeXlayout,@opt); |
$result.=&displayfoils($target,$max,$randomize,$TeXlayout,@opt); |
|
$Apache::lonxml::post_evaluate=0; |
} elsif ( $target eq 'answer') { |
} elsif ( $target eq 'answer') { |
$result.=&displayanswers($max,$randomize,@opt); |
$result.=&displayanswers($max,$randomize,@opt); |
|
|
} elsif ( $target eq 'analyze') { |
} elsif ( $target eq 'analyze') { |
my @shown = &whichfoils($max,$randomize); |
my @shown = &whichfoils($max,$randomize); |
&Apache::response::analyze_store_foilgroup(\@shown, |
&Apache::response::analyze_store_foilgroup(\@shown, |
Line 448 sub displayfoils {
|
Line 450 sub displayfoils {
|
$texoptionlist = &optionlist_correction($TeXlayout,@opt); |
$texoptionlist = &optionlist_correction($TeXlayout,@opt); |
} |
} |
if ($text=~/<drawoptionlist\s*\/>/) { |
if ($text=~/<drawoptionlist\s*\/>/) { |
$text=~s|<drawoptionlist\s*/>| \\makebox\[0\.3in\]\[b\]\{\\hrulefill\} |; |
$text=~s|<drawoptionlist\s*\/>| \\makebox\[0\.3in\]\[b\]\{\\hrulefill\} |g; |
} |
} |
|
|
if ($text=~m/\\item /) { |
if ($text=~m/\\item /) { |
Line 481 sub displayfoils {
|
Line 483 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 547 sub optionlist_correction {
|
Line 490 sub optionlist_correction {
|
if (scalar(@options) > 0) { |
if (scalar(@options) > 0) { |
foreach my $option (@options) { |
foreach my $option (@options) { |
$texoptionlist.='{\bf '. |
$texoptionlist.='{\bf '. |
&correct_option($option). |
&Apache::lonxml::latex_special_symbols($option). |
'}'; |
'}'; |
if ($TeXlayout eq 'vertical') { |
if ($TeXlayout eq 'vertical') { |
$texoptionlist.=' \vskip 0 mm ', |
$texoptionlist.=' \vskip 0 mm ', |
Line 747 sub end_foil {
|
Line 690 sub end_foil {
|
|
|
sub start_drawoptionlist { |
sub start_drawoptionlist { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
if ($target ne 'meta') { |
if (($target ne 'meta') && ($target ne 'answer')) { |
return $token->[4]; |
return $token->[4]; |
} |
} |
} |
} |
|
|
sub end_drawoptionlist { |
sub end_drawoptionlist { |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; |
if ($target ne 'meta') { |
if (($target ne 'meta') && ($target ne 'answer')) { |
return $token->[2]; |
return $token->[2]; |
} |
} |
} |
} |