123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358 |
- .TH HTMLROFF 6
- .SH NAME
- htmlroff \- HTML formatting and typesetting
- .SH DESCRIPTION
- .I Htmlroff (1)
- accepts
- .I troff
- input with a few extensions and changes.
- This manual describes the changes to the input language,
- assuming a working knowledge of
- .I troff
- itself.
- .SS Name lengths
- .PP
- Request, macro, string, and number names can be longer
- than two letters, as in:
- .IP
- .EX
- \&.html c <center>
- \&.de footnote
- Footnote here.
- \&..
- \&.footnote
- \&.ds string "hello
- \&\e*[string]
- \&.nr number 1
- \&\en[number]
- .EE
- .SS HTML output
- .PP
- Two new requests:
- .IP
- .EX
- \&.html \fIid\fP \fR[ \fI<html>\fP ]\fL
- \&.ihtml \fIid\fP \fR[ \fI<ihtml>\fP ]\fL
- .EE
- .LP
- .B .html
- and
- .B .ihtml
- insert HTML into the output.
- The requests are only for opening new HTML tags.
- To close previously-opened tags, repeat the request
- with the same
- .IR id .
- For example, the input:
- .IP
- .EX
- \&.html t <table><tr>
- \&.html td <td>Cell 1
- \&.html td <td>Cell 2
- \&.html td
- \&.html t
- .EX
- .LP
- produces this output:
- .IP
- .EX
- <table><tr><td>Cell 1</td><td>Cell 2</td></tr></table>
- .EE
- .LP
- The
- .B .html
- request is intended for block-level HTML constructs (those that can contain
- .BR <p> )
- and maintains the HTML tag stack automatically.
- Intermediate tags need not be explicitly closed:
- removing the final
- .B \&.html t
- line in the example above would produce the same output.
- The special
- .I id
- .L -
- closes the HTML tags immediately after printing them.
- .PP
- The
- .B .ihtml
- request is similar to
- .B .html
- but is intended for inline HTML constructs such as
- .B <b>
- or
- .B <i>
- (those that can be contained
- within
- .BR <p> ).
- Unlike
- .BR .html ,
- .B .ihtml
- treats the open HTML tags as a set rather than a stack:
- each must be explicitly closed.
- Although it treats the tags as a set,
- .B .ihtml
- treats nesting properly in the output,
- closing and reopening tags as necessary.
- For example, the input:
- .IP
- .EX
- \&.ihtml style <b>
- \&.ihtml link <a href="link.html">
- Bold
- \&.ihtml style <i>
- and italic, still linked.
- \&.ihtml link <a>
- Unlinked.
- \&.ihtml style
- .EE
- .LP
- produces this output:
- .IP
- .EX
- <b><a href="link.html">Bold</a></b>
- <i><a href="link.html">and italic, still linked.</i></a>
- <i>Unlinked.</i>
- .EE
- .PP
- Outside of
- .B .html
- and
- .B .ihtml
- requests, the characters
- .LR < ,
- .LR > ,
- and
- .L &
- are treated as normal characters, not HTML markers,
- and are translated to
- .LR < ,
- .LR > ,
- and
- .L &
- on output.
- To embed the raw HTML markers, use
- .LR \e< ,
- .LR \e> ,
- and
- .L \e@
- .RI [ sic ].
- .SS Font changes
- .PP
- .I Htmlroff
- interprets the usual
- .BR \ef ,
- .BR .ft ,
- .BR \es ,
- and
- .B .ps
- requests to change the font and point size.
- After applying each such change to its internal registers,
- .I htmlroff
- invokes the
- .B .font
- macro to emit corresponding HTML.
- The default definition of
- .B .font
- is:
- .IP
- .EX
- \&.de font
- \&.ihtml f1
- \&.ihtml f
- \&.ihtml f <span style=\"font-size=\\n(.spt\">
- \&.if \\n(.f==2 .ihtml f1 <i>
- \&.if \\n(.f==3 .ihtml f1 <b>
- \&.if \\n(.f==4 .ihtml f1 <b><i>
- \&.if \\n(.f==5 .ihtml f1 <tt>
- \&.if \\n(.f==6 .ihtml f1 <tt><i>
- \&..
- .EE
- .LP
- Input files can redefine
- .B .font
- like any other request or macro.
- .SS Paragraphs
- .I Htmlroff
- implements line height, text adjustment, and margins by
- wrapping all output text in
- .B <p style="...">
- tags.
- This behavior can be disabled by setting the
- .B .paragraph
- number register to zero.
- Setting the
- .B .margin
- register to zero
- eliminates only the margin annotations.
- .SS Subscripts and superscripts
- .PP
- .I Htmlroff
- interprets the
- .BR \eu ,
- .BR \ed ,
- and
- .BR \ev
- requests to move vertically during output.
- It emits output vertically offset up the page inside
- .B <sup>
- tags and output vertically offset down the page
- inside
- .B <sub>
- tags.
- This heuristic handles simple equations formatted by
- .IR eqn (1).
- .SS Conditional input
- .PP
- To make it easier to write input files that can be formatted by both
- .I troff
- and
- .IR htmlroff ,
- .I htmlroff
- adds a new condition
- .B h
- which evaluates true in
- .B .if
- and
- .B .ie
- requests.
- The
- .B t
- condition continues to evaluate true, to accomodate
- input files trying to distinguish between
- .I troff
- and
- .IR nroff .
- To write a conditional matching
- .I troff
- alone, use
- .RB ` ".if !h .if t" '.
- .PP
- .I Htmlroff 's
- handling of conditional input does not match
- .IR troff 's
- exactly.
- For example,
- .IP
- .EX
- \&.if 0 \e{\e
- \&.de xx
- \&..
- \&.\e}
- .EE
- .LP
- redefines the
- .B xx
- macro in
- .I troff
- but not in
- .IR htmlroff .
- Do not write files depending on this behavior, as this bug may be fixed
- in the future.
- .I Htmlroff
- also mishandles
- .B \e}
- in some cases. To work around them, use
- .B .\e}
- on a line by itself, as in the last example.
- .SS Diversions
- .PP
- Diversions in
- .I htmlroff
- use the alignment in effect at the time of the
- diversion
- when output.
- In particular,
- .IP
- .EX
- \&.di xx
- Line here.
- \&.di
- \&.nf
- \&.ce
- \&.xx
- .EE
- .LP
- produces a centered line in
- .I troff
- but not in
- .IR htmlroff .
- The solution is to center inside the diversion, as in
- .IP
- .EX
- \&.di xx
- \&.if h .ce 999
- Line here
- \&.di
- .EE
- .SS Traps
- .I Htmlroff
- implements traps at vertical position 0,
- which run when the first character is about
- to be printed.
- Other position traps are ignored.
- Input traps are implemented.
- .SS Input pipes
- .PP
- .I Htmlroff
- adds a new request
- .B .inputpipe
- .I stop
- .I cmd
- that redirects
- .IR htmlroff 's
- input into a pipe to
- .IR cmd .
- The redirection stops on encountering the line
- .IR stop ,
- optionally followed by white space and extra text.
- This is a dangerous and clumsy request, as
- .I htmlroff
- stops interpreting its input during the redirection, so
- .I stop
- must be found in the input itself, not in a macro that
- the input might appear to call.
- Although clumsy,
- .B .inputpipe
- allows input files to invoke
- .I troff
- to handle complicated input.
- For example,
- .B tmac.html
- redefines the
- .B PS
- macro that marks the beginning of a
- .IR pic (1)
- picture:
- .IP
- .EX
- \&.nr png -1 1
- \&.de PS
- \&.ds pngbase "\e\e*[basename]
- \&.if '\e\e*[pngbase]'' .ds pngbase \e\en(.B
- \&.ds pngfile \e\e*[pngbase]\e\en+[png].png
- \&.html - <center><img src="\e\e*[pngfile]"></center>
- \&.inputpipe .PE troff2png >\e\e*[pngfile]
- \&..
- .EE
- .LP
- This macro invokes the shell script
- .I troff2png
- to run troff and convert the Postscript
- output to a PNG image file.
- Before starting the program, the macro creates
- a new file name for the image and prints
- HTML referring to it.
- The
- .B .B
- register holds the final path element
- (the base name) of the current input file.
- .SS Unimplemented
- Tabs are set every eight spaces and cannot be changed.
- .PP
- Some requests, such as
- .BR .tl ,
- are unimplemented for lack of a good implementation.
- Workarounds can be defined as necessary in input files.
- .SH SEE ALSO
- .IR htmlroff (1),
- .IR mhtml (6)
|