Wednesday, January 19, 2011

(La)TeX Advantages and Disadvantages


Advantages

  • In wide use.  Universal.  Free.  Easy to install everywhere.
  • Good Infrastructure (emacs support, typesetting stage, pdf output; many users)
  • Beautiful output
  • The LaTeX companion book
  • The only structured text-based word processing system (in wide use?) with good math support
  • "Easy typing" oriented---XML is painful
  • auctex support in emacs with nice highlighting 
  • Mature --- no bugs in base.  few if any bugs in packages
  • Many, many packages on ctan 
  • Many helpful souls on comp.text.tex
  • Defining simple user macros is easy
  •  
    There simply is no alternative with its feature set.  (There are alternatives for smaller tasks, e.g., WYSIWYG for letters, etc.)

    Disadvantages

    • Based on ancient macro language, which only very few wizards still understand.  When they disappear, TeX will die.  It is already happening slowly.
    • Insane syntax (or shall we say non-syntax).  User documents could instead be sanely defined with a grammar, while keeping TeX bowels hidden.  User text difficult to parse: not clear how many arguments each command has (see below).
    • Weird catcodes
    • Incomprehensible error messages
    • No easy to understand end user programming language for complex tasks
    • No clear hooks for external programs (e.g., a preprocessor)
    • No stdin support
    • Poor namespace in macros (no '.', digits, '_' in macro names)
    • Strange meta characters.  '%' for comment, '#' for macro expansion.  $ for math---why not \m{math} to free up the $ sign for what it is?
    • No clear separation of content and markup
    • Syntax changes require knowledge of both emacs auctex and tex macro language, neither of which are very easy to learn.  error messages would have to be sane.  usage would have to be wide.
    • Painful font installation  (No "drop font here and it will work.") 
    • No multithreading and multiprocessor support (even for multiple \include{} files)
    • No definitive authority.  Knuth has pretty much abandoned it, and TUG does not have the resources (nor believes that it has the right) to abandon old and obsolete features.  It's as if Larry had disappeared and perl remained stuck forever at version 1 or version 2.    
    Unfortunately, conTeXt is not ready (we spent a year trying to get a complex book to typeset, but ultimately gave up.)  conTeXt is also based on the TeX messy macro language.  thanks to Hans Hagen and his team for pushing the envelope, though.


    Small Syntax Gripes

    • $ should be the dollar symbol.  It is common enough.
    • math should be typeset with \[ \] or \m{ math }, instead of '$$' and '$'
    • # is an uncommon character.  good.  one or two of these should be the comment character, not %.  % should be percent.  It is a fairly common character.
    • I should know what an argument to a macro is by looking at it.  where is the argument to \sqrt3 ?  you can know this only if you know the definition of \sqrt.  what is the argument to \mymacro{1} ?  Is '{1}' an argument or a block following a macro?  Again, you need to find the definition of \mymacro. 


    What I Need

    A sane-syntax markup language designed for easy typing (i.e., not XML) with an auctex emacs plugin, with a syntax check BEFORE the typeset, with an extended namespace for commands (or macros),  with an ability to use most ctan packages..  Separation of markup from formatting.  HTML or pdf generation.  A user community for this.  Books written for it.


    Your mileage may vary, of course.  And to be clear, it is easy to point out weaknesses.  It is hard to put something together.  The folks who have made TeX and LaTeX what it is have to be commended.