TeX - The ultimate Yakshave

1c88d7906e3ffa450aedff2f5f1d1299?s=47 Florian Gilcher
March 05, 2015

TeX - The ultimate Yakshave


Florian Gilcher

March 05, 2015


  1. TEX, the ultimate yakshave Florian Gilcher March 5, 2015

  2. Donald Ervin Knuth Born 1938 Professor at Stanfort “father of

    the analysis of algorithms” Known both as a theoretical and a practical computer scientist Gives a christmas lecture about trees Patron saint of yakshaving
  3. The art of computer programming First released in 1968 Describes

    programming a theoretical, but practical computer.
  4. Yakshave 0 Write a book considered a “book of the

  5. Yakshave 1 Invent your own computer to illustrate a point.

  6. The state of typesetting Less then ideal.

  7. In 1976, Knuth prepared a second edition of Volume 2,

    requiring it to be typeset again, but the style of type used in the first edition (called hot type) was no longer available. In 1977, he decided to spend some time creating something more suitable. Eight years later, he returned with TEX, which is currently used for all volumes.
  8. Implementation strategy and language TEX is implemented in WEB, a

    dialect of PASCAL, that allows for literate programming, an idea invented by Donald Knuth. In literate programming, normal text is interleaved with specially marked code, putting Documentation first.
  9. Yakshave 2&3 Invent a programming paradigm. Implement your own programming

    langage dialect to support it.
  10. Problems Word breaking, line breaking and general text layout was

    not properly done back then.
  11. Yakshave 4 Invent a text layout algorithm (“Knuth’s algorithm”).

  12. More Problems Layout algorithms lay out objects of several sizes

    (characters). Characters are provided by font files. Free fonts were few and far between.
  13. Yakshave 5 Design a font: “Computer Modern”.

  14. Yakshave 6 Invent and implement a program to describe vector

    fonts: METAFONT.
  15. Legacy Later evolved into METAPOST for generic vector drawing.

  16. Seriously, I’m still waiting for a JavaScript library to implement

    diagram layouting of METAPOSTs quality.
  17. None
  18. Aside: Versioning TEX versions approach π. METAFONT versions approach Euler’s

  19. Yakshave 7 Implement a versioning scheme no one else uses.

  20. Independence What does a typesetting system produce? Something printable. Every

    printer back then had their custom format.
  21. Yakshave 8 Implement your own Device Independent Format (DVI)

  22. We finally got a system here.

  23. Community shaving is best shaving Leslie Lamport implemented a macro

    set for TEX, called L A TEX Others came up with ConTeXt
  24. Community Yakshave 0 Create not one, but two ungoogleable projects.

  25. Community shaving is best shaving Before UTF-8, another encoding (T1)

    was invented, to work with characters beyond ASCII
  26. Changes We’d like to work with semi-modern formats, e.g. PostScript

    or PDF. And how about scripting the whole thing? And use modern font formats and UTF-8?
  27. Changes pdfla,tex luala,tex xela,tex

  28. You cannot reimplement TEX TEX is free software, but any

    modification must not be called TEX.
  29. You cannot reimplement TEX TEX is free software, but any

    modification must not be called TEX. Their output might differ.
  30. You cannot reimplement TEX TEX is free software, but any

    modification must not be called TEX. Their output might differ. On the plus side, TEX is really just the layouter.
  31. Community Yakshave 1 Transpile WEB to C and work from

  32. Community Yakshave 2 Build a lot of tooling around it.

  33. Community Yakshave 2 Build a lot of tooling around it.

    For years and years.
  34. Frustrations TEX is OLD TEX is ODD TEX has legacy

    TEX is HUGE Backwards-compatibility trumps everything
  35. TEX is not a programming language Lots of vocabulary is

    from typesetting Primitives for logic are bad Do you know what a strut is? A quad, etc?
  36. Distribution: texlive 2.8 GB never removes things renames on breaking

    changes compiles everything under the sun huge toolchain for document management
  37. Distribution: texlive basic 98MB allows package by package downloads

  38. A system with documentation culture The documentation is the test

    case From TEX on. A predictable learning curve
  39. Fast Still one of the fastest typesetters around Memory-conservative Batchable

  40. High quality Exact, repeatable, layout Font support even for weird

    scripts is great Lots of support for drawings
  41. Featureful Lots of special symbols Support for all fields of

    science Support for References and Bibliography (through packages)
  42. What can you learn from TEX? The drawbacks and merits

    of strict backwards compatibility How software was written 40 years ago The amount of effort necessary to replace this. Actual typography
  43. Earn money with TEX Both TEX and “TAOCP” offer bounties

    for bugs. Typesetting bugs are bugs. http://en.wikipedia.org/wiki/Knuth_reward_check The checks are rare.
  44. None
  45. Examples

  46. Thank you