- Introduction
- The text editor
- (X|HT)ML
- LaTeX
- Enscript and printing tools
- PS Manipulation
- PostScript
- Preprocessing tools
- Other tools
- Other readings
Unix is very user friendly, it's just picky about who its friends are.
I try not to use office suites. Not because of some issue with proprietary software vs. free software: I use OpenOffice.org (OO.o) to open various office documents that I receive, and I've been using it for a while while I learned of more and more tools suitable for various tasks. It's not even a matter of not having the will to learn them: most of the tools I use have a steeper learning curve at the beginning, altough it is well payed with ease of use later. Neither it is only a matter of older computers and office suites being memory hogs: they usually are, but some lightweight exceptions exist, and luckily my old computer is still able to manage even OO.o.
The real reason is just that I feel more confortable with those other tools, I find them easy to use, against common misconceptions that call them user unfriendly, and I do believe that the *nix tradition of small tools that do a specific task and intercooperate smootly is more versatile, more suitable to my way of working and more functional than monolithic suites that try to do everything.
This is not something that everyone should or could use: if your whole use of office is to write one letter or short document every month or so, probably anything else will be more effort than gain. Also, there is no need for everyone to follow my way, as everyone can generate formats that can be read and sometimes modified in both styles. This is enlightment matter: if you want to follow the Way to Redemption you can read the rest of this document, if you feel that this is not your way, this is a matter where you're surely free to err. :) I would of course appreciate if you respected my choice at least as i respect yours.
One caveat: when I talk of office suites I talk of those functions that I would use, and this includes mostly "text" documents, like those produced by Writer (OO.o) or MS Word and some presentation, as done in Impress (OO.o) or MS PowerPoint. I don't usually need spreadsheet programs, and I don't know whether they could or should be substituted with something else; the only exception is for list of items: that I believe is database work, not spreadsheet work, and simple MySQL databases I use. Also, I sometimes use the simple vectorial graphics ability of some office suite, since I'm still looking for good free software in the area (but see also below the postscript section on the subject).
The Text Editor
Most of the tools I use require me to write a simple text file with some markup or commands that will be then read with an interpreter or passed through a compiler: this allows me to use always the same editor I'm confortable with, not one choosen by those who developed the other tools, but allows also the versatilty to be able, when need arises, to use whatever text editor I find on foreign computers. Also, this allows me to run whatever preprocessors I need on the file. Another advantage is that what an human has written, another human can always read, directly from the source, even when interpreters or compilers are not available, and in time a hand conversion to some new format when the old is not availble is always possible, altough time consuming.
My choice, as those who know me may already have noted, is called VIM: with just those features that one needs to edit text and well integrated in the *nix style, it is a good practical text editor, and as a plus you'll be able to use rawer versions of vi, and will have some clue even when being forced to use things like ed.
Of course, other choices are available: graphical editors like those found in KDE or Gnome, simple editors like pico; i would not suggest emacs, since it is another bulky integrated suite not quite coherent with the modular *nix style, (and the fact that modern computers are suited to worse bulks is not a valid reason to call it lightweight) but if that is what you're confortable with it will work.
Sometimes that's it: there are things for which a simple text file is enought, either distributed or stored as it is (the right way for mail, newsgroups etc.) or treated with some relatively simple tool like Enscript for printing. The main drawback to this approach lies in the choice of encoding used: ascii is always a good choice, but it misses the accented characters I need to write in italian, and apostrophes are an alternative that can't always be acceptable; I hope that a wider adoption of unicode will change this, but in the meanwhile stick to languages that allow me to use escape codes when I really need "strange" characters.
Enscript and printing tools
When I need to print some text file, I usually use enscript that allows me to give some fancy improvement to otherwise plain txt: it can easily use different fonts, both monospaced and proportional, to ease reading (and optimize paper use) of different kinds of document; its ability to recognise various languages and higlight them makes it the perfect tool to print source codes. I also use it, together with some postprocessing tool, to write scripts that print certain kinds of text that need to be printed always in a similar way, such as lyrics on cd booklets.
(X|HT)ML
Some of the languages that I use quite often when writing texts that should be shared mostly in electronic format, are HTML and various XML applications for specific tasks like DocBook.
I always vim-write my html, or even the html+php that makes up my pages, as comes natural when one follows my approach, but more related to this rant is the use of very simple html, with a minimal set of tags (<hN> <p> <em> <strong> lists and little else) that work quite well for documents that need some minimal formatting and non-ascii characters, but are short enought to allow for onscreen reading. I also write such simple html when I'm writing things that will be probably published on a web page I don't control the style of, as this will allow it to be pasted right in the text area of the final document with very little changes. Such pages are usually valid XHTML 0.1 strict, or at least they would be if I added a proper header.
When I'm writing short documents for which a specific XML application exists, I sometimes use it, like DocBook for HOWTO-style manuals; I find that this won't always work for longer books, as I believe that, altough it gives great versatility in the choice of on-screen formats that can be generated, the tools I've used to generate printable formats still need some work in the quality of the output.
LaTeX
When I'm writing documents that will probably need printing, my choice is usually LaTeX, as it is The tool that gives professional quality documents with minimal effort.
With LaTeX I can write everything from a short article to a book, but also letters, slides etc. worring only about the contents of the document and marking elementary parts of its structure, knowing that the compiler will then produce a layout of quality as high as can be produced with automatical tools (and still higher than most people who are not professionals will get by hand), will take care to generate tables of contents, figures, etc. as well as cross-references and all that such a document needs. Its great abilities in managing formulas, even intricated ones, is a very appreciated plus.
It is not an all-purpose tool, as it needs to know the "kind" of document, the "documentclass", it's working on to give its usual excellent results, but the standard classed cover all of the usual stuff, and some other useful class can be found over the internet, usually with the abitual quality. Someday I think I'll learn to create new classes, altough I'm afraid that I would need also some additional dtp knowdlege to get good results.
While it is made to generate documents meant for printing, modern packages like hyperref (included in common distributions) allow for some hypertext abilities in the formats that support it (such as pdf), and it's even possible to use latex2html to generate an HTML version of the document, even if it is not as good looking as one could want.
PS Manipulation
Most of the formats I use can, in some way, transformed to postscript files, and this allows me to use PSUtils for further manipulations, such as n-up printing or signature reshuffling of pages (bookbinding being a craft I plan to learn some day), something that can be done even with documents printed to file from some office suite, but could need some really hard tweaking to be done directly inside the suite.
PostScript
There are still some tasks that couldn't be easily done with those tools: usually single pages with some very specific layout, such as business cards, forms like character sheets for rpg, or even graph paper in strange formats: I used office for those, but with mixed results, as I had to struggle with its bad habit to meddle with the measurements I tell him and rearrange things the way it feels look better (which is a good thing in a common text document, but not in the kinds of works I needed).
One day, more as a way to spend some time than with real hopes, I gave a try to vim-written postscript and the results were surprisingly good. As I already knew, it is a full programming language, not easy for everyone, but versatile and powerful; what I didn't know is that it isn't hard to begin and write something into and its many printing primitives, as one can expect, make printing even quite complex stuff easy. I would never use it for any text more than a couple of lines long: there are other better tools for that, but for pages with more lines than text is exactly what I needed.
To learn it, I've followed the samples included in the Blue Book, continued with Thinking in postscript and then I'm using the Postscript language reference (red book), the Green Book and other documents like How to use Adobe PostScript language files properly and Mathematical illustrations.
Preprocessing tools
One of the most useful preprocessor tool that can be applied to a text document is a spell checker: using one such as ispell or aspell allows to use a single dictionary for all of the languages and formats one is writing into, and it can be also easily switched between different dictionaries for different (human) languages. However, I must admit that here I'm talking more in theory than practice, as spell checking is something that I've always seemed to forget, both with office suites and with *nix style tools, getting quite some hate from the ones who had to proofread my works.
Other tools
There are lots of other *nix style tools that I haven't tried yet, but could be useful for some task or another that usually would be done with an office suite: some of them I suspect have been outdated, or keep some very specific use, but little else, others may still surprise me with unsuspectable usefulness and ease of use. I will update this rant with any such news.
Other readings
On the subject, you can also read Allin Cottrell's article Word Processors: Stupid and Inefficient.
