archives

Formatting hints from Mark

Frank asked me about pretty formatting. Well, I can describe how I work and my opinions. Your mileage may vary. I do markup by hand, copy/paste style, in an editor with N clipboards to keep the variations handy. You only need to know 3 things about markup. Forget CSS files, classes, and other fanciness. That's overkill for LtU. The things to know are that:

  • The style attribute does everything.
  • The value of the style attribute is a single string encoding all parameters. Include or omit as many as you like.
  • The style attribute qualifies both paragraph tags and span tags (for inline markup).
That's it. Keep a kitchen-sink style attribute on some clipboard with default values. Paste it as needed, then overtype or delete specific values in context. If you have more clipboards, some can hold preset markup. Here's a kitchen sink, which you may copy with your mouse and customize to your liking:
style="color: black; background-color: white; font-style: normal; font-weight: normal; font-size: normal; font-variant: normal; text-decoration: none; text-indent: 0%; padding-left: 0%"
DeepX offers a handy cheat sheet (PDF) for these parameters. Note my deliberate omission of font-family.

This paragraph uses the kitchen-sink style. It should look the same as any unadorned paragraph.

For interest's sake we can demonstrate options. The desperately curious may use their browser's "view markup source" function.

A warning paragraph in large-strong-red text with 3% indent and 5% left padding: The old font tag is deprecated, don't use it any more.

Font-size permits many types of settings, but don't use absolute metrics (points, ems, cm, whatever). Use something like xx-small, x-small, small, medium, large, x-large, xx-large, smaller, normal, larger, or a percentage like 65% or 132%.

The only place where you might use absolute metrics is in the border of a highlighted section, if you want a border at all. Note how span tags can nest. Small caps are possible too. There is also something called text-transform for capitalization.

Simple inline markup remains simple. Forget style. First we have the famous "code" tag. You can use font-family: monospace to similar effect. Use the "em" tag for emphasis, the "strong" tag for strength. Don't use older "i" or "b" tags. The style attribute defines italics as font-style: normal, font-style: italic, and font-style: oblique. It defines boldface as font-weight: normal, font-weight: bold, and font-weight: bolder. We also have text-decoration: none, text-decoration: underline, text-decoration: overline, text-decoration: line-through, text-decoration: blink.

Simple "yellow" background color performs inline highlighting. You can also play with hex color codes, but simple color names work, e.g., font-weight: bold; color: yellow; background-color: purple.

This stuff can be overdone. I just wanted to showcase possibilities, since someone (important like Frank) asked me. Use good taste. Colors help a great deal. LtU likes blue, or blue italics, for excerpts, and italics for quoting others from LtU. I would recommend a distinct color as well, more than one if quoting more than one person to compare statements.

Embedding Prolog in Haskell

Luke once pointed to Peter Norvig's embedding of Prolog in Lisp as an example of the power of the language, and asked whether (or if) it could be done in Haskell. I said I would think about it, but never got around to working out the details.

Well, it turns out it's been done, and the essential bits are quite simple and intuitive, though macros would help to hide some of the abstract syntax-looking stuff (not apparent from the paper's append example).

J. M. Spivey and S. Seres. Embedding Prolog in Haskell. In Proceedings of Haskell '99 (E. Meijer, ed.), Technical Report UU-CS-1999-28, Department of Computer Science, University of Utrecht.