Index: doc/groff.texinfo =================================================================== RCS file: /sources/groff/groff/doc/groff.texinfo,v retrieving revision 1.256 diff -r1.256 groff.texinfo 6461a6462,6471 > @item \n[.O] > @vindex .O > This read only register is set to the suppression nesting level (see > escapes @code{\O} @xref{Suppressing output}. > > @tie{}1 (and to@tie{}0 otherwise) if the current > page is actually being printed, i.e., if the @option{-o} option is being > used to only print selected pages. @xref{Groff Options}, for more > information. > 12839a12850,12851 > The current level is contained within the read only register @code{.O} > @xref{Built-in Registers}. 12842a12855,12856 > The current level is contained within the read only register @code{.O} > @xref{Built-in Registers}. Index: src/devices/grohtml/grohtml.man =================================================================== RCS file: /sources/groff/groff/src/devices/grohtml/grohtml.man,v retrieving revision 1.23 diff -r1.23 grohtml.man 243a244,247 > .TP > .B \-V > create a xhtml validator button at the bottom of each page of the document. > . Index: src/devices/grohtml/html-table.cpp =================================================================== RCS file: /sources/groff/groff/src/devices/grohtml/html-table.cpp,v retrieving revision 1.6 diff -r1.6 html-table.cpp 340c340 < .put_string(" border=0 rules=\"none\" frame=\"void\"\n") --- > .put_string(" border=\"0\" rules=\"none\" frame=\"void\"\n") 480c480 < out->put_string("").nl(); --- > out->put_string("").nl(); Index: src/devices/grohtml/html-text.cpp =================================================================== RCS file: /sources/groff/groff/src/devices/grohtml/html-text.cpp,v retrieving revision 1.9 diff -r1.9 html-text.cpp 47,50c47,51 < html_text::html_text (simple_output *op) : < stackptr(NULL), lastptr(NULL), out(op), space_emitted(TRUE), < current_indentation(-1), pageoffset(-1), linelength(-1), < blank_para(TRUE), start_space(FALSE) --- > html_text::html_text (simple_output *op, html_dialect d) : > stackptr(NULL), lastptr(NULL), out(op), dialect(d), > space_emitted(TRUE), current_indentation(-1), > pageoffset(-1), linelength(-1), blank_para(TRUE), > start_space(FALSE) 198a200 > #if 0 200a203 > #endif 655c658 < if (is_present(PRE_TAG)) { --- > if (is_present(PRE_TAG)) 657c660,662 < } else --- > else if (dialect == xhtml) > out->put_string("
").nl(); > else Index: src/devices/grohtml/html-text.h =================================================================== RCS file: /sources/groff/groff/src/devices/grohtml/html-text.h,v retrieving revision 1.14 diff -r1.14 html-text.h 34a35,40 > * supported html dialects. > */ > > typedef enum {xhtml, html4} html_dialect; > > /* 59c65 < html_text (simple_output *op); --- > html_text (simple_output *op, html_dialect d); 107a114 > html_dialect dialect; /* which dialect of html? */ Index: src/devices/grohtml/post-html.cpp =================================================================== RCS file: /sources/groff/groff/src/devices/grohtml/post-html.cpp,v retrieving revision 1.38 diff -r1.38 post-html.cpp 92a93,95 > static html_dialect dialect = html4; /* which html dialect should grohtml output */ > static int valid_flag = FALSE; /* has user requested a valid flag at the */ > /* end of each page? */ 1592c1595,1599 < fputs("
\n", f); --- > fputs("", f); > if (dialect == xhtml) > fputs("
\n", f); > else > fputs("
\n", f); 2093a2101,2102 > void handle_valid_flag (void); > void do_math (text_glob *g); 2170c2179,2182 < html.put_string("
"); --- > if (dialect == xhtml) > html.put_string("
"); > else > html.put_string("
"); 2209c2221 < current_paragraph->do_para("align=center", space); --- > current_paragraph->do_para("align=\"center\"", space); 2212c2224 < current_paragraph->do_para(&html, "align=left", get_troff_indent(), pageoffset, linelength, space); --- > current_paragraph->do_para(&html, "align=\"left\"", get_troff_indent(), pageoffset, linelength, space); 2215c2227 < current_paragraph->do_para(&html, "align=right", get_troff_indent(), pageoffset, linelength, space); --- > current_paragraph->do_para(&html, "align=\"right\"", get_troff_indent(), pageoffset, linelength, space); 2313c2325 < + "alt=\"Image " + filename + "\">"; --- > + "alt=\"Image " + filename + "\">"; 2813c2825 < current_paragraph->do_para("align=center", space); --- > current_paragraph->do_para("align=\"center\"", space); 2815c2827 < if (strcmp("align=center", --- > if (strcmp("align=\"center\"", 2824c2836 < current_paragraph->do_para("align=center", space); --- > current_paragraph->do_para("align=\"center\"", space); 2901c2913,2916 < split_file += string(".html"); --- > if (dialect == xhtml) > split_file += string(".xhtml"); > else > split_file += string(".html"); 3095d3109 < 3097a3112,3118 > } else if (strncmp(g->text_string, "html:", strlen("html:")) == 0) { > if (current_paragraph->emitted_text()) > html.put_string(g->text_string+9); > else > do_end_para(g); > } else if (strncmp(g->text_string, "math:", strlen("math:")) == 0) { > do_math(g); 3179a3201,3215 > * do_math - prints out the equation > */ > > void html_printer::do_math (text_glob *g) > { > int l = strlen("math:"); > > do_font(g); > if (current_paragraph->emitted_text()) > html.put_string(g->text_string+9); > else > do_end_para(g); > } > > /* 4723c4759,4762 < html.put_string("

"); --- > if (dialect == xhtml) > html.put_string("

"); > else > html.put_string("

"); 4740,4741c4779,4784 < if (auto_rule) < fputs("
\n", stdout); --- > if (auto_rule) { > if (dialect == xhtml) > fputs("
\n", stdout); > else > fputs("
\n", stdout); > } 4760c4803 < current_paragraph = new html_text(&html); --- > current_paragraph = new html_text(&html, dialect); 4835a4879 > handle_valid_flag(); 4860c4904,4907 < top += string(".html"); --- > if (dialect == xhtml) > top += string(".xhtml"); > else > top += string(".html"); 4894c4941 < else --- > else { 4895a4943,4947 > if (valid_flag && dialect == xhtml) { > handle_valid_flag(); > write_rule(); > } > } 4905,4915c4957,4982 < fputs("\n", stdout); < < fputs("\n", stdout); < fputs("\n", stdout); < fputs("\n", stdout); < fputs("\n", stdout); < fputs("\n", stdout); < --- > if (dialect == html4) { > fputs(" fputs("\"http://www.w3.org/TR/html4/loose.dtd\">\n", stdout); > fputs("\n", stdout); > fputs("\n", stdout); > fputs(" "content=\"groff -Thtml, see www.gnu.org\">\n", stdout); > fputs(" "content=\"text/html; charset=US-ASCII\">\n", stdout); > fputs("\n", stdout); > } > else { > fputs("\n", stdout); > fputs(" fputs(" \"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd\"\n", stdout); > fputs(" []>\n", stdout); > > fputs("\n", > stdout); > fputs("\n", stdout); > fputs(" "content=\"groff -Txhtml, see www.gnu.org\"/>\n", stdout); > fputs(" "content=\"text/html; charset=US-ASCII\"/>\n", stdout); > fputs("\n", stdout); > } 4917,4919c4984,4989 < fputs(" p { margin-top: 0; margin-bottom: 0; }\n", stdout); < fputs(" pre { margin-top: 0; margin-bottom: 0; }\n", stdout); < fputs(" table { margin-top: 0; margin-bottom: 0; }\n", stdout); --- > fputs(" p { margin-top: 0; margin-bottom: 0; " > "vertical-align=\"top\" }\n", stdout); > fputs(" pre { margin-top: 0; margin-bottom: 0; " > "vertical-align=\"top\" }\n", stdout); > fputs(" table { margin-top: 0; margin-bottom: 0; " > "vertical-align=\"top\" }\n", stdout); 4934a5005,5008 > > if (dialect == xhtml) > writeHeadMetaStyle(); > 4946c5020,5021 < writeHeadMetaStyle(); --- > if (dialect == html4) > writeHeadMetaStyle(); 5126c5201,5203 < } else if (strncmp(s, "html

:", 9) == 0) { --- > } else if ((strncmp(s, "html

:", 9) == 0) || > (strncmp(s, "html:", 9) == 0) || > (strncmp(s, "math:", 9) == 0)) { 5128a5206 > string t; 5135a5214,5224 > if (strncmp(s, "math:", 9) == 0) { > if (strncmp((char *)&s[9], "", 6) == 0) { > s[9] = '\0'; > t = s; > t += ""; > t += (char *)&s[15]; > t += '\0'; > s = (char *)&t[0]; > } > } > 5150a5240 > 5213a5304,5316 > /* > * handle_valid_flag - emits a valid xhtml button. > */ > > void html_printer::handle_valid_flag (void) > { > fputs("

" > " "src=\"http://www.w3.org/Icons/valid-xhtml11\" " > "alt=\"Valid XHTML 1.1 Transitional\" height=\"31\" width=\"88\" />\n" > "

\n", stdout); > } > 5225c5328 < while ((c = getopt_long(argc, argv, "a:bdD:F:g:hi:I:j:lno:prs:S:v", --- > while ((c = getopt_long(argc, argv, "a:bdD:eF:g:hi:I:j:lno:prs:S:vVx:", 5242a5346,5348 > case 'e': > /* handled by pre-html */ > break; 5287a5394,5404 > case 'V': > valid_flag = TRUE; > break; > case 'x': > if (strcmp(optarg, "x") == 0) > dialect = xhtml; > else if (strcmp(optarg, "4") == 0) > dialect = html4; > else > printf("unsupported html dialect %s (defaulting to html4)\n", optarg); > break; 5310c5427 < fprintf(stream, "usage: %s [-vblnh] [-D dir] [-I image_stem] [-F dir] [files ...]\n", --- > fprintf(stream, "usage: %s [-vblnhV] [-D dir] [-I image_stem] [-F dir] [-x x] [files ...]\n", Index: src/preproc/eqn/box.cpp =================================================================== RCS file: /sources/groff/groff/src/preproc/eqn/box.cpp,v retrieving revision 1.6 diff -r1.6 box.cpp 240c240 < else if (output_format == mathml) --- > else if (output_format == mathml && (! xhtml)) 257c257 < else if (output_format == mathml) --- > else if (output_format == mathml) { 258a259,261 > if (xhtml && strlen(s)>0) > printf("\n"); > } 351a355,356 > if (xhtml) > printf(".MATHML "); Index: src/preproc/eqn/eqn.h =================================================================== RCS file: /sources/groff/groff/src/preproc/eqn/eqn.h,v retrieving revision 1.5 diff -r1.5 eqn.h 43a44 > extern int xhtml; Index: src/preproc/eqn/main.cpp =================================================================== RCS file: /sources/groff/groff/src/preproc/eqn/main.cpp,v retrieving revision 1.6 diff -r1.6 main.cpp 47a48 > int xhtml = 0; 190a192,198 > if (output_format == mathml) > printf("\n"); > if (xhtml) { > /* skip leading spaces */ > while (((*ptr) != '\0') && (*ptr == ' ')) > ptr++; > } 316a325,330 > else if (strcmp(device, "mathml:xhtml") == 0) { > device = "MathML"; > output_format = mathml; > load_startup_file = 0; > xhtml = 1; > } Index: src/preproc/eqn/text.cpp =================================================================== RCS file: /sources/groff/groff/src/preproc/eqn/text.cpp,v retrieving revision 1.4 diff -r1.4 text.cpp 60c60 < {"*n", "&nu"}, // ISOgrk3 --- > {"*n", "ν"}, // ISOgrk3 Index: src/preproc/html/pre-html.cpp =================================================================== RCS file: /sources/groff/groff/src/preproc/html/pre-html.cpp,v retrieving revision 1.15 diff -r1.15 pre-html.cpp 58a59,62 > #if 1 > # define DEBUGGING > #endif > 165,168d168 < #if 0 < # define DEBUGGING < #endif < 179a180,181 > typedef enum {xhtml, html4} html_dialect; > 212a215 > static int eqn_flag = FALSE; // must we preprocess via eqn? 219a223 > static html_dialect dialect = html4; 316,337c320,350 < // Redirect standard error to the null device. This is more < // portable than using "2> /dev/null", since it doesn't require a < // Unixy shell. < int save_stderr = dup(2); < int save_stdout = dup(1); < int fdnull = open(NULL_DEV, O_WRONLY|O_BINARY, 0666); < if (save_stderr > 2 && fdnull > 2) < dup2(fdnull, 2); < if (redirect_stdout && save_stdout > 1 && fdnull > 1) < dup2(fdnull, 1); < if (fdnull >= 0) < close(fdnull); < int status = system(s); < dup2(save_stderr, 2); < if (redirect_stdout) < dup2(save_stdout, 1); < if (status == -1) < fprintf(stderr, "Calling `%s' failed\n", s); < else if (status) < fprintf(stderr, "Calling `%s' returned status %d\n", s, status); < close(save_stderr); < close(save_stdout); --- > #if defined(DEBUGGING) > if (debug) { > fprintf(stderr, "executing: "); > fwrite(s, sizeof(char), strlen(s), stderr); > fflush(stderr); > } > #endif > { > // Redirect standard error to the null device. This is more > // portable than using "2> /dev/null", since it doesn't require a > // Unixy shell. > int save_stderr = dup(2); > int save_stdout = dup(1); > int fdnull = open(NULL_DEV, O_WRONLY|O_BINARY, 0666); > if (save_stderr > 2 && fdnull > 2) > dup2(fdnull, 2); > if (redirect_stdout && save_stdout > 1 && fdnull > 1) > dup2(fdnull, 1); > if (fdnull >= 0) > close(fdnull); > int status = system(s); > dup2(save_stderr, 2); > if (redirect_stdout) > dup2(save_stdout, 1); > if (status == -1) > fprintf(stderr, "Calling `%s' failed\n", s); > else if (status) > fprintf(stderr, "Calling `%s' returned status %d\n", s, status); > close(save_stderr); > close(save_stdout); > } 924,929d936 < #if defined(DEBUGGING) < if (debug) { < fwrite(s, sizeof(char), strlen(s), stderr); < fflush(stderr); < } < #endif 948,953d954 < #if defined(DEBUGGING) < if (debug) { < fwrite(s, sizeof(char), strlen(s), stderr); < fflush(stderr); < } < #endif 1034,1039d1034 < #if defined(DEBUGGING) < if (debug) { < fprintf(stderr, s); < fflush(stderr); < } < #endif 1204c1199,1200 < if (strcmp(argv[i], "-Thtml") == 0) --- > if ((strcmp(argv[i], "-Thtml") == 0) || > (strcmp(argv[i], "-Txhtml") == 0)) 1213c1209,1212 < argv[i] = (char *)"-Thtml"; --- > if (dialect == xhtml) > argv[i] = (char *)"-Txhtml"; > else > argv[i] = (char *)"-Thtml"; 1221c1220 < * addZ - Append -Z onto the command list for groff. --- > * addArg - Append newarg onto the command list for groff. 1224c1223 < char **addZ(int argc, char *argv[]) --- > char **addArg(int argc, char *argv[], char *newarg) 1236c1235 < new_argv[i] = (char *)"-Z"; --- > new_argv[i] = newarg; 1281c1280,1296 < int char_buffer::run_output_filter(int filter, int /* argc */, char **argv) --- > /* > * print_args - print arguments as if they were issued on the command line. > */ > > void print_args(int argc, char *argv[]) > { > #if defined(DEBUGGING) > if (debug) { > fprintf(stderr, "executing: "); > for (int i = 0; i < argc; i++) > fprintf(stderr, "%s ", argv[i]); > fprintf(stderr, "\n"); > } > #endif > } > > int char_buffer::run_output_filter(int filter, int argc, char **argv) 1286a1302 > print_args(argc, argv); 1444c1460 < argv = addZ(argc, argv); --- > argv = addArg(argc, argv, "-Z"); 1453a1470,1478 > if (dialect == xhtml) { > argv = addRegDef(argc, argv, "-rxhtml=1"); > argc++; > if (eqn_flag) { > argv = addRegDef(argc, argv, "-e"); > argc++; > } > } > 1490a1516,1524 > if (dialect == xhtml) { > if (eqn_flag) { > argv = addRegDef(argc, argv, "-rxhtml=1"); > argc++; > } > argv = addRegDef(argc, argv, "-e"); > argc++; > } > 1550c1584 < while ((c = getopt_long(argc, argv, "+a:bdD:F:g:hi:I:j:lno:prs:S:v", --- > while ((c = getopt_long(argc, argv, "+a:bdD:eF:g:hi:I:j:lno:prs:S:vVx:", 1572a1607,1609 > case 'e': > eqn_flag = TRUE; > break; 1619a1657,1668 > case 'V': > // handled by post-grohtml (create validator button) > break; > case 'x': > // html dialect > if (strcmp(optarg, "x") == 0) > dialect = xhtml; > else if (strcmp(optarg, "4") == 0) > dialect = html4; > else > printf("unsupported html dialect %s (defaulting to html4)\n", optarg); > break; Index: src/roff/groff/groff.cpp =================================================================== RCS file: /sources/groff/groff/src/roff/groff/groff.cpp,v retrieving revision 1.11 diff -r1.11 groff.cpp 76a77 > void clear_name(); 121a123,124 > int is_xhtml = 0; > int eflag = 0; 175a179 > eflag = 1; 240c244 < if (strcmp(optarg, "html") == 0) { --- > if (strcmp(optarg, "xhtml") == 0) { 242a247,253 > Pargs += "-x"; > Pargs += '\0'; > Pargs += 'x'; > Pargs += '\0'; > is_xhtml = 1; > device = "html"; > break; 243a255,258 > if (strcmp(optarg, "html") == 0) > // force soelim to aid the html preprocessor > commands[SOELIM_INDEX].set_name(command_prefix, "soelim"); > 315a331,332 > if (eflag && is_xhtml) > commands[TROFF_INDEX].insert_arg("-e"); 374d390 < // html renders equations as images via ps 376,378c392,405 < if (oflag) < fatal("`-o' option is invalid with device `html'"); < commands[EQN_INDEX].append_arg("-Tps:html"); --- > if (is_xhtml) { > if (oflag) > fatal("`-o' option is invalid with device `xhtml'"); > if (zflag) > commands[EQN_INDEX].append_arg("-Tmathml:xhtml"); > else if (eflag) > commands[EQN_INDEX].clear_name(); > } > else { > if (oflag) > fatal("`-o' option is invalid with device `html'"); > // html renders equations as images via ps > commands[EQN_INDEX].append_arg("-Tps:html"); > } 544a572,579 > void possible_command::clear_name() > { > a_delete name; > a_delete argv; > name = NULL; > argv = NULL; > } > Index: src/roff/troff/input.cpp =================================================================== RCS file: /sources/groff/groff/src/roff/troff/input.cpp,v retrieving revision 1.44 diff -r1.44 input.cpp 7758a7759 > number_reg_dictionary.define(".O", new variable_reg(&begin_level)); Index: tmac/s.tmac =================================================================== RCS file: /sources/groff/groff/tmac/s.tmac,v retrieving revision 1.30 diff -r1.30 s.tmac 215a216 > . 224c225 < \\*[\\$0]\\ --- > .nop \\*[\\$0]\\ 225a227 > . 235a238 > . 237,258c240,261 < .als cov*ab-init @nop < .als LP @LP < .als IP @IP < .als PP @PP < .als XP @XP < .als RT @RT < .als XS @XS < .als SH @SH < .als NH @NH < .als QP @QP < .als RS @RS < .als RE @RE < .als QS @QS < .als QE @QE < .als MC @MC < .als EQ @EQ < .als EN @EN < .als TS @TS < .als AB cov*err-not-after-ab < .als AU par@AU < .als AI par@AI < .als TL par@TL --- > . als cov*ab-init @nop > . als LP @LP > . als IP @IP > . als PP @PP > . als XP @XP > . als RT @RT > . als XS @XS > . als SH @SH > . als NH @NH > . als QP @QP > . als RS @RS > . als RE @RE > . als QS @QS > . als QE @QE > . als MC @MC > . als EQ @EQ > . als EN @EN > . als TS @TS > . als AB cov*err-not-after-ab > . als AU par@AU > . als AI par@AI > . als TL par@TL 259a263 > . 1677c1681 < .if \\n[eqn*type]=0 .HTML-IMAGE-LEFT --- > .if \\n[eqn*type]=0 .do EQN-HTML-IMAGE-LEFT 1680c1684 < . HTML-IMAGE-INLINE --- > .do EQN-HTML-IMAGE-INLINE 1682c1686 < .if \\n[eqn*type]=2 .HTML-IMAGE --- > .if \\n[eqn*type]=2 .do EQN-HTML-IMAGE 1730c1734 < .\" the HTML-IMAGE-END suppression nodes --- > .\" the EQN-HTML-IMAGE-END suppression nodes 1736c1740 < . if \\n[eqn*type]=0 .HTML-IMAGE-END --- > . if \\n[eqn*type]=0 .EQN-HTML-IMAGE-END 1738c1742 < . HTML-IMAGE-END --- > . EQN-HTML-IMAGE-END 1741c1745 < . if \\n[eqn*type]=2 .HTML-IMAGE-END --- > . if \\n[eqn*type]=2 .EQN-HTML-IMAGE-END 1743a1748 > . Index: tmac/troffrc-end =================================================================== RCS file: /sources/groff/groff/tmac/troffrc-end,v retrieving revision 1.11 diff -r1.11 troffrc-end 11,17c11,24 < .do if !d HTML-IMAGE-INLINE .do ds HTML-IMAGE-INLINE < .do if !d HTML-IMAGE .do ds HTML-IMAGE < .do if !d HTML-IMAGE-RIGHT .do ds HTML-IMAGE-RIGHT < .do if !d HTML-IMAGE-LEFT .do ds HTML-IMAGE-LEFT < .do if !d HTML-IMAGE-END .do ds HTML-IMAGE-END < .do if !d DEVTAG .do ds DEVTAG < .do if !d HTML-DO-IMAGE .do ds HTML-DO-IMAGE --- > .do if !d HTML-IMAGE-INLINE .do ds HTML-IMAGE-INLINE > .do if !d HTML-IMAGE .do ds HTML-IMAGE > .do if !d HTML-IMAGE-RIGHT .do ds HTML-IMAGE-RIGHT > .do if !d HTML-IMAGE-LEFT .do ds HTML-IMAGE-LEFT > .do if !d HTML-IMAGE-END .do ds HTML-IMAGE-END > .do if !d DEVTAG .do ds DEVTAG > .do if !d HTML-DO-IMAGE .do ds HTML-DO-IMAGE > .do if !d EQN-HTML-IMAGE-END .do ds EQN-HTML-IMAGE-END > .do if !d EQN-HTML-IMAGE .do ds EQN-HTML-IMAGE > .do if !d EQN-HTML-IMAGE-RIGHT .do ds EQN-HTML-IMAGE-RIGHT > .do if !d EQN-HTML-IMAGE-LEFT .do ds EQN-HTML-IMAGE-LEFT > .do if !d EQN-HTML-IMAGE-INLINE .do ds EQN-HTML-IMAGE-INLINE > .do if !d EQN-HTML-DO-IMAGE .do ds EQN-HTML-DO-IMAGE > .do if !d EQN-HTML-IMAGE-END .do ds EQN-HTML-IMAGE-END Index: tmac/www.tmac =================================================================== RCS file: /sources/groff/groff/tmac/www.tmac,v retrieving revision 1.50 diff -r1.50 www.tmac 303a304,323 > .\" > .\" emit a HTML tag. If text has been written in the paragraph > .\" then do not shut the paragraph down. > .\" If text was not written, remove the empty > .\" paragraph tag and emit the desired html tag. > .\" > .de HTML > . if \\n[www-html] .nop \&\X^html:\\$*^ > .. > . > .\" > .\" emit a MATH tag. If text has been written in the paragraph > .\" then do not shut the paragraph down. > .\" If text was not written, remove the empty > .\" paragraph tag and emit the desired math tag. > .\" > .de MATH > . if \\n[www-html] .nop \&\X^math:\\$*^ > .. > . 1182,1183c1202,1203 < .do if !d EQ .do ds EQ HTML-IMAGE\" < .do if !d EN .do ds EN HTML-IMAGE-END\" --- > .do if !d EQ .do ds EQ EQN-HTML-IMAGE\" > .do if !d EN .do ds EN EQN-HTML-IMAGE-END\" 1247a1268,1322 > .\" EQN-HTML-IMAGE and friends check to see whether the equation is > .\" not in an image, in which case it allows html > .\" (mathml) to be generated (if -Txhtml was specified). > . > .de EQN-HTML-IMAGE > . \" generates a centered image > . www-make-unique-name > . EQN-HTML-DO-IMAGE \\*[www-unique-name] c > .. > . > .de EQN-HTML-IMAGE-RIGHT > . www-make-unique-name > . EQN-HTML-DO-IMAGE \\*[www-unique-name] r > .. > . > .de EQN-HTML-IMAGE-LEFT > . www-make-unique-name > . EQN-HTML-DO-IMAGE \\*[www-unique-name] l > .. > . > .de EQN-HTML-IMAGE-INLINE > . www-make-unique-name > . EQN-HTML-DO-IMAGE \\*[www-unique-name] i > .. > .\" -------------------------------------------------------------------- > .\" EQN-HTML-DO-IMAGE - tells troff to issue an image marker which can be > .\" read back by pre-html > .\" > .de EQN-HTML-DO-IMAGE > . ie r xhtml \{\ > . if !(\\n[.O] == 0) \{\ > . if r ps4html \ > . nop \O[5\\$2\\$1.png]\O[1]\O[3] > . if \\n[www-html] \ > . nop \O[5\\$2\\$1.png]\O[0]\O[3] > . \} > . \} > . el .HTML-DO-IMAGE \\$* > .. > . > .\" -------------------------------------------------------------------- > .\" EQN-HTML-IMAGE-END - terminates an image for html > .\" > .de EQN-HTML-IMAGE-END > . ie r xhtml \{\ > . if !(\\n[.O] == 0) \{\ > . if r ps4html \ > . nop \O[4]\O[2]\O[0] > . if \\n[www-html] \ > . nop \O[4]\O[2]\O[1] > . \} > . \} > . el .HTML-IMAGE-END > .. > . 1391a1467,1473 > .\" MATHML - enable eqn mathml output to pass through to the device > .\" driver > . > .de MATHML > . if (\\n[.O] == 0) .MATH \\$* > .. > .