Artifact caad911062c3ae6cdf03f7c86e294b7ffcb5ad18d448321e1a74748e9436c023:
- Executable file
r37/doc/help/latex2html.ini
— part of check-in
[f2fda60abd]
at
2011-09-02 18:13:33
on branch master
— Some historical releases purely for archival purposes
git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1375 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 16523) [annotate] [blame] [check-ins using] [more...]
- Executable file
r38/doc/help/latex2html.ini
— part of check-in
[f2fda60abd]
at
2011-09-02 18:13:33
on branch master
— Some historical releases purely for archival purposes
git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1375 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 16523) [annotate] [blame] [check-ins using]
# # This pre-pre-processor subroutine handles $ signs in the left column # of the Examples environment. latex2html scans very early for math # delimiters like $, even before special handler subroutines are called. # Similarly, one occurence of % needs to be handled. # sub pre_pre_process { local($contents) = ""; local($body); local($rest); ## some special cases # handle percent sign s/\\begin\{Command\}\[percent\]\{%\}/\\begin{Command}[percent]{\\%}/; # $m > n$ in CHOOSE s/\$m > n\$/m > n/; # $\pi/2$ in TAN s/\$\\pi\/2\$/PI\/2/g; ## END of special cases ## Handle Bigexample environment (insert verbatim env) while (/\\begin\{Bigexample\}(.+?)\\end\{Bigexample\}/s) { $contents .= $`; $body = "\\begin{Bigexample}\n\\begin{verbatim}\n" . $& . "\\end{verbatim}\n\\end{Bigexample}\n" ; $_ = $'; $contents .= $body; } $_ = $contents . $_; ## Handle Examples environment while (/\\begin\{Examples\}(.+?)\\end\{Examples\}/s) { $contents .= $`; $body = $&; $_ = $'; # special case $ or \$ just at end of column $body =~ s/(^|[^\\])\$(\s*)(&|\\\\)/$1\\\$$2$3/sg; $contents .= $body; } $_ = $contents . $_; } sub post_post_process { s/<TITLE>No Title<\/TITLE>/<TITLE>REDUCE Reference Manual.<\/TITLE>/; s/<BODY/<BODY BGCOLOR="#ffffff"/; } &ignore_commands(<<_IGNORED_COMMANDS_) documentclass # [] # {} # [] NeedsTeXFormat#{}#[] NEWdescription#{} NEWfeature#{} quad textcompwordmark null _IGNORED_COMMANDS_ &process_commands_in_tex(<<__RAW_ARG_CMDS_); textcircled # {} textvisiblespace textparagraph __RAW_ARG_CMDS_ #%ignore = ('TEX',1,%ignore); %ignore = ('INFO',1,%ignore); #sub do_env_INFO {} sub do_env_TEX {} sub do_cmd_REDUCE { join("","REDUCE",shift); } sub do_cmd_IFTEX { local($_) = @_; local($texpart) = &missing_braces unless ( (s/$next_pair_pr_rx/$texpart = $2;''/eo) ||(s/$next_pair_rx/$texpart = $2;''/eo)); local($nontexpart) = &missing_braces unless ( (s/$next_pair_pr_rx/$nontexpart = $2;''/eo) ||(s/$next_pair_rx/$nontexpart = $2;''/eo)); $nontexpart . $_; } sub do_cmd_name { # local($_) = @_; # local($rest) = $_; # $rest =~ s/$next_pair_pr_rx//o; # join('',"<tt>",$&,"</tt>",$rest); &styled_text_chunk('TT','','font','','', '', @_); } sub do_cmd_nameindex { local($_) = @_; local($br_id,$name); $name = &missing_braces unless ( (s/$next_pair_pr_rx/($br_id, $name) = ($1, $2);''/eo) ||(s/$next_pair_rx/($br_id, $name) = ($1, $2);''/eo)); &anchor_label($name,$CURRENT_FILE,''); join('',"<TT>" . &make_index_entry($br_id,$str) . "</TT>",$_); } #sub do_cmd_hyperref { # local($_) = @_; # local($rest) = $_; # $rest =~ s/$next_pair_pr_rx//o; # join('',"<tt>",$&,"</tt>",$rest); #} sub do_cmd_nameref { local($_) = @_; &process_ref($cross_ref_mark,$cross_ref_mark,1); } sub do_cmd_key { local($_) = @_; local($rest) = $_; $rest =~ s/$next_pair_pr_rx//o; join('',"<KBD>",$&,"</KBD>",$rest); } sub do_cmd_arg { local($_) = @_; local($rest) = $_; $rest =~ s/$next_pair_pr_rx//o; join('',"<i>",$&,"</i>",$rest); } #sub do_cmd_key { # local($_) = @_; # local($rest) = $_; # $rest =~ s/$next_pair_pr_rx//o; # join('',"<i>",$&,"</i>",$rest); #} sub do_cmd_repeated { '<SUP>+</SUP>'; } sub do_cmd_optional { '<SUP>*</SUP>'; } sub do_cmd_meta { local($_) = @_; local($rest) = $_; $rest =~ s/$next_pair_pr_rx//o; join('',"<i>",$&,"</i>",$rest); } sub do_env_Syntax { local($_) = @_; # print STDERR "\nEntering Syntax with body: $_\n"; s/(^|[^\\]) /$1~/g; s/$tex2html_deferred_rx\\par$tex2html_deferred_rx2//go; # get rid of empty input lines s/$tex2html_envs_rx\\\(/(/go; s/\\\(/(/go; s/\\\)$tex2html_envs_rx/)/go; s/\\\)/)/go; # print STDERR "\nSyntax: after translating \\(\\): $_\n"; $_ = &translate_commands(&translate_environments($_)); # print STDERR "\nExiting Syntax with body: $_\n"; "<P>\n<FONT SIZE=\"+1\">\n $_\n</FONT><P>"; } sub do_newitemEnv { local($type,$_) = @_; local($optional_ref_key) = &get_next_optional_argument; local($br_id,$name); $name = &missing_braces unless ( (s/$next_pair_pr_rx/($br_id, $name) = ($1, $2);''/eo) ||(s/$next_pair_rx/($br_id, $name) = ($1, $2);''/eo)); $name =~ s/\\_/_/g; $name =~ s/$dol_mark/\$/go; local($nameu) = $name; $nameu = "\U$name\E" unless $name =~ /^<.+>$/; &make_index_entry($br_id,$name); # &make_index_entry($br_id,"$type!$name"); local($ref_key) = ($optional_ref_key || $name); $_ = &translate_commands(&translate_environments($_)); local($header) = <<XXX; <TABLE COLS=2 WIDTH=100%> <TR> <TD ALIGN=LEFT NOWRAP><FONT SIZE="+2"><B>$nameu</B></FONT></TD> <TD ALIGN=RIGHT NOWRAP><FONT SIZE="+2"><B>$type</B></FONT></TD> </TR> </TABLE> XXX return &anchor_label("\L$ref_key\Q",$CURRENT_FILE,$header . $_); } sub do_env_Command { &do_newitemEnv("Command",@_); } sub do_env_Operator { &do_newitemEnv("Operator",@_); } sub do_env_Function { &do_newitemEnv("Function",@_); } sub do_env_Switch { &do_newitemEnv("Switch",@_); } sub do_env_Variable { &do_newitemEnv("Variable",@_); } sub do_env_Declaration { &do_newitemEnv("Declaration",@_); } sub do_env_Package { &do_newitemEnv("Concept",@_); } sub do_env_Concept { &do_newitemEnv("Concept",@_); } sub do_env_Constant { &do_newitemEnv("Constant",@_); } sub do_env_Type { &do_newitemEnv("Type",@_); } sub do_env_info { &do_newitemEnv("info",@_); } sub do_env_Introduction { &do_newitemEnv("Introduction",@_); } sub do_env_Bigexample { local($_) = @_; join('',"<H3>Example</H3>\n",&translate_commands(&translate_environments($_))); } sub do_env_Comments { local($_) = @_; join('',"<H3>Comments</H3>\n",$_); } sub do_env_Related { join('',"<H3>Related Information</H3>\n",&do_env_description); } $match_rfrac = "<!-- START rfrac#(\\d+) -->(.+)<!-- END rfrac#\\1 -->"; $match_rfrac_cell = "<(TD|TD VALIGN=.+)>(.+?)</TD>"; $match_rfrac_row_upper = "<TR ALIGN=CENTER>\n\\s+$match_rfrac_cell<!-- UPPER rfrac#\\1 -->\n\\s+</TR>"; $match_rfrac_row_middle = "<TR ALIGN=CENTER>\n\\s+$match_rfrac_cell<!-- MIDDLE rfrac#\\1 -->\n\\s+</TR>"; $match_rfrac_row_lower = "<TR ALIGN=CENTER>\n\\s+$match_rfrac_cell<!-- LOWER rfrac#\\1 -->\n\\s+</TR>"; $match_rfrac_body = "<!-- START rfrac#(\\d+) -->\n<TABLE VALIGN=MIDDLE>\n\\s+$match_rfrac_row_upper\n\\s+$match_rfrac_row_middle\n\\s+$match_rfrac_row_lower\n</TABLE>\n<!-- END rfrac#\\1 -->"; sub condense_rfracs { local($cell) = @_; return $cell unless ($cell =~ /$match_rfrac/so); local(@lines) = split(/<P>/,$cell); foreach (@lines) { $_ = &condense_line_with_rfrac($_); } $cell = join("<P>",@lines); return $cell; } sub extract_rfrac_parts { local($body) = @_; # print STDERR "\nExtracting parts from: $body\n"; $body =~ /$match_rfrac_body/so; my($num,$bar,$den) = ($3,$5,$7); # print STDERR "\nParts:\nNum: $num\nBar: $bar\nDen: $den\n"; $num = &condense_line_with_rfrac($num); $den = &condense_line_with_rfrac($den); # print STDERR "\nCondensed parts:\nNum: $num\nBar: $bar\nDen: $den\n"; return($num,$bar,$den); } sub condense_line_with_rfrac { local($cell) = @_; return ("$cell<!-- WIDTH=" . &count_width($cell) . " -->") unless ($cell =~ /$match_rfrac/so); # print STDERR "\ncell with standalone rfrac's: $cell\n"; my $restcell = $cell; my(@upperparts,@middleparts,@lowerparts); my $totalwidth = 0; while ($restcell =~ s/$match_rfrac/$2/so) { my $before_rfrac = $`; my $after_rfrac = $'; my $rfrac_proper = $&; if ($before_rfrac) { push @upperparts," "; push @middleparts,$before_rfrac; push @lowerparts," "; $totalwidth += &count_width($before_rfrac); } my($num,$bar,$den) = &extract_rfrac_parts($rfrac_proper); my($numwidth,$denwidth,$width) = (0,0,0); $num =~ s/<!-- WIDTH=(\d+) -->$/$numwidth=$1;''/e; $den =~ s/<!-- WIDTH=(\d+) -->$/$denwidth=$1;''/e; if ($numwidth && $denwidth) { # recalculate width $width = 2 + ($numwidth > $denwidth ? $numwidth : $denwidth); # print STDERR "\nSetting bar width to 2+max($numwidth,$denwidth) = $width\n"; $bar = "-" x (2*$width); } push @upperparts,$num; push @middleparts,$bar; push @lowerparts,$den; $totalwidth += length($bar)/2; $restcell = $after_rfrac; } if ($restcell ) { push @upperparts," "; push @middleparts,$restcell; push @lowerparts," "; $totalwidth += &count_width($restcell); } # now put the bits together my $i; $cell = "<TABLE VALIGN=MIDDLE>\n <TR ALIGN=CENTER>\n"; for ($i = 0; $i <= $#upperparts; $i++) { $cell .= " <TD>$upperparts[$i]</TD>\n"; } $cell .= " </TR>\n <TR ALIGN=CENTER>\n"; for ($i = 0; $i <= $#middleparts; $i++) { $cell .= " <TD>$middleparts[$i]</TD>\n"; } $cell .= " </TR>\n <TR ALIGN=CENTER>\n"; for ($i = 0; $i <= $#lowerparts; $i++) { $cell .= " <TD>$lowerparts[$i]</TD>\n"; } $cell .= " </TR>\n</TABLE><!-- WIDTH=$totalwidth -->\n"; # print STDERR "\ncell with replaced rfrac's: $cell\n"; return $cell; } sub do_env_Examples { local($_) = @_; local($colspec) = "ll"; # print STDERR "\nEntering do_env_Examples\n"; s/\\\\\s*\[([^]]+)\]/\\\\/g; # TKM - get rid of [N.n pc] on end of rows... s/\\newline\s*\[([^]]+)\]/\\newline/g; s/\n\s*\n/\n/g; # Remove empty lines (otherwise will have paragraphs!) local($i,@colspec,$char,$cols,$cell,$htmlcolspec,$frames,$rules); local(@rows,@cols,$border); local($colspan,$cellcount); $border = ""; $frame = ""; ($htmlcolspec,$frames,$rules,$cols,@colspec) = &translate_colspec($colspec, 'TD'); $frames .= "t" if ( s/^\s*\\hline// ); $frames .= "b" if ( s/\\hline\s*$// ); $rules .= "r" if ( /\\[ch]line/ ); if ( $frames || $rules ) { $border = " BORDER"; $rule = " RULES=NONE"; $frame = " FRAME=$frameoptions{$frames}" if ($frames); $rule = " RULES=GROUPS" if ($rules); }; @rows = split(/\\\\/); $#rows-- if ( $rows[$#rows] =~ /^\s*$/ ); local($return) = "<H3>Examples</H3>\n<TABLE COLS=$cols$border$frame$rule$_[1]>\n"; $return .= "$htmlcolspec\n"; $return .= "<TBODY>\n" if ( $rules =~ /r/ ); foreach (@rows) { # print STDERR "\nNext row: >>$_<<\n"; next if /^\s*$/; if ( s/^(\s*\\hline\s*)+//g ) { $return .= "</TBODY><TBODY>\n"; }; $return .= "<TR>"; ($leftcol,$rightcol) = split(/$html_specials{'&'}/o); $leftcolspec = $colspec[0]; # handle left column $colspan = 0; $leftcol =~ s/;SPMquot;/"/g; $leftcol =~ s/~/~/g; # $leftcol =~ s/\{/{/g; # $leftcol =~ s/\}/}/g; # May modify $leftcolspec # print STDERR "\nleftcol before translate: $leftcol\n"; $leftcell = &translate_commands(&translate_environments($leftcol)); # print STDERR "\nleftcell after translate: $leftcell\n"; if ( $colspan ) { for ( $cellcount = 0; $colspan > 0; $colspan-- ) { $colspec[$i++] =~ s/<TD/$cellcount++;"<TD"/ge; } $i--; $leftcolspec =~ s/>$content_mark/ COLSPAN=$cellcount$&/; }; $leftcolspec =~ s/$content_mark/<TT>$leftcell<\/TT>/; $return .= $leftcolspec; next if $colspan > 1; # handle right column $rightcolspec = $colspec[1]; $colspan = 0; # print STDERR "\nrightcol before translate: $rightcol\n"; $rightcell = "\ "x4 . '<TT>----></TT>' . "\ "x4 . &translate_commands(&translate_environments($rightcol)) if $rightcol; # print STDERR "\nrightcell after translate: $rightcell\n"; while ($rightcell =~ /\^$any_next_pair_pr_rx/o) { # print STDERR "\nrightcell with superscript: $rightcell\n"; $rightcell =~ s/\^$any_next_pair_pr_rx/<SUP>$2<\/SUP>/go; # print STDERR "result is: $rightcell\n"; } # try to handle rfrac's $rightcell = &condense_rfracs($rightcell); if ( $colspan ) { for ( $cellcount = 0; $colspan > 0; $colspan-- ) { $colspec[$i++] =~ s/<TD/$cellcount++;"<TD"/ge; } $i--; $rightcolspec =~ s/>$content_mark/ COLSPAN=$cellcount$&/; }; $rightcolspec =~ s/$content_mark/$rightcell/; $return .= $rightcolspec; $return .= "</TR>\n"; }; $return .= "</TBODY>\n" if ( $rules =~ /r/ ); $return .= "</TABLE>\n"; # print STDERR "\nExamples returns: $return\n"; $return; } $rfrac_counter = 0; sub do_cmd_rfrac { local($_) = @_; local($num,$den); local($num) = &missing_braces unless ( (s/$next_pair_pr_rx/$num = $2;''/eo) ||(s/$next_pair_rx/$num = $2;''/eo)); local($den) = &missing_braces unless ( (s/$next_pair_pr_rx/$den = $2;''/eo) ||(s/$next_pair_rx/$den = $2;''/eo)); # print STDERR "\nEntering rfrac with args: $num,$den\n"; local($numwidth,$denwidth) = (&count_width($num),&count_width($den)); local($width) = 2 + ($numwidth > $denwidth ? $numwidth : $denwidth); local($bar) = "-" x (2*$width); $rfrac_counter++; $_ = <<RFRAC . $_; <!-- START rfrac#$rfrac_counter --> <TABLE VALIGN=MIDDLE> <TR ALIGN=CENTER> <TD>$num</TD><!-- UPPER rfrac#$rfrac_counter --> </TR> <TR ALIGN=CENTER> <TD VALIGN=BASELINE>$bar</TD><!-- MIDDLE rfrac#$rfrac_counter --> </TR> <TR ALIGN=CENTER> <TD>$den</TD><!-- LOWER rfrac#$rfrac_counter --> </TR> </TABLE> <!-- END rfrac#$rfrac_counter --> RFRAC # print STDERR "\nExiting rfrac with args: $_\n"; $_; } sub count_width { local($_) = @_; s/&\w+;/ /g; s/--/ /g; s/<TD>(.+?)<\/TD>/$1/; s/<TT>(.+?)<\/TT>/$1/; s/\^$any_next_pair_pr_rx/$2/g; s/<SUP>(.+?)<\/SUP>/$1/; length; } sub do_cmd_explanationi { local($_) = @_; local($text) = &missing_braces unless ( (s/$next_pair_pr_rx/$text = $2;''/eo) ||(s/$next_pair_rx/$text = $2;''/eo)); local($dmy1,$dmy2,$dmy3,$dmy4); $colspan = 2; local($celltag) = "TD"; ($dmy1,$dmy2,$dmy3,$dmy4,$leftcolspec) = &translate_colspec("p{0.95\textwidth}", $celltag); "<I>$text</I>"; } sub do_cmd_explanation { &do_cmd_explanationi; } sub do_cmd_explanationo { &styled_text_chunk('EM','em','font','variant','','', @_); } sub do_env_multilineinput { local($_) = @_; s/$tex2html_deferred_rx\\par$tex2html_deferred_rx2/\n<P>\n<P>\n/go; # s/\n/\n<P>\n/mg; # s/ / /mg; $leftcolspec =~ s/<TD VALIGN=BASELINE /<TD VALIGN=BOTTOM /; "<PRE>\n$_\n</PRE>"; } sub do_env_multilineoutput { local($_) = @_; s/$next_pair_rx//o; # print STDERR "Body of multilineoutput:\n$_\n"; s/$tex2html_deferred_rx\\par$tex2html_deferred_rx2/\n<P>\n<P>\n/go; # print STDERR "Body of multilineoutput(2):\n$_\n"; # s/\n/\n<P>\n/mg; # s/ / /mg; s/-/--/g; # print STDERR "Body of multilineoutput(3):\n$_\n"; "<PRE>\n" . &translate_commands($_) . "\n</PRE>"; } ## ## correct crazy handling of itemlabels ## sub do_env_itemize { local($_) = @_; $itemize_level++; #RRM - catch nested lists &protect_useritems(*_); $_ = &translate_environments($_); # if (/^\s*$item_description_rx/) { local($bullet)=' '; SWITCH: { if ($itemize_level==1) { $bullet .= "*"; last SWITCH; } if ($itemize_level==2) { $bullet .= "-"; last SWITCH; } if ($itemize_level==3) { $bullet .= "*"; last SWITCH; } } $itemize_level--; if (/\s*$item_description_rx/) { # Contains user defined optional labels &do_env_description($_, " COMPACT", $bullet) } else { &list_helper($_,'UL'); } } 1;