Books of Note

Practical Common
LispThe best intro to start your journey. Excellent coverage of CLOS.

ANSI Common
LispAnother great starting point with a different focus.

Paradigms of Artificial Intelligence
ProgrammingA superb set of Lisp examples. Not just for the AI crowd.

Thursday, November 18, 2004

Text Markup Languages 

I just saw a reference to Skribe on Lambda the Ultimate. Skribe is a text markup lanaguage, similar to what you would get with TeX or HTML, but done as a Scheme program. Unlike TeX or HTML, you thus have the whole power of Scheme available to you during the document generation process. Check out the Skribe link above for an example of Skribe markup. Generally, it's pretty clean.

This really struck home today because I have been looking at doing a bunch of writing on my Linux system and am trying to figure out what tools are available. I used to be a very heavy LaTeX user about 15 years ago, when I was working for HP and using HP-UX daily. The problem is, I really think the WYSIWYG paradigm is the Right Way(TM) to do things, long term. The "edit, compile, debug" cycle that TeX imposes is painful in the same way that it is when programming in C. Essentially, WYSIWYG is a sort of REPL for application programs, providing the user with instantaneous feedback as they manipulate the system state visually. Now back in 1989, you didn't have a lot of options on a Unix-based system unless you wanted to spring thousands of dollars for Interleaf. So, everybody used TeX.

Of course, in the last 15 years, things have changed substantially. There are good options like Writer and Abiword that provide good quality output in a WYSIWYG editing environment. In spite of that, TeX still shines in terms of its high-quality output.

Myself, I started writing a short document the other day in LaTeX. I did fine for the first couple of pages that were mostly just prose and lists of various sorts. LaTeX is obviously very HTML-like in concept and it's easy to go from one to the other. Then I hit a table that I had to generate. In short, LaTeX's table macros just suck. Yes, the output is nice once you figure out how to get what you want, but getting things like line breaking, column widths, shading, etc., to happen is just difficult. TeX kept complaining about overfull boxes, blah, blah. So, in the end, I cut and pasted all my text out of Emacs and into OOo Writer. In a few minutes, I had the tables the way I wanted them and went on.

I can see doing a long book or something in TeX. It's fairly easy for long stretches of prose and generates good output. For other stuff, however, it's pretty painful. Yes, I know that if I look on CTAN I can probably find 10 better table macro extensions that would have made my life easier, but who has the time.


You may prefer$Nmw
or in CLiki:

and for slides:




While I understand your gripes about some of LaTeX problems, I don't agree with you that WYSIWYG is the right way. Simply put, authoring a document is a very different process and has very different requirements than reading a document. WYSIWYG tools like word processors are optimized to show your document the way it is meant to be read, printed on paper, which is sub-optimal when you are in the process of editing it on a computer screen.

On of the advantage of a tool like LaTeX is that it supports all kinds of external tools to make editing easier. There are things like TeXmacs or LyX which are almost WYSIWYG, but personally I use Emacs + AUCTeX + RefTeX + preview-latex. This last one does background compilation of selected parts of your document (typically titles, math formulas and figures) and inlines the resulting images in your Emacs buffer. Pretty neat. As for tables, you can use things like table.el or LaTable to create them visually and then generate the LaTeX equivalent.

I think the existence of tools like TeXmacs, LyX, etc., really prove my point. While I agree with you (Mr. Anonymous ;-) that editing and reading are two different tasks, there are really three different tasks involved with a document: editing the raw textual information, dealing with layout issues, and then finally reading. Modern Word processors actually do a fairly good job with the first two. TeX is horrible in terms of dealing with layout issues. While is has superb algorithms for performing layout, it forces the user to embed strange markup into a document in order to drive it, and then a batch-oriented compiled-edit-debug cycle to actually figure out of the weird incantations actually did what you wanted. In Word or OOo Writer, I just click on a table line with the mouse and drag it where I want it to give that column more room. What is really needed is a great word processor that uses some of TeX sophisticated layout algorithms.

This was mentioned by Anonymous, but I want to repeat it for emphasis: get LyX or TeXmacs. Learn to use it. You want "a great word processor that uses some of TeX sophisticated layout algorithms"? I've just pointed out two of them. Personally, I recommend LyX. The LyX philosophy is not exactly WYSIWYG; they say it's WYSIWYM---what you see is what you mean. You don't get precisely formatted text as you type (if you want that, try TeXmacs), but you get something that is easy to edit, with a nice GUI, which shows you the structure of the output. Sure, footnotes will be embedded in the text instead of at the bottom of the page (since LyX doesn't show page divisions), but it's easy to edit and the output uses LaTeX. There are editing modes to help with some of the specialized document classes that LaTeX has. It can easily use LaTeX features like table of contents and indexing. It sounds like exactly what you're looking for. Please, if you value your sanity, get LyX (or possibly TeXmacs). It's waiting for you.

Post a Comment

Links to this post:

Create a Link

This page is powered by Blogger. Isn't yours?