Re: indents

Steve Knoblock <knoblock@worldnet.att.net> wrote:
> I am not deaf. Indents do have no structural meaning. And likely have no
> place in a content markup language. They are presentation, which can mark a
> significant break in paragraphs. My initial paragraphs do have a meaning,
> they are paragraphs intended as an overview of the following paragraphs. So
> I create and element <p class=initial>

Steve has already said this in a way, but I want to put it differently.

When we see an indented paragraph on a printed page or on a screen, we
impute some meaning.  We do this because of cultural associations -- it's
learned, rather than inherent, as Derrida has argued [1] (see [2] for a
clear summary).

In other words, the author, designer, typographer, writer or printer has
had a meaning in mind, and has then used indentation to try to communicate
that.  Indentation is usually only one of several typographic symbols used
to communicate a meaning, however, so one shouldn't ask for the meaing of
any sinngle feature alone, but rather ask what is the meaning that is being
conveyed, of which one vehicle is indentation.

The DSSSL style language [3] allows one to select the first (or nth)
paragraph for special treatment.  SoftQuad Panorama [4] has a drop-down
choice offering First, Middle, Last, non-First, non-Middle, non-Last, All.
This suffices in most cases, because you can also use containment and
attributes to choose styles.

HTML as it is generally used has very little element nesting compared
to most other SGML document types I've seen.  This means that it's more
important to be able to select styles based on position in a sequence
than it would otherwise be, I think.

One might also like to us attribute values within style sheets, both for
generated text and for numbers.  Consider defining the behaviour of
<FONT SIZE="12 point"> in CSS.  (I'll ignore Netscape's actual FONT units
here for a moment).
    font: { font size @attribute(SIZE) }

Now, this is fine except that FONT is also used for colour:

    font: {
	if (defined(@attribute(SIZE))) {
	    font size @attribute(SIZE);
	if (defined(@attribute(FGCOLOUR))) {
	    text colour @attribute(FGCOLOUR);

and so on.  But now I've introduced "if", which does nt fit in well with
the cascading model, one might say.

Another approach would be to add to the selectors:
    font (SIZE set): {
	set size....
    font (FG set): {
	set fg colour...

but now if I specify both size and colour on my FONT element, I need a rule
for both of them, or I need to say that both of these rules apply.

Once you start getting this complex, I think it's worth backing off and
thinking about other approaches:
* use a server-side translation to HTML, perhaps based on DSSSL
* wait for smarter clients -- e.g. XML [5] + DSSSL
  The XML specification is due to be frozen this November.
* use SGML or PDF technology (e.g. Acrobat [6] or Panorama [4])
  (if you use PDF, you will need to have some other way to format your
  documents to generate PostScript first, such as troff, TeX or one of the
  various SGML formatting engines)

HTML has always been a 90% solution, not a 100% solution, and that's why
it's been so widespread.  It doesn't have to do everything.


Liam Quin, lee@sq.com         | lq-text freely available Unix text retrieval
Senior Technical Consultant   | FAQs: Metafont fonts, OPEN LOOK UI, OpenWindows
SoftQuad Inc. +1 416 544-9000 | xfonttool (Unix xfontsel in XView)
http://www.softquad.com/      | the barefoot programmer

[1] Derrida, Jacques, The Truth in Painting; see [2]

[2] Deconstruction in Graphic Design, in `Design Writing Research',
    Lupton & Miller, Kiosk, New York 1996

[3] Document Style & Spemantics Specification Language;

[4] SoftQuad Panorama:

[5] The eXtensible Markup Language (SGML on the Web)

[6] Adobe Acrobat