[Mirrored from: http://www.inf.tu-dresden.de/~jw6/doc/sdc/index.html]


This is the home page of sdc.

The current version is 1.0.2beta.

sdc is a well featured, free system aiming to make SGML suitable for day to day use. It's in a ``production state'' now and proved for large documentation.

With sdc it is really simple to write technical documentation, reports, books, letters, man pages, or prepare talks (with slides and hand outs). You can include some graphic (made with other tools, e.g., xfig, tgif or anything creating EPS-Files) or other special data representation (e.g., tlb/roff tables) and so on with ease.

Whatever you do, while writing you never have to worry what the final result will look like. When done, you convert your writing into the desired target format by sdc and promised: it will look at least reasonable.

The goal of sdc is to be author friendly, easy to use without the need of special editors and to hide as much of the backend as possible. For the sake of the latter extremly funny features of the one or other backend are not supported. Or at least not in a portable way.

1 DTD's

sdc comes with a couple of DTD's (document type descriptions). These allow you to write simple documents, letters up to large things like books using very few markup. Yes it's intended to be author friendly and to be typed by hand! That's the mayor difference to some other DTD's, which assume, that SGML/DTD aware editors will become available soon.

Why doesn't sdc use other well known DTD's?

There is no reason not having sdc process other DTD's. In fact it's simply a matter of man power. Up to know I was mostly busy to get the core system up and running.

And what's the reason not to use another well known DTD from the very begining?

Because it's meant to be author friendly. The answer depends on the DTD in question:

Too much markup to be typed by hand. I, personaly, would never have used it for my own stuff.

If there is time, I'll (or better someone else should) build the support.

Linuxdoc sticks much too close to QUERTZ and LaTeX. Too much to type, too much to know, too few features.

In fact linux-doc inspired sdc by the idea and the missing features.

But at the moment we are beta-testing the linuxdoc handling by sdc.

2 Target Formats

Currently the target formats (those produced from the SGML-source) LaTeX, PostScript, HTML, Info, roff -man, formatted ASCII and, to a very limmited extent RTF, are supported. Furthermore support for literate programming is built in.

The backend is completely hidden (i.e., you don't need to worry about any ``special'' caracters except those introduced by SGML: & and <). But there are some things you might want to know about the representation of the documents in the target formats. For instance how large documents are broken into pieces for html or which notations don't have a representation in certain formats. See here for this.

3 The bottom line (other features):

Things such as sorted indices and table of contents are automatically created for larger documents. Furthermore, there is support for special (but not completely portable) formattings, e.g., you can mix LaTeX, roff and Lout code within one source file(1) and easily include encapsulated PostScript and xfig pictures -- as long as a resonable representation in the final format exists it will be automatically created. Have a look at an example by Lout or LaTeX. (2)

The document language is taken into account, e.g., if standard text is to be included it's in the language of the document and language special things like quotation marks change their appearance. (Currently only english and german is provided.)

Have you ever seen that before? Where?
This ``example'' doesn't work on all compilations (the roff table is missing sometimes), due to the fact that this site runs either an old or errornous installation of ghostscript. Please bear with me.

4 Core System

The core system only provides a mechanism to translate SGML (using sgmls or nsgmls as frontend parser) into something else. The rules of the translation are internally described with Scheme. (But there is no need to know any Scheme if you are yust an author and you need only very little Scheme when implementing other target formats.) This very core system doesn't do much for document authors. It's of use for people who have some DTD and some formats they want to derive from and for those having data in special representation and who need to write an extension to the formater.

With version 0.7 of typeset/sdc (the former was the old name I had to abandon because it conflicts with internal commands of some shells) the core system became mayor rewritten to allow more flexibility for the processing. Caveat: The the most of the internals of the new parts are school book like. That is, they work great, but there is plenty of room for speed up. (At the other hand, with today computers: it doesn't hurd.)

The concept of the translation is based on parsing the document structure. The parser has access to the esis tokens coming from the SGML validation parser (SGMLS/NSGMLS). This parsing can be done according to another grammar than defined by the DTD. This way you end up with a representation (either a tree or a stream -- the choise of the programer) easier to map into the target format. It's also a good time to accumulate ``over all'' information, e.g., resolving cross references, creating the index or table of contents.

The target depending step it either to map the element of this stream 1:1 or 1:0 into tokens of the target format or to traverse the tree and deliver output tokens from it's nodes.

The whole thing compare somewhat to STIL [here]. But it seems to need less Scheme knowledge and less typing.

5 Documentation available

Here is the user documentation a PostScript version produced by Lout and one produced by LaTeX. It's still not too detailed, but comparing the source with the output above should serve an example. Also a man page is available.

For math symbols and greek characters available see either the dvi- or the ps-version.

If you prefer you can get almost all documentation compiled into one document. (The pieces are simply included subdoc entities, which got compiled into divisions.)

Unfortunatly there is no good documentation at how to extend typeset at the moment.

6 Distribution

Click here for the latest distribution. The same file is also available as sdc-version-number from my ftp site. I've mirrored the other things you need for installation there.

Please note: It is really not always easy to keep the support for all targets and especially for all notations stable. If you encounter any problems please let me know.

If you have any or suggestions on how to improve it drop me a note. Do so also if you would like it and want to be informed about future changes.

Jörg Wittenberger