Diff for /loncom/homework/structuretags.pm between versions 1.497.2.4 and 1.497.2.6

version 1.497.2.4, 2011/12/14 11:56:08 version 1.497.2.6, 2011/12/27 19:48:31
Line 61  use Apache::lonlocal; Line 61  use Apache::lonlocal;
 use Apache::lonxml;  use Apache::lonxml;
 use Apache::londefdef;  use Apache::londefdef;
 use Apache::lonenc();  use Apache::lonenc();
   use Apache::loncommon();
 use Time::HiRes qw( gettimeofday tv_interval );  use Time::HiRes qw( gettimeofday tv_interval );
 use lib '/home/httpd/lib/perl/';  use lib '/home/httpd/lib/perl/';
 use LONCAPA;  use LONCAPA;
Line 96  my %languages_required; Line 97  my %languages_required;
 sub select_hyphenation {  sub select_hyphenation {
     my $language  = shift;      my $language  = shift;
   
     $language = &Apache::loncommon::latex_language($language); # Translate -> latex language.      $language = &Apache::loncommon::latexlanguage($language); # Translate -> latex language.
   
     # If there is no latex language there's not much we can do:      # If there is no latex language there's not much we can do:
   
     if ($language) {      if ($language) {
  &require_language($language);   &require_language($language);
  my $babel_hyphenation = "\\select_language{$language}";   my $babel_hyphenation = "\\selectlanguage{$language}";
   
  return $babel_hyphenation;   return $babel_hyphenation;
     } else {      } else {
Line 110  sub select_hyphenation { Line 111  sub select_hyphenation {
     }      }
 }  }
 ##  ##
   # Selects hyphenation based on the current problem metadata.
   # This requires that
   # - There is a language metadata item set for the problem.
   # - The language has a latex/babel hyphenation.
   #
   # @note: Uses &Apache::lonxml::request to locate the Uri associated with
   #        this problem.
   # @return string (possibly empty).
   # @retval If not empty an appropriate \selectlanguage{} directive.
   #
   sub select_metadata_hyphenation {
       my $uri      = $Apache::lonxml::request->uri;
       my $language = &Apache::lonnet::metadata($uri, 'language'); 
       my $latex_language = &Apache::loncommon::latexhyphenation($language);
       if ($latex_language) {
    return '\selectlanguage{'.$latex_language."}\n";
       }
       return ''; # no latex hyphenation or no lang metadata.
   }
   
   
   ##
 #  Clears the set of languages required by the document being rendered.  #  Clears the set of languages required by the document being rendered.
 #  #
 sub clear_required_languages {  sub clear_required_languages {
Line 122  sub clear_required_languages { Line 145  sub clear_required_languages {
 #  #
 sub require_language {  sub require_language {
     my $language = shift;      my $language = shift;
   
     $languages_required{$language} = 1;      $languages_required{$language} = 1;
 }  }
   
Line 133  sub require_language { Line 155  sub require_language {
 # @retval \usepackage[lang1,lang2...]{babel}  # @retval \usepackage[lang1,lang2...]{babel}
 # @retval ''   if there are no languages_required.  # @retval ''   if there are no languages_required.
 sub languages_header {  sub languages_header {
   
     my $header    ='';      my $header    ='';
     my @languages = keys(%languages_required);      my @languages = (keys(%languages_required));
   
     # Only generate the header if there are languages:      # Only generate the header if there are languages:
   
Line 143  sub languages_header { Line 164  sub languages_header {
  my $language_list = join(',', (@languages));   my $language_list = join(',', (@languages));
  $header  = '\usepackage['.$language_list."]{babel}\n";   $header  = '\usepackage['.$language_list."]{babel}\n";
     }      }
   
     return $header;      return $header;
 }  }
   
Line 1289  sub start_problem { Line 1309  sub start_problem {
             }              }
  } elsif ($target eq 'tex') {   } elsif ($target eq 'tex') {
     $result .= 'INSERTTEXFRONTMATTERHERE';      $result .= 'INSERTTEXFRONTMATTERHERE';
       $result .= &select_metadata_hyphenation();
       
   
  }   }
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
Line 1345  sub end_problem { Line 1367  sub end_problem {
  }   }
  my $name_of_resourse= &Apache::lonxml::latex_special_symbols(&get_resource_name($parstack,$safeeval),'header');   my $name_of_resourse= &Apache::lonxml::latex_special_symbols(&get_resource_name($parstack,$safeeval),'header');
  my $begin_doc=' \typeout{STAMPOFPASSEDRESOURCESTART Resource <h2>"'.$name_of_resourse.'"</h2> located in <br /><small><b>'.$env{'request.uri'}.'</b></small><br /> STAMPOFPASSEDRESOURCEEND} \noindent ';   my $begin_doc=' \typeout{STAMPOFPASSEDRESOURCESTART Resource <h2>"'.$name_of_resourse.'"</h2> located in <br /><small><b>'.$env{'request.uri'}.'</b></small><br /> STAMPOFPASSEDRESOURCEEND} \noindent ';
    &clear_required_languages();
  my $toc_line='\vskip 1 mm\noindent '.$startminipage.   my $toc_line='\vskip 1 mm\noindent '.$startminipage.
     '\addcontentsline{toc}{subsection}{'.$name_of_resourse.'}';      '\addcontentsline{toc}{subsection}{'.$name_of_resourse.'}';
   
Line 1801  sub end_languageblock { Line 1824  sub end_languageblock {
  $result = &select_hyphenation($which);   $result = &select_hyphenation($which);
     }      }
     $result .= $available_texts{$which};      $result .= $available_texts{$which};
       $result .= &select_metadata_hyphenation(); # Restore original language.
  }   }
  undef(%available_texts);   undef(%available_texts);
  &Apache::lonxml::deregister('Apache::structuretags',('lang'));   &Apache::lonxml::deregister('Apache::structuretags',('lang'));

Removed from v.1.497.2.4  
changed lines
  Added in v.1.497.2.6


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>