%% Engine needed: luaTeX ≥ 0.63 %% Format needed: LaTeX2ε %% Packages needed: see list in the -aux.tex file … %% just use an up-to-date TeXlive2010 and the lualatex program to typeset % this document has version number 0.1c \documentclass{scrartcl} \input{tex-overview-aux} %% everything that is not content-related \begin{document} \savegeometry{normal} \begin{abstract} {\centering \Large \hyperref[textextview]{Link for the impatient.}\\[2ex]} In the world of \TeX, there are many developments and ambiguous names. This paper tries to give an overview of the development of \TeX\ and related programs. Contributions are welcome!\footnote{The current source code of this document is availble at \url{http://github.com/alt/tex-overview}. Please feel free to patch there or mail me any suggestions and comments. I'll be happy to extend and correct this document!} \end{abstract} \section{Introduction} The base frame and main idea of this document was taken from the article \textit{A brief history of \TeX,~volume~II} by Arthur Reutenauer in the proceedings of \textsf{EuroBacho\TeX 2007} and his talk there (see~references on page~\pageref{sec:refs}). Additional information is taken from original documentations and some review articles. For old, historic information, the \textsf{historic~archive} maintained by Ulrik Vieth and hosted on \url{ftp.tug.org} (see~refs) was very useful, especially in the reconstruction of \LaTeX\ versions. Many thanks for that great archive! All information is up to the date of this generated pdf and up to the information I found. Everything here is without guarantee – this is just to get an overview. Consult the references for further (and/or~correct) information! In the tree views, every node has a tooltip that shows up when you hover the mouse over it. For the case that your pdf viewer does not support this, there is a list of all the descriptions on page~\pageref{sec:text}. I tried to make the graphs more readable by using colors. All decisions reflect my personal opinion, not that of the community, of the authors or someone else. \begin{description} \item[{\let\nodecolor\normalimportant \tikz \node[coolnode]{normal};}] That is, not very important in my opinion, no huge user group, but still maybe important for special needs. Was used by a major community at least some time back, but is not of great impact nowadays. \item[{\let\nodecolor\vip \tikz \node[coolnode]{important};}] Engines or formats that had or have a great impact on (everyday) typesetting for a large community. \item[{\let\nodecolor\experimental \tikz \node[coolnode]{experimental};}] Developments that might still be under construction or were never used by a large community. Nevertheless, these might be very important to the development of other engines or for use of special typesetting. \item[{\let\nodecolor\package \tikz \node[coolnode]{package};}] \LaTeX-packages or single \TeX-files (useable as packages or modules) that seemed worth mentioning. There won't be many of this; most very important packages won’t be mentioned. \item[{\let\nodecolor\distro \tikz \node[coolnode]{distribution};}] Software bundles that bring \TeX\ and friends to the normal user. \item[{\let\nodecolor\program \tikz \node[coolnode]{program};}] Programs that are not directly connected to \TeX\ (but interesting in the context of using \TeX) or are separate helper programs. \item[{\let\nodecolor\fonttechnology \tikz \node[coolnode]{font};}] A font technologie. Neither a program nor libraries that provide access to fonts nor the actual files, but rather the abstract definition or specification. \end{description} Some graphs are quite complex, which is the reason why there are two versions of them: A short one mentioning only the most important things and a full version with everything I could find. In most cases I did not mention the authors of the programs/packages. This is not to diminish their effort but only for brevity (long names make things harder to read). I did not write any of the below-mentioned programs or packages. The authors are given in the documents linked in the references. \section{How to contribute} I hope one day this document would become the standard reference for questions like ”What program do I need for …?“, ”What's the difference between ...\TeX\ and ...\TeX?“, ”Why is it called …?“ etc. To get to this point, I need some help of people having read more documentation or even developed some of the programs mentioned here themselves. Special help is needed for: \begin{itemize} \item font technologies \item METAFONT and succesors \item Bib\TeX\ and successors/alternatives \end{itemize} It is up to you to contribute texts, references, links, descriptions, hints etc. I'll be happy about anything I can add here. Also, if you have suggestions about the layout, let me know. \section{Problems with pdf viewers} As this document makes heavy use of pdf-features, some pdf viewers are not able to show everything correct and as intended. My experiences with viewers are as follows: \begin{description} \item[evince] Shows the document correct and complete. Tested using Linux. \item[Acrobat Reader] will show all the information but might hide some text of very long tooltips (at least that's the case on my machine). Also, it draws annoying green boxes around the tooltips which do not belong there. \item[TeXworks] The built-in pdf viewer of the TeXworks editor does not break lines of tooltips, therefore long annotations are not shown completely. \item[okular] also does not break the lines. \item[xpdf] shows only very short tooltips. Most of the information is not visible in the graphs. \item[gv] shows no tooltips, but the annoying green boxes. (Linux) \end{description} \subsection*{About this document} This document is typeset in the \TeX\ Gyre Pagella font using the lua\LaTeXe/3\ format with lua\TeX\ 0.\the\luatexversion.\luatexrevision. \setlength{\columnsep}{1.5cm} \twocolumn \tableofcontents \topart{Tree Views} \newgeometry{margin=1cm} %% to save space; no need for margins if only a tree is shown \label{sec:tree} \Large \centering %%% TEX %%% \label{textextview} \tograph*({\tostruct[\TeX]{\TeX\ – the program}}){ \setlayer0 \tonode[\vip](tex)(7,\layer){\TeX} \tonode[\program](ant)(13,\layer){ANT} \todraw[dotted](tex)(ant) \steplayer[-1.5] \tonode(tex-xet)(3,\layer){\TeX-\XeT} \todraw(tex)(tex-xet) \tonode(nihongo)(10,\layer){Nihongo \TeX} \todraw(tex)(nihongo) \tonode(jtex)(15,\layer){J\TeX} \todraw(tex)(jtex) \steplayer[-1.5] \tonode(ptex)(10,\layer){p\TeX} \todraw(nihongo)(ptex) \steplayer[-1.5] \tonode(tex--xet)(3,\layer){\TeX-{}-\XeT} \todraw(tex-xet)(tex--xet) \tonode[\vip](tex3)(7,\layer){\TeX3} \todraw*(tex)(tex3) \steplayer[-2] \tonode(enctex)(5.9,\layer){enc\TeX} \todraw(tex3)(enctex) \tonode(mltex)(8,\layer){ML\TeX} \todraw(tex3)(mltex) \tonode[\experimental](uptex)(11,\layer){up\TeX} \todraw(tex3)(uptex) \todraw(ptex)(uptex) \steplayer[-2] \tonode(tex2pdf)(7,\layer){\TeX2PDF} \todraw(enctex)(tex2pdf) \todraw(mltex)(tex2pdf) \steplayer[-2] \tonode(omega)(1,\layer){$\Omega$} \todraw(tex3)(omega) \tonode[\vip](etex)(4,\layer){$\varepsilon$-\TeX} \todraw(tex--xet)(etex) \todraw'(tex3)(etex) \tonode[\vip](pdftex)(7,\layer){pdf\TeX} \todraw(tex2pdf)(pdftex) \todraw'(tex3)(pdftex) \tonode(texgx)(9.5,\layer){\TeX{}gX} \todraw(tex3)(texgx) \tonode(nts)(12,\layer){\NTS} \todraw(tex3)(nts) \steplayer[-2] \tonode[\experimental](omega2)(0,\layer){$\Omega_2$} \todraw(omega)(omega2) \tonode[\experimental](vtex)(3.6,\layer){V\TeX} \todraw(etex)(vtex) \steplayer[-2] \tonode[\experimental](aleph)(1,\layer){$\aleph$ (Aleph)} \todraw(omega)(aleph) \todraw(etex)(aleph) \tonode[\vip](xetex)(8,\layer){\XeTeX} \todraw(texgx)(xetex) \todraw*(etex)(xetex) \tonode[\experimental](extex)(12,\layer){$\epsilon\chi$\TeX} \todraw(nts)(extex) \todraw(omega)(extex) \todraw(etex)(extex) \todraw(pdftex)(extex) \tonode[\vip](pdfetex)(5,\layer){pdf($\epsilon$)-\TeX} \todraw*(etex)(pdfetex) \todraw*(pdftex)(pdfetex) \steplayer[-2] \tonode[\experimental](eetex)(6,\layer){ee\TeX} \todraw(pdfetex)(eetex) \steplayer[-2] \tonode[\program](lua)(0,\layer){Lua} \tonode[\vip](luatex)(4,\layer){lua\TeX} \todraw(aleph)(luatex) \todraw*(pdfetex)(luatex) \todraw[dashed](lua)(luatex) \steplayer[-2] \tonode[\experimental](itex)(7,\layer){i\TeX} } \clearpage %%% LATEX %%% \tograph*(\tostruct[\LaTeX]{\LaTeX\ – Lamport's \TeX\ format}){ \tonode(latex090)(-5.5,\layer){\LaTeX\ 0.90} \tonode(latex091)(-2,\layer){\LaTeX\ 0.91} \todraw(latex090)(latex091) \tonode(latex092)(2,\layer){\LaTeX\ 0.92} \todraw(latex091)(latex092) \tonode(latex09210)(6,\layer){\LaTeX\ 0.92 - 1.0} \todraw(latex092)(latex09210) \steplayer[-2.3] \tonode(latex2010)(-5,\layer){\LaTeX\ 2.0 - 1.0} \todraw(latex09210.south)(latex2010.north) \tonode(latex205)(0,\layer){\LaTeX\ 2.05} \todraw(latex2010)(latex205) \tonode(latex206a)(5,\layer){\LaTeX\ 2.06a} \todraw(latex205)(latex206a) \steplayer[-2.5] \tonode[\vip](latex209)(0,\layer){\LaTeX\ 2.09} \todraw(latex206a)(latex209) \steplayer[-2] \tonode(slitex)(2,\layer){SLI\TeX} \todraw(latex209)(slitex) \tonode(amslatex11)(6,\layer){\AMS\LaTeX\ 1.1} \todraw(latex209)(amslatex11) \steplayer[-1.7] \tonode[\vip](latex2ε)(0,\layer){\LaTeXe} \todraw*(latex209)(latex2ε) \todraw[dashed](slitex)(latex2ε) \todraw[dashed](amslatex11)(latex2ε) \tonode[\experimental](lambda)(-7.5,\layer){$\Lambda$} \todraw(latex209)(lambda) \steplayer[-1.5] \tonode[\experimental](lamed)(-7.5,\layer){Lamed} \todraw(lambda)(lamed) \tonode(amslatex12)(6,\layer){\AMS\LaTeX 1.2} \tonode[\experimental](alatex)(-4.2,\layer){A\LaTeX} \todraw(amslatex11)(amslatex12) \todraw(latex2ε)(amslatex12) \todraw(latex2ε)(alatex) \steplayer[-1.5] \tonode(amslatex21)(8,\layer){\AMS\LaTeX 2.1} \todraw(amslatex12)(amslatex21) \steplayer[-1] \tonode[\vip](pdflatex)(2,\layer){pdf\LaTeX} \todraw*(latex2ε)(pdflatex) \tonode[\vip](xelatex)(5,\layer){\XeLaTeX} \todraw*(latex2ε)(xelatex) \tonode(platex)(-4.6,\layer){p\LaTeX} \todraw(latex2ε)(platex) \tonode(lualatex)(-1.8,\layer){Lua\LaTeX} \todraw(latex2ε)(lualatex) \steplayer[-2] \tonode[\experimental](latex25)(0,\layer){\LaTeX2.5} \todraw(latex2ε)(latex25) \steplayer[-3] \tonode[\experimental](latex3)(0,\layer){\LaTeX{}3} \todraw(latex25)(latex3) } %%% CONTEXT %%% \clearpage \tograph*(\tostruct[\ConTeXt]{\ConTeXt: con\,tex\,t – text with tex}){ \tonode(pragmatex)(0,\layer){pragmatex} \steplayer[-2] \tonode(mki)(0,\layer){\ConTeXt MkI} \todraw(mki)(pragmatex) \steplayer[-2] \tonode[\vip](mkii)(0,\layer){\ConTeXt MkII} \todraw(mki)(mkii) \steplayer[-2] \tonode(mkiii)(4,\layer){\ConTeXt\ MkIII} \todraw(mkii)(mkiii) \steplayer[-2] \tonode[\vip](mkiv)(0,\layer){\ConTeXt MkIV} \todraw*(mkii)(mkiv) } %% go on with the rare formats \clearpage %%%% formats %%%% \tostruct[Other Formats]{Other Formats} %%% YTeX %%% \tograph(\tostruct(1)[Y\TeX]{Y\TeX}[\experimental]){ \tonode(ytex)(0,0){Y\TeX} } %%% StarTeX %%% \tograph(\tostruct(1)[Star\TeX]{Star\TeX\ – Starter's \TeX}){ \tonode(startex)(0,0) instead of \ command>{Star\TeX} } %%% JadeTeX %%% \tograph(\tostruct(1)[Jade\TeX]{Jade\TeX}){ \tonode(jadetex)(0,0){Jade\TeX} } \clearpage \tostruct[Pandora's Box]{Pandora's Box} \parbox{\textwidth}{\normalsize The following pages will be a hodge-podge of many things that are related to \TeX\ and used in the process of generating documents in different file formats, i.\,e. conversion tools, bibliography tools etc. Feel free to contribute, I'll choose case-by-case if I'll add something or won't include it. Text editors or viewers will \emph{not} be included! } \tostruct(1)[Distributions]{Distributions}[\distro] \parbox{\textwidth}{\normalsize This section will feature the main distributions of \TeX\ and related programs. Of course, not every Linux Distribution's \TeX\ package can be listed here, but only official upstream distributions. } \ExplSyntaxOn \fp_gset:Nn\layerdist{-1.5} \ExplSyntaxOff \tograph(\tostruct(2)[\TeX live]{\TeX live}){ \tonode(web2c)(0,\layer){Web2c} \steplayer \tonode(emtex)(3,\layer){em\TeX} \todraw.(web2c)(emtex) \steplayer \tonode(tetex)(3,\layer){te\TeX} \tonode(4alltexcd)(-3,\layer){4All\TeX CD } \todraw.(web2c)(tetex) \todraw.(web2c)(4alltexcd) \steplayer \tonode(fptex)(3,\layer){fp\TeX} \todraw(fptex)(tetex) \steplayer[-2.5] \tonode(xemtex)(4,\layer){XEm\TeX} \todraw(xemtex)(fptex) \tonode(tlpre2008)(0,\layer){\TeX live 1996 – 2007} \todraw(tetex)(tlpre2008) \todraw(4alltexcd)(tlpre2008) \todraw.(web2c)(tlpre2008) \steplayer \tonode(tl2008)(0,\layer){\TeX live2008} \todraw.(tl2008)(tlpre2008) \tonode(gwtex)(5,\layer){gw\TeX} \todraw(tlpre2008)(gwtex) \steplayer \tonode(tl2009)(0,\layer){\TeX live2009} \todraw(tl2009)(tl2008) \steplayer \tonode(tl2010)(0,\layer){\TeX live2010} \todraw(tl2010)(tl2009) \tonode(tlcontrib)(-5,\layer){TLContrib} \todraw.(tl2010)(tlcontrib) \tonode(mactex)(5,\layer){Mac\TeX} \todraw(tl2010)(mactex) } \tograph(\tostruct(2)[Mik\TeX]{Mik\TeX}){ \tonode(mt)(0,\layer){Mik\TeX} \steplayer \tonode(mt26)(0,\layer){Mik\TeX\ 2.6} \todraw(mt)(mt26) \steplayer \tonode(mt27)(0,\layer){Mik\TeX\ 2.7} \todraw(mt27)(mt26) \steplayer \tonode(mt28)(0,\layer){Mik\TeX\ 2.8} \todraw(mt28)(mt27) \steplayer \tonode(mt29)(0,\layer){Mik\TeX\ 2.9} \todraw(mt29)(mt28) \steplayer \tonode(protext)(2,\layer){ProTeXt} \todraw(protext)(mt29) } \tograph(\tostruct(2)[\TeX\ collection]{\TeX\ collection}){ \tonode(texcollection)(0,\layer){\TeX\ Collection} } \tograph(\tostruct(2)[W32\TeX]{W32\TeX}){ \tonode(w32tex)(0,\layer){W32\TeX} } \tograph(\tostruct(2)[OzTeX]{OzTeX}){ \tonode(oztex)(0,\layer){Oz\TeX} } \tograph(\tostruct(2)[for Amiga]{for Amiga}){ \tonode(amigatex)(-2,\layer){Amiga-TeX} \tonode(pastex)(2,\layer){pasTeX} } \newpage %%% META* %%% \tograph(\tostruct(1)[META*]{META*}[\program]){ \tonode(metafont)(0,\layer){METAFONT} \steplayer \tonode(metafog)(3,\layer){Metafog} \todraw(metafog)(metafont) \tonode(metatype1)(-3,\layer){MetaType1} \todraw(metatype1)(metafont) \tonode(metapost)(0,\layer){MetaPost} \todraw(metapost)(metafont) \steplayer \tonode(metafun)(0,\layer)<"MetaFun is Hans Hagen's extension to (or module for) the MetaPost language.">{MetaFun} \todraw(metafun)(metapost) } %%% BIBTEX %%% \tograph(\tostruct(1)[Bib\TeX]{Bib\TeX}){ \tonode(bibtex)(0,0){\BibTeX} \steplayer[-1] \tonode(nbibtex)(4,\layer)<"NbibTeX helps authors take better advantage of BibTeX data" says the homepage.>{NbibTeX} \todraw(nbibtex)(bibtex) \steplayer[-0.5] \tonode(bibtex8)(0,\layer){\BibTeX8} \todraw(bibtex8)(bibtex) \steplayer \tonode(bibtexu)(0,\layer){\BibTeX u} \todraw(bibtex8)(bibtexu) \tonode(pybtex)(3,\layer){Pybtex} \todraw(pybtex)(bibtexu) \steplayer \tonode(biber)(0,\layer){biber} \todraw(bibtexu)(biber) \tonode[\package](biblatex)(3,\layer){Bib\LaTeX} \todraw(biber)(biblatex) \todraw(bibtexu)(biblatex) \steplayer \tonode[\package](librarian)(5,\layer){Librarian} } %%% dvipdfm %%% \tograph(\tostruct(1)[{(x)dvipdf(m)(x)}]{(x)dvipdf(m)(x)}){ \tonode(dvipdf)(0,0){dvipdf} \steplayer \tonode(dvipdfm)(0,\layer){dvipdfm} \steplayer \tonode(dvipdfmx)(0,\layer){dvipdfmx} \todraw(dvipdfm)(dvipdfmx) \steplayer \tonode(xdvipdfmx)(0,\layer){xdvipdfmx} \todraw(dvipdfmx)(xdvipdfmx) } \tograph(\tostruct(1)[Font Technologies]{Font Techonolgies}[\fonttechnology] \parbox{\textwidth}{\large This section tries to cover the development of font technologies – the most important thing for a typesetting system is it's font mechanism …\\[4ex]} ){ \tonode(bitmap)(0,\layer){Bitmap fonts} \steplayer[-3] \tonode(type1)(-2,\layer){PostScript Type 1} \tonode(truetype)(2,\layer){TrueType} \tonode(freetype)(6,\layer){FreeType} \todraw(freetype)(truetype) \steplayer[-3] \tonode(gx)(6,\layer)<"Graphis eXtension". A font format only available for Mac OS.>{TrueType GX} \todraw(truetype)(gx) \steplayer[-3] \tonode(opentype)(-2,\layer){OpenType} \todraw(truetype)(opentype) \todraw(type1)(opentype) \tonode(aat)(6,\layer)<"Apple Advanced Typographie" fonts are succesors of the GX fonts. Only available for Mac OS, too.>{AAT} \todraw(aat)(gx) } \addtocontents{toc}{\newpage\vspace*{2.95cm}} %% indeed, this is ridiculous \topart{Text Views} \label{sec:text} \large \addtokomafont{section}{\huge} \addtokomafont{subsection}{\LARGE} \addtokomafont{subsubsection}{\Large} \newgeometry{margin=1.5cm,twocolumn} %% a bit more space for text views, but not too much … \settextviews %% these are generated automatically by the code above. \onecolumn \appendix \topart{Appendix} %% %% I've chosen to typeset the bibliography "by hand" for full control of formatting and behaviour. Also, I can choose my own syntax ☺ %% \tostruct{References} \label{sec:refs} \obeylines\flushleft %% to get rid of the still active centering The references are in order of occurance in the above document. i.\,e. if you want information about Lua\TeX, it will be below e.\,g. $\epsilon$\TeX. Everything that is not listet as ”book“ is freely available on the internet. \tobibsection{Books} \tobib{D.E. Knuth, D.~Bibby, and I.~Makai. \textit{The \TeX book}\\ Addison-Wesley Reading, MA, 1986.} \tobib{F.~Mittelbach, M.~Goossens, J.~Braams, D.~Carlisle, C.~Rowley, C.~Detig, and J.~Schrod. \textit{The \LaTeX\ companion.} \\ Addison-Wesley, 2004.} \tobibsection{Overview Articles} \tobib{Arthur Reutenauer. A Brief History of \TeX. Talk at EuroBacho\TeX\ 2007.}% \tobib{A Brief History of \LaTeX} \tobib{Short Article About Omega And Aleph} \tobib{Interviews with Will Robertson, Hans Hagen et.\,al.} \tobibsection{Archives} \tobib{CTAN – Comprehensive TeX Archive Network:} \tobib{Historic Archive of TeX Distributions:} \tobibsection{Engines} \tobib{ANT project page} \tobib{Yasuki S AITO. Report on JTEX: A Japanese TEX. TUGboat 8 (1987), no. 2, 103\,–\,116.}% \tobib{p\TeX\ sources and documentation} \tobib{enc\TeX\ page} \tobib{ML\TeX\ source (CH file)} \tobib{pdf\TeX\ project page} \tobib{\NTS\ project page} \tobib{V\TeX\ – official homepage of micropress-inc} \tobib{\XeTeX\ project page} \tobib{$\epsilon\chi$\TeX\ project page} \tobib{ee\TeX\ project page} \tobib{Lua\TeX\ project page} \tobib{i\TeX\ announcement by Don Knuth at the TUG 2010} \tobibsection{Formats} \tobib{\ConTeXt\ wiki} \tobib{\LaTeX\ project page} \tobib{\LaTeX3 project} \tobib{A\LaTeX: Discussion in TUGboat Vol. 16 (1995), No. 3, p. 269ff.} \tobib{Y\TeX\ on CTAN} \tobib{Jade\TeX\ project page} \tobib{Star\TeX\ on CTAN} \tobibsection{Distributions} \tobib{fp\TeX: Announcment at TUG 1999} \tobib{\TeX live development history} \tobib{gw\TeX\ project page} \tobib{Brief History of gwTeX} \tobib{TLContrib project page} \tobib{Mac\TeX\ project page} \tobib{MikTeX project page} \tobib{Pro\TeX t project page} \tobib{\TeX Collection page} \tobib{Win32 project page} \tobib{Oz\TeX\ project page} \tobib{\TeX\ on Amiga} \tobibsection{Fonts} \tobib{Type1 Fonts specifications} \tobib{The FreeType project} \tobib{OpenType specifications} \tobibsection{Everything Else} \tobib{dvipdfmx project page} \clearpage \section{List of Contributors} I have to thank some people for helping me to improve this document. Of course I thank all the people provinding the above-mentioned references. \begin{itemize} \item Paul Isambert, for usefull discussions and testing \item Heiko Oberdiek, for solving a bug that broke the document with Acrobat Reader \end{itemize} \end{document}