myformat.perl 5.57 KB
Newer Older
1 2 3 4 5 6 7 8
# myformat.perl by Guido van Rossum <guido@cwi.nl> 25 Jan 1994
#
# Extension to LaTeX2HTML for documents using myformat.sty.
# Subroutines of the form do_cmd_<name> here define translations
# for LaTeX commands \<name> defined in the corresponding .sty file.
#
# XXX Not complete: \indexii etc.; \funcitem etc.

9
package main;
10 11 12 13 14 15 16 17 18 19 20 21

# \bcode and \ecode brackets around verbatim

sub do_cmd_bcode{ @_[0]; }
sub do_cmd_ecode{ @_[0]; }

# words typeset in a special way (not in HTML though)

sub do_cmd_ABC{ join('', 'ABC', @_[0]); }
sub do_cmd_UNIX{ join('', 'Unix', @_[0]); }
sub do_cmd_ASCII{ join('', 'ASCII', @_[0]); }
sub do_cmd_C{ join('', 'C', @_[0]); }
22
sub do_cmd_Cpp{ join('', 'C++', @_[0]); }
23 24
sub do_cmd_EOF{ join('', 'EOF', @_[0]); }

25
sub do_cmd_e{ local($_) = @_; '&#92;' . $_; }
26

27 28
sub do_cmd_optional{
	local($_) = @_;
29
	s/$any_next_pair_pr_rx/<\/VAR><BIG>\[<\/BIG><VAR>\2<\/VAR><BIG>\]<\/BIG><VAR>/;
30 31 32 33 34 35 36 37 38
	$_;
}

sub do_cmd_varvars{
	local($_) = @_;
	s/$any_next_pair_pr_rx/<VAR>\2<\/VAR>/;
	$_;
}

39 40
# texinfo-like formatting commands: \code{...} etc.

41 42
sub do_cmd_code{
	local($_) = @_;
43
	s/$any_next_pair_pr_rx/<CODE>\2<\/CODE>/;
44 45 46
	$_;
}

47 48
sub do_cmd_sectcode{ &do_cmd_code(@_); }

49 50
sub do_cmd_kbd{
	local($_) = @_;
51
	s/$any_next_pair_pr_rx/<KBD>\2<\/KBD>/;
52 53 54 55 56
	$_;
}

sub do_cmd_key{
	local($_) = @_;
57
	s/$any_next_pair_pr_rx/<TT>\2<\/TT>/;
58 59 60 61 62
	$_;
}

sub do_cmd_samp{
	local($_) = @_;
63
	s/$any_next_pair_pr_rx/`<SAMP>\2<\/SAMP>'/;
64 65 66 67 68
	$_;
}

sub do_cmd_var{
	local($_) = @_;
69
	s/$any_next_pair_pr_rx/<VAR>\2<\/VAR>/;
70 71 72 73 74
	$_;
}

sub do_cmd_file{
	local($_) = @_;
75
	s/$any_next_pair_pr_rx/`<CODE>\2<\/CODE>'/;
76 77 78 79 80
	$_;
}

sub do_cmd_dfn{
	local($_) = @_;
81
	s/$any_next_pair_pr_rx/<I><DFN>\2<\/DFN><\/I>/;
82 83 84 85 86
	$_;
}

sub do_cmd_emph{
	local($_) = @_;
87
	s/$any_next_pair_pr_rx/<EM>\2<\/EM>/;
88 89 90 91 92
	$_;
}

sub do_cmd_strong{
	local($_) = @_;
93
	s/$any_next_pair_pr_rx/<STRONG>\2<\/STRONG>/;
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
	$_;
}

# index commands

sub do_cmd_indexii{
	local($_) = @_;
	s/$next_pair_pr_rx//o;
	local($br_id1, $str1) = ($1, $2);
	s/$next_pair_pr_rx//o;
	local($br_id2, $str2) = ($1, $2);
	join('', &make_index_entry($br_id1, "$str1 $str2"),
		 &make_index_entry($br_id2, "$str2, $str1"), $_);
}

sub do_cmd_indexiii{
	local($_) = @_;
	s/$next_pair_pr_rx//o;
	local($br_id1, $str1) = ($1, $2);
	s/$next_pair_pr_rx//o;
	local($br_id2, $str2) = ($1, $2);
	s/$next_pair_pr_rx//o;
	local($br_id3, $str3) = ($1, $2);
	join('', &make_index_entry($br_id1, "$str1 $str2 $str3"),
		 &make_index_entry($br_id2, "$str2 $str3, $str1"),
		 &make_index_entry($br_id3, "$str3, $str1 $str2"),
		  $_);
}

sub do_cmd_indexiv{
	local($_) = @_;
	s/$next_pair_pr_rx//o;
	local($br_id1, $str1) = ($1, $2);
	s/$next_pair_pr_rx//o;
	local($br_id2, $str2) = ($1, $2);
	s/$next_pair_pr_rx//o;
	local($br_id3, $str3) = ($1, $2);
	s/$next_pair_pr_rx//o;
	local($br_id4, $str4) = ($1, $2);
	join('', &make_index_entry($br_id1, "$str1 $str2 $str3 $str4"),
		 &make_index_entry($br_id2, "$str2 $str3 $str4, $str1"),
		 &make_index_entry($br_id3, "$str3 $str4, $str1 $str2"),
		 &make_index_entry($br_id4, "$str4, $str1 $str2 $str3"),
		  $_);
}

sub do_cmd_ttindex{
	&do_cmd_index(@_);
}

sub my_typed_index_helper{
	local($word, $_) = @_;
	s/$next_pair_pr_rx//o;
	local($br_id, $str) = ($1, $2);
	join('', &make_index_entry($br_id, "$str $word"),
		 &make_index_entry($br_id, "$word, $str"), $_);
}

sub do_cmd_stindex{ &my_typed_index_helper('statement', @_); }
sub do_cmd_kwindex{ &my_typed_index_helper('keyword', @_); }
sub do_cmd_opindex{ &my_typed_index_helper('operator', @_); }
sub do_cmd_exindex{ &my_typed_index_helper('exception', @_); }
sub do_cmd_obindex{ &my_typed_index_helper('object', @_); }

sub my_parword_index_helper{
	local($word, $_) = @_;
	s/$next_pair_pr_rx//o;
	local($br_id, $str) = ($1, $2);
162 163
	&make_index_entry($br_id, "$str ($word)");
	$_;
164 165 166 167
}

sub do_cmd_bifuncindex{ &my_parword_index_helper('built-in function', @_); }
sub do_cmd_bimodindex{ &my_parword_index_helper('built-in module', @_); }
168
sub do_cmd_stmodindex{ &my_parword_index_helper('standard module', @_); }
169 170
sub do_cmd_bifuncindex{ &my_parword_index_helper('standard module', @_); }

171 172 173 174 175 176 177 178 179 180 181
sub do_cmd_nodename{ &do_cmd_label(@_); }

$any_next_pair_rx3 = "$O(\\d+)$C([\\s\\S]*)$O\\3$C";
$new_command{"indexsubitem"} = "";

sub get_indexsubitem{
  local($result) = $new_command{"indexsubitem"};
  #print "\nget_indexsubitem ==> $result\n";
  $result;
}

182 183 184 185
sub do_env_cfuncdesc{
  local($_) = @_;
  local($return_type,$function_name,$arg_list) = ('', '', '');
  local($cfuncdesc_rx) =
186
    "$next_pair_rx$any_next_pair_rx3$any_next_pair_rx5";
187 188 189 190 191
  $* = 1;
  if (/$cfuncdesc_rx/o) {
    $return_type = "$2";
    $function_name = "$4";
    $arg_list = "$6";
192
    &make_index_entry($3,"<TT>$function_name</TT> " . &get_indexsubitem);
193 194 195 196 197 198
  }
  $* = 0;
  "<DL><DT>$return_type <STRONG><A NAME=\"$3\">$function_name</A></STRONG>" .
    "(<VAR>$arg_list</VAR>)\n<DD>$'\n</DL>"
}

199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229
sub do_env_funcdesc{
  local($_) = @_;
  local($function_name,$arg_list) = ('', '');
  local($funcdesc_rx) = "$next_pair_rx$any_next_pair_rx3";
  $* = 1;
  if (/$funcdesc_rx/o) {
    $function_name = "$2";
    $arg_list = "$4";
    &make_index_entry($1,"<TT>$function_name</TT> " . &get_indexsubitem);
  }
  $* = 0;
  "<DL><DT><STRONG><A NAME=\"$3\">$function_name</A></STRONG>" .
    "(<VAR>$arg_list</VAR>)\n<DD>$'\n</DL>"
}

sub do_env_datadesc{
  local($_) = @_;
  local($data_name) = ('', '');
  local($datadesc_rx) = "$next_pair_rx";
  $* = 1;
  if (/$datadesc_rx/o) {
    $data_name = "$2";
    &make_index_entry($1,"<TT>$data_name</TT> " . &get_indexsubitem);
  }
  $* = 0;
  "<DL><DT><STRONG><A NAME=\"$3\">$data_name</A></STRONG>" .
    "\n<DD>$'\n</DL>"
}

sub do_env_excdesc{ &do_env_datadesc(@_); }

230
1;				# This must be the last line