The file linuxdoc-sgml.tar.gz
contains everything that you need
to write SGML documents and convert them to LaTeX, nroff, and HTML.
In addition to this package, you will need one or both of the following:
groff
. You need version 1.08 or 1.09. Apparently some of
the margin-handling in groff
is in a state of flux from version to
version; they both work, but you get slightly different results.
(Particularly, with 1.09 the left margin isn't indented two characters as
it is in 1.08. There is a way around it, but it looks terrible on 1.08.
Versions previous to 1.08 will not work.
You can get this from prep.ai.mit.edu
in
/pub/gnu
. There is a Linux binary version on sunsite
as well.
You will need groff
to produce plain ASCII from your SGML docs.
(TeX/LaTeX will be used to produce nicely-printed PostScript and .dvi).
sunsite
). Of course, you only need TeX/LaTeX
if you want to format your SGML docs with LaTeX. So, installing TeX/LaTeX
is optional. See the section on the Linux HOWTO project below for how we'll
manage this vis-a-vis the Linux HOWTOs.
The steps needed to install and configure the linuxdoc-sgml
stuff are
as follows:
linuxdoc-sgml.tar.gz
somewhere.
This will create the directory linuxdoc-sgml
where all of the SGML
files live. It doesn't matter where you unpack this file; just don't
move things around within the linuxdoc-sgml
directory.
sgmls
parser. In the
linuxdoc-sgml/sgmls-1.1
directory, issue the commands:
$ make config.h
$ make
$ make install
$ make install.man
This should compile the parser and translator, and place the binaries
sgmls
, sgmlsasp
, and rast
in linuxdoc-sgml/bin
.
I suggest that you don't move those binaries from that location; instead,
make symlinks to them from /usr/local/bin
or place
linuxdoc-sgml/bin
on your path. (If you move things around
within the linuxdoc-sgml
tree you'll have to edit a number of files
to get everything to cooperate again. Best to leave things as-is.)
If things don't work try editing the Makefile
in the sgmls-1.1
directory. I have it set to use gcc
as the compiler, and use
rather malignant options. Compiles fine on Linux and sun-4 systems.
This will also install man pages for the three binaries in
linuxdoc-sgml/man
. You can move those or link them to your
regular man page tree, should you need them.
format
, qroff
,
preroff
, prehtml
, and qtex
in linuxdoc-sgml/bin
.
All you really need to edit is the value of the LINUXDOC
shell variable which gives the full pathname of the linuxdoc-sgml
directory.
html-fix
directory, issue the commands:
$ make
$ make install
This will build fixref
and html2html
, which are post
processors for the HTML conversion, and place them in the bin
directory.
If all went well, you should be ready to use the system. Just be sure
that linuxdoc-sgml/bin
is on your path or you've linked the
files therein to your standard binary directories. Again, don't just copy
them somewhere else; the scripts expect to find each other in that
directory.
You can now test the system. The format
script takes an SGML
document as input and translates it to a given format. The qtex
script will process the output of format
using LaTeX, and
qroff
will process it using nroff.
Let's say you have the SGML document foo.sgml
. You can translate
it to LaTeX, and produce PostScript output (via dvips
) with
the command:
$ format -Tlatex foo | qtex > foo.ps
Or, you can produce a DVI file using the -d
switch with
qtex
, as so:
$ format -Tlatex foo | qtex -d > foo.dvi
If you want to produce plain ASCII, through groff
, use the command:
$ format -Tnroff foo | qroff > foo.txt
Note that I have tailored the groff
conversion for plain ASCII output.
(That is, I've removed page headers, page numbers, changed the margins,
and so on.) With some hacking you can produce PostScript and DVI from the
groff
resulting from format
, but I suggest that you use LaTeX
for that instead.
If you want to produce HTML, the procedure is a bit more complicated, because of cross-references. Here's an example:
$ format -Thtml foo.sgml | prehtml | fixref > tmp.html
$ format -Thtml foo.sgml | prehtml >> tmp.html
$ cat tmp.html | html2html foo > foo.html
$ rm tmp.html
This will produce foo.html
, as well as foo-1.html
,
foo-2.html
, and so on---one file for each section of the document.
Run your WWW client on foo.html
, which is the toplevel file.
Also make sure that all of the HTML files corresponding to your document
are in one directory, as they reference each other with local URLs.
A good way to test this would be to run it on this file,
guide.sgml
.
If you just want to capture your errors from the SGML conversion, use something like
$ format -Tnroff foo > /dev/null
The HTML conversion is, at this time, rudimentary but adequate. In the future there will be support for cross-references, navigation buttons, external URLs, and the like. Something is better than nothing. :)
Also, if you'd like to help me implement a texinfo (or plain Info) conversion for Linuxdoc-SGML, let me know! As with HTML we'll have to do some pre- and post-processing (which you supposedly shouldn't need with SGML, ah well), but that's not a big issue.
Next Chapter, Previous Chapter
Table of contents of this chapter, General table of contents
Top of the document, Beginning of this Chapter