├── tex-overview-aux.tex ├── tex-overview.pdf └── tex-overview.tex /tex-overview-aux.tex: -------------------------------------------------------------------------------- 1 | %% This document is part of the document tex-overview and should not be distributed without it. This file contains the formatting and definitions for typesetting. Please do *not* consider anything here as an example of good TeX coding style – it's not. 2 | %% author: Arno Trautmann 3 | 4 | % !TeX root = tex-overview.tex 5 | %% (for the TeXworks-users.) 6 | \documentclass{scrartcl} 7 | \usepackage[svgnames]{xcolor} 8 | 9 | \usepackage{ 10 | array, 11 | bookmark, 12 | booktabs, 13 | colortbl, 14 | fontspec, 15 | geometry, 16 | hyperref, 17 | longtable, 18 | luacode, 19 | metalogo, 20 | multicol, 21 | microtype, 22 | % pdftexcmds, 23 | tabu, 24 | tikz, 25 | xparse 26 | } 27 | %% copied definitions from old dtklogos, which are no longer supported: 28 | \makeatletter 29 | \providecommand\NTS{\mbox{\mathsurround=0pt 30 | \(\cal N\mkern -4mu\lower .5ex\hbox{$\cal T$}\mkern -2mu S\)}} 31 | \providecommand\AMS{{\normalfont\(\cal A\)\kern-.1667em\lower.5ex\hbox{\(\cal M\)}\kern-.125em{\(\cal S\)}}} 32 | \providecommand\LamSTeX{% 33 | L\raise.42ex\hbox{\kern-.3em\the\scriptfont2 A}% 34 | \kern-.2em\lower.376ex\hbox{\the\textfont2 M}% 35 | \kern-.125em {\the\textfont2 S}-\TeX} 36 | \DeclareRobustCommand{\BibTeX}{B\kern-.05em% 37 | \hbox{$\m@th$% %% force math size calculations 38 | \csname S@\f@size\endcsname 39 | \fontsize\sf@size\z@ 40 | \math@fontsfalse\selectfont 41 | I\kern-.025emB}% 42 | \kern-.08em% 43 | \-\TeX} 44 | 45 | \newcommand*{\noaddvspace}{\renewcommand*{\addvspace}[1]{}} 46 | \addtocontents{toc}{\protect\noaddvspace} 47 | 48 | \renewcommand*{\addparttocentry}[2]{% 49 | \addtocentrydefault{part}{#1}{\Large #2 \normalsize} 50 | } 51 | 52 | \microtypesetup{stretch=35} %% allow for a bit more expansion to improve typesetting of the columns. 53 | \frenchspacing 54 | 55 | %% define the look-and-feel of the document 56 | \setmainfont{TeX Gyre Pagella} 57 | \setsansfont{TeX Gyre Pagella} 58 | 59 | %% setup the style of hyperlinks. 60 | \hypersetup{ 61 | unicode=true, 62 | colorlinks=true, 63 | linkcolor=DarkRed, 64 | urlcolor=blue 65 | } 66 | \hyperbaseurl{.} 67 | 68 | %% page layout, headings 69 | \pagestyle{empty} 70 | \addtokomafont{disposition}{\color[rgb]{0 0 .7}} 71 | \addtokomafont{section}{\Huge} 72 | \addtokomafont{subsection}{\LARGE} 73 | \addtokomafont{subsubsection}{\Large} 74 | 75 | \ExplSyntaxOn 76 | %% some missing definitions for \TeX-like things 77 | \tl_set:Nn\XeT{X\kern -.1667em\lower .5ex\hbox {E}\kern -.125emT\@} 78 | \tl_set:Nn\ConTeXt{Con\TeX{}t} 79 | 80 | %% constants for the colors. Might change from time to time … 81 | \tl_set:Nn\vip{red} 82 | \tl_set:Nn\normalimportant{blue} 83 | \tl_set:Nn\experimental{yellow} 84 | \tl_set:Nn\planned{LightSkyBlue} 85 | \tl_set:Nn\fonttechnology{pink} 86 | \tl_set:Nn\program{black} 87 | \tl_set:Nn\package{green} 88 | \tl_set:Nn\distro{orange} 89 | \tl_set:Nn\histdistro{purple} 90 | \tl_set:Nn\annotation{black} 91 | 92 | %% shorthand to keep a good structure of the node positions 93 | \fp_new:N\layer_num 94 | \fp_new:N\layerdist_num 95 | \fp_set:Nn\layer_num{0} 96 | \fp_set:Nn\layerdist_num{-1} 97 | 98 | \cs_new:Npn\layer{\fp_use:N\layer_num} 99 | 100 | %% width of the tooltip-boxes (negative value to make them disappear at all) 101 | \dim_set:Nn\fboxrule{-1mm} 102 | 103 | %% to separate important from not-so-important nodes 104 | \bool_new:N\to_short 105 | 106 | %% the token list to save all the textviews. When set once, it is reset. May be useful anyhow. Or not. 107 | \tl_set:Nn\to_textviews{} 108 | \NewDocumentCommand\settextviews{}{ 109 | \setcounter{section}{4} %% to enable equal section numbers for both text and tree views 110 | \to_textviews 111 | \tl_set:Nn\to_textviews{} 112 | } 113 | \cs_set:Npn\addtotextviews:n#1{\tl_gput_right:No\to_textviews{#1}} 114 | \cs_generate_variant:Nn \addtotextviews:n{f} 115 | 116 | %% environment to set the graphs 117 | \NewDocumentCommand\tograph{s+D(){}+m} 118 | { 119 | \IfBooleanT{#1}{ 120 | \ExplSyntaxOn 121 | \bool_gset_true:N\to_short 122 | \ExplSyntaxOff 123 | #2 124 | \begin{tikzpicture} 125 | #3 126 | \end{tikzpicture} 127 | \clearpage 128 | } 129 | \ExplSyntaxOn 130 | \bool_gset_false:N\to_short 131 | \ExplSyntaxOff 132 | #2 133 | \begin{tikzpicture} 134 | #3 135 | \end{tikzpicture} 136 | } 137 | 138 | %% Style of the nodes: shade from a light 139 | \tikzstyle{coolnode} = [ 140 | draw=\nodecolor!50!black!70, 141 | top~color=\nodecolor!10!white!105, 142 | bottom~color= \nodecolor!50!black!50 143 | ] 144 | 145 | %% set the first default node style (will change to \distro or \program in the document) 146 | \cs_set_eq:NN\tonodestyle\normalimportant 147 | 148 | %% tonode ⇒ tex-overview node, now with better argument specifier 149 | \NewDocumentCommand\tonode{O{\tonodestyle}D(){no label given}D(){no position given}D<>{no description given}m}{ 150 | 151 | %% test if we are in the short or full view 152 | \tl_gset:Nn\nodecolor{#1} 153 | \bool_if:NTF\to_short{ 154 | %% short view 155 | \tl_if_eq:NNT#1{\vip}{ %% then check if this is an important node 156 | \node[coolnode] (#2) at (#3) { 157 | \href{#4}{\color{black}#5\strut} 158 | }; 159 | } 160 | }{ 161 | %% long view 162 | \node[coolnode] (#2) at (#3) { 163 | \href{#4}{\color{black}#5\strut} 164 | }; 165 | %% and the text view, to be added only once! 166 | \addtotextviews:f{\subsubsection*{\color{blue}#5}\parbox{\columnwidth}{#4}} 167 | } 168 | } 169 | 170 | %% we want to make use of two pdf layers: the upper (main) one for the nodes 171 | %% and the lower (background) one for the lines. That way, the lines will not cross the nodes 172 | \pgfdeclarelayer{background} 173 | \pgfsetlayers{background,main} 174 | 175 | %% the command to draw from one node to the other one. Fine tuning is possible via optional argument #3 176 | \NewDocumentCommand{\todraw}{st{'}t{.}t{-}O{}d()d()}{ 177 | \begin{pgfonlayer}{background} 178 | %% draw in the case that: either a * is given (always draw) or (' is given and \to_short) or nothing is given 179 | \bool_if:nT{#1 || (#2 && \to_short) || !(#2 || \to_short)} 180 | {\draw [thick,gray,\IfBooleanT{#3}{dotted},\IfBooleanT{#4}{dashed},#5] (#6) to (#7);} %% I’m just loooving expl3! 181 | \end{pgfonlayer} 182 | } 183 | 184 | %% a nice way to control the vertical position of nodes 185 | \NewDocumentCommand{\setlayer}{m}{ 186 | \fp_set:Nn\layer_num{#1} 187 | } 188 | \NewDocumentCommand{\steplayer}{O{\layerdist_num}}{ 189 | \fp_add:Nn\layer_num{#1} 190 | } 191 | 192 | \NewDocumentCommand\topart{m}{ 193 | % \clearpage 194 | % \pdfpagewidth is not available in LuaTeX > 0.85. So we skip this gimmick, might come back later. 195 | %% \dim_set:Nn\pdfpagewidth{9cm} %% make a smaller paper so the header won’t feel so alone on the big, cold paper 196 | %% \dim_set:Nn\pdfpageheight{4cm} 197 | % \newgeometry{margin=1cm} 198 | \part{#1} 199 | \newpage 200 | % \restoregeometry 201 | %% \dim_set:Nn\pdfpagewidth{21cm} %% back to a4 202 | %% \dim_set:Nn\pdfpageheight{29.7cm} 203 | } 204 | 205 | %% the following code is made to avoid code doubling on cost of readability. Seems to be stable enough to work here. 206 | %% the first argument, given in (), determines the level (sub/sub/section) of the entry. 207 | % second argument: Short name of the struct for toc 208 | % third argument: Full name of the struct 209 | % forth argument: default node style for this struct. Default for the default is the default style. 210 | \NewDocumentCommand\tostruct{D(){0}omO{\tonodestyle}}{ 211 | \tl_set:Nn\to_disp{section} 212 | \int_compare:nT{#1 > 0}{\tl_put_left:Nn\to_disp{sub}} 213 | \int_compare:nT{#1 > 1}{\tl_put_left:Nn\to_disp{sub}} 214 | \bool_if:NTF\to_short 215 | { 216 | \int_compare:nT{#1 = 0}{\stepcounter{section}} 217 | \tl_gset:cn{\to_disp mand}{\cs:w the\to_disp\cs_end:.\hspace{.175em} #3\newline short~view} 218 | \IfNoValueTF{#2}{\tl_gset:cn{\to_disp opt}{\tl_use:c{\to_disp mand}}}{\tl_gset:cn{\to_disp opt}{~#2, short~view}} 219 | \cs:w \to_disp \cs_end:*{\cs:w\to_disp mand\cs_end:} 220 | \int_compare:nT{#1 = 0}{\addtocounter{section}{-1}} 221 | } 222 | { 223 | \tl_gset:cn{\to_disp mand}{#3} 224 | \IfNoValueTF{#2}{\tl_gset:cn{\to_disp opt}{\cs:w \to_disp mand\cs_end:}}{\tl_gset:cn{\to_disp opt}{~#2}} 225 | \addtotextviews:f{\cs:w \to_disp\cs_end:[~#2]{#3}} 226 | \cs:w \to_disp\cs_end:[\cs:w \to_disp opt\cs_end:]{\cs:w \to_disp mand\cs_end:} 227 | } 228 | \cs_gset_eq:NN\tonodestyle#4 229 | } 230 | 231 | %% the sectioning of the names table 232 | \NewDocumentCommand\totablesec{m}{ 233 | ~ \\[-2ex] 234 | \rowcolor[gray]{0.9}\hspace*{2em}\Large \strut \large\rmfamily #1 \\ 235 | ~ \\[-2ex] 236 | } 237 | 238 | %% a command for creation of bib-items. 239 | \NewDocumentCommand\tobibsection{m}{ 240 | \subsection*{#1} 241 | } 242 | \NewDocumentCommand\tobibsubsection{m}{ 243 | \subsection*{#1} 244 | } 245 | \NewDocumentCommand\tobib{mD<>{}O{}}{ 246 | \medskip 247 | \begin{minipage}{\textwidth} %% to prevent page breaks within bib-items 248 | \large #1\normalsize\\ \hspace*{1em} \parbox{.95\textwidth} 249 | {\url{#2} #3} 250 | \end{minipage} 251 | } 252 | 253 | \ExplSyntaxOff 254 | 255 | \AtBeginDocument{ 256 | { 257 | \centering 258 | \huge\bfseries An overview of \TeX, its children\\ 259 | and their friends~\dots 260 | \vspace*{-.2cm} 261 | \flushright\parbox{4cm}{ 262 | \large \color[rgb]{0 0 .7} Arno Trautmann\\ 263 | \fontsize{8.25}{10}\selectfont arno.trautmann@gmx.de 264 | } 265 | \hspace*{.7cm}\par 266 | } 267 | \vspace*{1cm} 268 | } 269 | 270 | %% ok, now something just for fun, but I wanted to use this in a "real life" document: 271 | % we first define some Lua functions for drawing and then use them to colorize the corners of the document. 272 | \begin{luacode} 273 | function pdf_print (...) 274 | for _, str in ipairs({...}) do 275 | pdf.print(str .. " ") 276 | end 277 | pdf.print("\string\n") 278 | end 279 | 280 | function move (p) 281 | pdf_print(p[1],p[2],"m") 282 | end 283 | 284 | function line (p) 285 | pdf_print(p[1],p[2],"l") 286 | end 287 | 288 | function curve(p1,p2,p3) 289 | pdf_print(p1[1], p1[2], 290 | p2[1], p2[2], 291 | p3[1], p3[2], "c") 292 | end 293 | 294 | function linewidth (w) 295 | pdf_print(w,"w") 296 | end 297 | 298 | function disturb_point(point,strength) 299 | if strength then else strength = 5 end 300 | return {point[1] + math.random()*2*strength - strength, 301 | point[2] + math.random()*2*strength - strength} 302 | end 303 | 304 | function sloppyline(start,stop) 305 | local start_line = disturb_point(start,10) 306 | local stop_line = disturb_point(stop,10) 307 | move(start) curve(start_line,stop_line,stop) 308 | pdf_print("S") -- stroke 309 | end 310 | \end{luacode} 311 | 312 | \AtBeginShipout{% 313 | \AtBeginShipoutUpperLeft{% 314 | \color[rgb]{0 0 .7} 315 | \luatexlatelua{ 316 | linewidth(40) 317 | sloppyline({-30,-30},{30,30}) 318 | sloppyline({620,-30},{560,30}) 319 | sloppyline({-30,-800},{30,-860}) 320 | sloppyline({620,-800},{560,-860}) 321 | } 322 | }% 323 | } 324 | -------------------------------------------------------------------------------- /tex-overview.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alt/tex-overview/e69f4319cd6601e7353cc470cff8eabf64c14813/tex-overview.pdf -------------------------------------------------------------------------------- /tex-overview.tex: -------------------------------------------------------------------------------- 1 | %% Engine needed: LuaTeX ≥ 1.12.0 2 | %% Format needed: LaTeX2ε 3 | %% use an up-to-date TeX Live2020 to be sure 4 | 5 | % this document has version number 0.2-something-ish. 6 | \input{tex-overview-aux} %% everything that is not content-related 7 | 8 | \begin{document} 9 | \savegeometry{normal} 10 | \begin{abstract} 11 | 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 very welcome!\footnote{The latest 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!} 12 | 13 | {\centering \Large \hyperref[textextview]{Link for the impatient.}\\[2ex]} 14 | \end{abstract} 15 | 16 | \section*{Introduction} 17 | This document is for people that have stumbled upon different software names including something related to \TeX\ and are confused by the many different terms – at least I was, so maybe others are, too … 18 | 19 | The base frame and main idea for this overview 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 documentation of the software and some review articles. For information of very old stuff, 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! 20 | 21 | 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! 22 | 23 | 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}. 24 | 25 | \setlength{\columnsep}{1.5cm} 26 | \newgeometry{bottom=3.5cm} 27 | \newgeometry{margin=1cm} 28 | \newpage 29 | \tableofcontents 30 | 31 | %\restoregeometry 32 | 33 | \section{The Difference Between Editor, Engine, Format, and Distribution} 34 | There are four kinds of terms that are often confused especially by new users. This will try to explain them very shortly: 35 | \begin{description} 36 | \item[editor] Typically, a user interfaces with any *\TeX\ via an editor as a front end. Although they might look fancy with a lot of graphical interfaces, an editor is just a program that allows the user to create and change a text file. This can be done with any program, but specialized editors offer additional features. It is important to keep in mind that an editor alone can \emph{not} convert a \verb|.tex| file into a pdf or any other output format, but always needs the programs as discussed below, most notably an engine that does all the work. This might often be hidden from the user's direct view by buttons which offer convenient ways to execute everything that is necessary. 37 | \item[engine] This is the program that does all the actual work. The original program is \TeX, the most famous derivative is pdf\TeX, while Lua\TeX\ is the latest successor. Normally,~a~user does not interface directly with the program, but uses an editor to parse a text file to it. 38 | \item[format] A format is a (large) collection of abbreviations (macros) that make the life easy when working with \TeX. The most commonly used formats are \LaTeX, Con\TeX t and plain\TeX. The latter one is a minimal set of macros provided by Don Knuth. Formats can be combined with different engines, exploiting the special abilities of these engines. A format is in the beginning a collection of text files, but can be compiled into a binary format that can be read much faster by the engine. 39 | \item[distribution] In addition to formats, a large set of supplementary files can be used to work with \TeX, called \emph{packages} for \LaTeX, \emph{modules} for Con\TeX t, and many external programs have proven useful for the work with \TeX. Distributions such as \TeX~Live and MiK\TeX\ strive to provide a full set of such programs and macros by using a package manager to take care of package dependencies and updating. Many Linux distributions, as well as cygwin for Windows, repackage a \TeX\ distribution (mostly \TeX~Live) using the Linux distribution's package system. 40 | \end{description} 41 | 42 | \newpage 43 | \section{How to read this document} 44 | This document consists of several graphs showing the development of software more or less directly related to \TeX. The graphs try to show the time development (downwards), as well as dependencies, changes, etc. 45 | 46 | I tried to make the graphs more readable by using colors for different categories. The decisions about what is important and what is “normal” reflect my personal opinion only. 47 | 48 | \begin{description} 49 | \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. 50 | 51 | \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. 52 | 53 | \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. 54 | 55 | \item[{\let\nodecolor\planned \tikz \node[coolnode]{planned};}] Things that are planned to raise one day and are in the phase of preparation, i.\,e. there may be some code but not in the final form yet. 56 | 57 | \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; just some that might elsewise be confused for something else. 58 | 59 | \item[{\let\nodecolor\distro \tikz \node[coolnode]{distribution};}] Software bundles that bring \TeX\ and friends to the normal user. 60 | 61 | \item[{\let\nodecolor\histdistro \tikz \node[coolnode]{hist. dist.};}] Historical distributions that have no use today but were important for bringing \TeX\ to older computer systems. 62 | 63 | \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 separate helper programs. 64 | 65 | \item[{\let\nodecolor\fonttechnology \tikz \node[coolnode]{font};}] Something related to a font. Neither a program nor libraries that provide access to fonts nor the actual files, but rather the abstract definition or specification. 66 | 67 | \end{description} 68 | 69 | Some of the graphs have quite many entries, which is the reason why there are two versions of them: A short one listing only the most important things and a full version with everything I could find. 70 | 71 | 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. 72 | 73 | \section{How to contribute} 74 | I hope one day this document would become the standard reference for questions like ”Which program do I need for~…?“, ”What's the difference between …\TeX\ and …\TeX?“, ”Why is it called …?“ etc. 75 | 76 | To get to this point, I need some help of people who know more about the \TeX\ world than I do. 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 or corrections to the content, let me know. 77 | 78 | \newpage 79 | \section{Problems with PDF viewers} 80 | This document shows additional information via tooltips. At least that's what it should do. Unfortunately, there is no unique way to get hover-over tooltips to work in all PDF viewers, but each of them has its own way to present the information. For now, the information are provided as a hyperlink which points nowhere meaningful. But most viewers can shows this information in a way the user can understand. 81 | 82 | The following list summarizes my experience with different PDF viewers, all but the Adobe Reader XI tested on an Arch Linux. Your experince might differ; if you have any annotations to this list, I'll happily add them – especially if the document breaks anything completely. 83 | 84 | \begin{description} 85 | \item[evince 3.20.0] Shows the document correctly and completely. 86 | 87 | \item[Adobe Reader 9] Shows the document correctly and completely, surprisingly. 88 | 89 | \item[Adobe Reader XI] Shows the document correctly and completely, surprisingly. (Tested on Windows 7) 90 | 91 | \item[\TeX works 0.6.1 r3614278] Shows the document completely, but the tooltips shows some characters at the beginning. Ignore those and it's fine. 92 | 93 | \item[okular 0.25.0] As \TeX works, but does not break the tooltips, therefore information is lost. 94 | 95 | \item[xpdf 3.04] Shows the tooltips only in the status bar, thus hiding most of the information in the graphs. 96 | 97 | \end{description} 98 | 99 | \subsection*{About this document} 100 | This document is typeset in the \TeX\ Gyre Pagella font using the Lua\LaTeXe\ format with \verb|expl3| and \verb|xpackages| based on Lua\TeX\ 0.\the\luatexversion.\luatexrevision. 101 | 102 | In case you wonder why the typesetting is so ugly, especially the margins: Those are chosen to be small so that much text fits on one page which in this case increases the overview. I do not expect anybody to ever print this document, therefore I ignore the need of margins. In the tooltips, you will not see any colons even if they would make sense – this is because a colon leads to an error and the tooltip will not be displayed. 103 | 104 | \addtocontents{toc}{\string\vspace{.2cm}} 105 | \addtocontents{toc}{\string\begin{multicols}{2}} 106 | 107 | \clearpage 108 | \topart{Tree Views} 109 | \newgeometry{margin=1cm} %% to save space; no need for margins if only a tree is shown 110 | 111 | \label{sec:tree} 112 | \Large 113 | \centering 114 | 115 | %%% TEX %%% 116 | \label{textextview} 117 | \tograph*({\tostruct[\TeX]{\TeX\ – the program}}){ 118 | \setlayer0 119 | \tonode[\vip](tex)(7,\layer){\TeX} 120 | 121 | \tonode[\program](ant)(13,\layer){ANT} 122 | \todraw[dotted](tex)(ant) 123 | 124 | \tonode[\program](hex)(0,\layer){HeX} 125 | \todraw[dotted](tex)(hex) 126 | 127 | \steplayer[-1.5] 128 | \tonode(tex-xet)(4,\layer){\TeX-\XeT} 129 | \todraw(tex)(tex-xet) 130 | 131 | \tonode(nihongo)(10,\layer){Nihongo \TeX} 132 | \todraw(tex)(nihongo) 133 | 134 | \tonode(jtex)(15,\layer){j\TeX} 135 | \todraw(tex)(jtex) 136 | 137 | \steplayer[-1.5] 138 | 139 | \tonode(tex--xet)(4,\layer){\TeX-{}-\XeT} 140 | \todraw(tex-xet)(tex--xet) 141 | 142 | \tonode[\vip](tex3)(7,\layer){\TeX3} 143 | \todraw*(tex)(tex3) 144 | 145 | \steplayer[-1.5] 146 | 147 | \tonode(ptex)(12,\layer){p\TeX} 148 | \todraw(nihongo)(ptex) 149 | \todraw(tex3)(ptex) 150 | 151 | \steplayer[-1] 152 | 153 | \tonode(enctex)(5.9,\layer){enc\TeX} 154 | \todraw(tex3)(enctex) 155 | 156 | \tonode(mltex)(8,\layer){ML\TeX} 157 | \todraw(tex3)(mltex) 158 | \steplayer[-.5] 159 | 160 | \tonode[\experimental](uptex)(14,\layer){up\TeX} 161 | \todraw(ptex)(uptex) 162 | \steplayer[-1.5] 163 | 164 | \tonode[\experimental](omega)(1,\layer){$\Omega$} 165 | \todraw(tex3)(omega) 166 | 167 | \tonode[\vip](etex)(4,\layer){$\varepsilon$-\TeX} 168 | \todraw(tex--xet)(etex) 169 | \todraw'(tex3)(etex) 170 | 171 | \tonode(tex2pdf)(7,\layer){\TeX2PDF} 172 | \todraw(enctex)(tex2pdf) 173 | \todraw(mltex)(tex2pdf) 174 | 175 | \tonode(nts)(12,\layer){\NTS} 176 | \todraw(tex3)(nts) 177 | 178 | \steplayer[-1] 179 | 180 | \tonode(texgx)(10,\layer)<“GX” stands for Graphic eXtension, a font technology available only on Mac OS. TeXGX was able to handle these fonts.>{\TeX{}gX} 181 | \todraw(tex3)(texgx) 182 | 183 | \steplayer[-1] 184 | 185 | \tonode[\experimental](omega2)(0,\layer){$\Omega_2$} 186 | \todraw(omega)(omega2) 187 | 188 | \steplayer[-0.5] 189 | 190 | \tonode[\experimental](vtex)(3.6,\layer){V\TeX} 191 | \todraw(etex)(vtex) 192 | 193 | \steplayer[-0.5] 194 | 195 | \tonode(eptex)(13.7,\layer){ε-p\TeX} 196 | \todraw(ptex)(eptex) 197 | \todraw(etex)(eptex) 198 | 199 | \steplayer[-1.5] 200 | 201 | \tonode(euptex)(15.2,\layer){ε-up\TeX} 202 | 203 | \todraw(etex)(euptex) 204 | \todraw(uptex)(euptex) 205 | 206 | \tonode(aleph)(1,\layer){$\aleph$ (Aleph)} 207 | \todraw(omega)(aleph) 208 | \todraw(etex)(aleph) 209 | 210 | \tonode[\vip](pdftex)(7,\layer){pdf\TeX} 211 | \todraw(tex2pdf)(pdftex) 212 | \todraw'(tex3)(pdftex) 213 | 214 | \steplayer[-1] 215 | 216 | \tonode[\experimental](extex)(12,\layer){$\epsilon\chi$\TeX} 217 | \todraw(nts)(extex) 218 | \todraw(omega)(extex) 219 | \todraw(etex)(extex) 220 | \todraw(pdftex)(extex) 221 | 222 | \steplayer[-1] 223 | 224 | \tonode[\vip](pdfetex)(6,\layer){pdf($\epsilon$)-\TeX} 225 | \todraw*(etex)(pdfetex) 226 | \todraw*(pdftex)(pdfetex) 227 | 228 | \tonode[\vip](XeTeX)(10,\layer){\XeTeX} 229 | \todraw(texgx)(XeTeX) 230 | \todraw*(etex)(XeTeX) 231 | \todraw'(pdfetex)(XeTeX) 232 | 233 | \steplayer[-1.5] 234 | 235 | \tonode[\experimental](eetex)(8,\layer){ee\TeX} 236 | \todraw(pdfetex)(eetex) 237 | 238 | \steplayer[-0.5] 239 | 240 | \tonode[\program](lua)(0,\layer){Lua} 241 | 242 | \tonode[\vip](luatex)(4,\layer){Lua\TeX} 243 | \todraw(aleph)(luatex) 244 | \todraw*(pdfetex)(luatex) 245 | \todraw[dashed](lua)(luatex) 246 | \steplayer[-1] 247 | 248 | \tonode[\experimental](harftex)(10,\layer)<"HarfTeX is a TeX engine based on LuaTeX, extending it with HarfBuzz, ICU and possibly other libraries for Unicode text layout and modern fonts support." according to TUG Development Fund Grant 32. Superseeded by LuaHBTeX)>{Harf\TeX} 249 | \todraw(harftex)(luatex) 250 | 251 | \steplayer[-1.5] 252 | \tonode[\program](luajit)(0,\layer){LuaJIT} 253 | \todraw(lua)(luajit) 254 | 255 | \tonode[\experimental](luajittex)(6,\layer){LuaJIT\TeX} 256 | \todraw(luajittex)(luatex) 257 | \todraw[dashed](luajit)(luajittex) 258 | 259 | \tonode[\vip](luahbtex)(10,\layer){LuaHB\TeX} 260 | \todraw*(luahbtex)(luatex) 261 | \todraw(harftex)(luahbtex) 262 | 263 | \steplayer[-1.5] 264 | \tonode[\experimental](luajithbtex)(9,\layer){LuajitHB\TeX} 265 | \todraw(luajithbtex)(luahbtex) 266 | \todraw(luajithbtex)(luajittex) 267 | 268 | \tonode[\experimental](luametatex)(4,\layer){LuaMETA\TeX} 269 | \todraw(luametatex)(luatex) 270 | 271 | \steplayer[-2.5] 272 | \tonode[\experimental](itex)(7,\layer){i\TeX} 273 | } 274 | \vfill 275 | 276 | {\flushleft The chronological order may not be exact in this graph. I had to work hard on the arrangement to show both chronological order and code dependence, and for now only the code dependence is (hopefully) correct. 277 | 278 | } 279 | 280 | \clearpage 281 | 282 | %%% TeX, iniTeX, virTeX %%% 283 | 284 | \tograph(\tostruct[ini\TeX\ et al.]{ini\TeX, Vir\TeX, et al.}){ 285 | \tonode(initex)(-3,\layer){ini\TeX} 286 | 287 | \tonode(virtex)(0,\layer){Vir\TeX} 288 | 289 | \tonode(tex)(3,\layer){\TeX} 290 | 291 | \todraw(initex)(tex) 292 | \todraw(tex)(virtex) 293 | 294 | \steplayer[-2] 295 | 296 | \tonode(inimf)(-4,\layer){iniMETAFONT} 297 | 298 | \tonode(virmf)(0,\layer){VirMETAFONT} 299 | 300 | \tonode(mf)(4,\layer){METAFONT} 301 | 302 | \todraw(inimf)(mf) 303 | \todraw(mf)(virmf) 304 | 305 | } 306 | 307 | {\flushleft All other engines have the same functionality, but no special names given: |luatex --ini| is the INITEX version of Lua\TeX\ etc. 308 | 309 | } 310 | 311 | %%% plain TeX %%% 312 | \tograph(\tostruct[plain\TeX]{plain\TeX\ – the first format}){ 313 | \tonode(plaintex)(0,\layer){plain\TeX} 314 | \steplayer[-2] 315 | 316 | \tonode[\experimental](ecplain)(-2,\layer){ec-plain} 317 | \tonode[\experimental](csplain)(2,\layer){csplain} 318 | \todraw(plaintex)(ecplain) 319 | \todraw(plaintex)(csplain) 320 | 321 | \steplayer[-2] 322 | \tonode[\experimental](eplain)(0,\layer){Eplain} 323 | \todraw(plaintex)(eplain) 324 | } 325 | \clearpage 326 | 327 | %%% LATEX %%% 328 | \tograph*(\tostruct[\LaTeX]{\LaTeX\ – Lamport's \TeX\ format}){ 329 | 330 | \tonode(latex090)(-5.5,\layer){\LaTeX\ 0.90} 331 | 332 | \tonode(latex091)(-2,\layer){\LaTeX\ 0.91} 333 | \todraw(latex090)(latex091) 334 | 335 | \tonode(latex092)(2,\layer){\LaTeX\ 0.92} 336 | \todraw(latex091)(latex092) 337 | 338 | \tonode(latex09210)(6,\layer){\LaTeX\ 0.92 - 1.0} 339 | \todraw(latex092)(latex09210) 340 | \steplayer[-2.3] 341 | 342 | \tonode(latex2010)(-5,\layer){\LaTeX\ 2.0 - 1.0} 343 | \todraw(latex09210.south)(latex2010.north) 344 | 345 | \tonode(latex205)(0,\layer){\LaTeX\ 2.05} 346 | \todraw(latex2010)(latex205) 347 | 348 | \tonode(latex206a)(5,\layer){\LaTeX\ 2.06a} 349 | \todraw(latex205)(latex206a) 350 | 351 | \steplayer[-2.5] 352 | \tonode[\vip](latex209)(0,\layer){\LaTeX\ 2.09} 353 | \todraw(latex206a)(latex209) 354 | 355 | \steplayer[-2] 356 | \tonode(slitex)(2,\layer){SLI\TeX} 357 | \todraw(latex209)(slitex) 358 | 359 | \tonode(amslatex11)(6,\layer){\AMS\LaTeX\ 1.1} 360 | \todraw(latex209)(amslatex11) 361 | 362 | \steplayer[-1.7] 363 | \tonode[\vip](latex2ε)(0,\layer){\LaTeX\,2\raisebox{-.5ex}ε} 364 | \todraw*(latex209)(latex2ε) 365 | \todraw[dashed](slitex)(latex2ε) 366 | \todraw[dashed](amslatex11)(latex2ε) 367 | 368 | \tonode[\experimental](lambda)(-7.5,\layer){$\Lambda$} 369 | \todraw(latex209)(lambda) 370 | \steplayer[-1.5] 371 | 372 | \tonode[\experimental](lamed)(-7.5,\layer){Lamed} 373 | \todraw(lambda)(lamed) 374 | 375 | \steplayer[+1] 376 | \tonode(amslatex12)(6,\layer){\AMS\LaTeX 1.2} 377 | \tonode[\experimental](alatex)(-4.2,\layer){A\LaTeX} 378 | \todraw(amslatex11)(amslatex12) 379 | \todraw(latex2ε)(amslatex12) 380 | \todraw(latex2ε)(alatex) 381 | \steplayer[-1.5] 382 | 383 | \tonode(amslatex21)(8,\layer){\AMS\LaTeX 2.2} 384 | \todraw(amslatex12)(amslatex21) 385 | \steplayer[-1.5] 386 | 387 | \tonode(platex)(-4.6,\layer){p\LaTeX} 388 | \todraw(latex2ε)(platex) 389 | 390 | \steplayer[-1.5] 391 | 392 | \tonode[\package](expl3)(1.5,\layer){expl3} 393 | 394 | \tonode[\package](xpackages)(4.5,\layer){xpackages} 395 | \steplayer[-1.5] 396 | 397 | \tonode[\planned](latex2x)(0,\layer){\LaTeX2x} 398 | \todraw(latex2x)(latex2ε) 399 | \todraw(latex2x)(expl3) 400 | \todraw(latex2x)(xpackages) 401 | \steplayer[-2] 402 | 403 | \tonode[\planned](latex22)(0,\layer){\LaTeX2.2} 404 | \todraw(latex2x)(latex22) 405 | \steplayer[-2] 406 | 407 | \tonode[\planned](latex25)(0,\layer){\LaTeX2.5} 408 | \todraw(latex22)(latex25) 409 | 410 | \steplayer[-3] 411 | \tonode[\planned](latex3)(0,\layer){\LaTeX{}3} 412 | \todraw(latex25)(latex3) 413 | 414 | \steplayer[-3] 415 | \tonode[\experimental](timeslatex)(-5,\layer){times\LaTeX} 416 | } 417 | 418 | %%% CONTEXT %%% 419 | \clearpage 420 | \tograph*(\tostruct[\ConTeXt]{\ConTeXt: con\,tex\,t – text with tex}){ 421 | \tonode(inrstex)(-3,\layer)<“Extended Plain TeX for use with MLTeX.”>{INRS\TeX} 422 | \steplayer[-2] 423 | 424 | \tonode(pragmatex)(0,\layer){pragmatex} 425 | \todraw(inrstex)(pragmatex) 426 | \steplayer[-2] 427 | 428 | \tonode(MKi)(0,\layer){\ConTeXt\ MKI} 429 | \todraw(MKi)(pragmatex) 430 | \steplayer[-2] 431 | 432 | \tonode[\vip](MKii)(0,\layer){\ConTeXt\ MKII} 433 | \todraw(MKi)(MKii) 434 | \steplayer[-2] 435 | 436 | \tonode[\vip](MKiv)(0,\layer){\ConTeXt\ MKIV} 437 | \todraw*(MKii)(MKiv) 438 | \steplayer[-2] 439 | 440 | \tonode[\experimental](LMTX)(-2,\layer){\ConTeXt\ LMTX} 441 | \todraw(MKiv)(LMTX) 442 | \steplayer[-2] 443 | 444 | \tonode[\experimental](MKvi)(2,\layer){\ConTeXt\ MKVI} 445 | \todraw(MKiv)(MKvi) 446 | 447 | \tonode[\experimental](MKix)(2,\layer){\ConTeXt\ MKIX} 448 | \todraw(MKiv)(MKix) 449 | 450 | \tonode[\experimental](MKxi)(2,\layer){\ConTeXt\ MKXI} 451 | \todraw(MKiv)(MKxi) 452 | } 453 | 454 | %% go on with the rare formats 455 | \clearpage 456 | %%%% formats %%%% 457 | \tostruct[Other Formats]{Other Formats} 458 | %%% AMSTeX %%% 459 | \tograph(\tostruct(1)[\texorpdfstring{ 460 | AMS}{AMS}-\TeX]{AMS-\TeX}){ 461 | \tonode(amstex20)(0,\layer){\AMS-\TeX 2.0} 462 | \steplayer[-1] 463 | 464 | \tonode(lamstex)(5,\layer)<“LamSTeX{} is an extension of AmSTeX, and thus almost completely compatible with plain TeX”, as the documentation says. See references for details.>{\LamSTeX 2.0} 465 | \todraw(amstex20)(lamstex) 466 | \steplayer[-1] 467 | 468 | \tonode(amstex21)(0,\layer){\AMS-\TeX 2.1} 469 | 470 | \todraw(amstex20)(amstex21) 471 | \steplayer[-2] 472 | 473 | \tonode(amstex22)(0,\layer)< Latest version is 2.2 from 2001.>{\AMS-\TeX 2.2} 474 | \todraw(amstex21)(amstex22) 475 | } 476 | 477 | %%% BLUe' Format %%% 478 | \tograph(\tostruct(1)[BLUe]{BLUe}){ 479 | \tonode(blue)(0,0){BLUe} 480 | } 481 | 482 | %%% HP TeX %%% 483 | \tograph(\tostruct(1)[HP\TeX]{HP\TeX}){ 484 | \tonode(hptex)(0,0){HP \TeX} 485 | } 486 | 487 | %%% JadeTeX %%% 488 | \tograph(\tostruct(1)[Jade\TeX]{Jade\TeX}){ 489 | \tonode(jadetex)(0,0){Jade\TeX} 490 | } 491 | 492 | %%% Lollipop %%% 493 | \tograph(\tostruct(1)[Lollipop]{Lollipop}){ 494 | \tonode(lollipop09)(0,0){Lollipop 0.9} 495 | \steplayer[-2] 496 | \tonode(lollipop095)(0,\layer){Lollipop 0.95} 497 | \todraw(lollipop09)(lollipop095) 498 | \steplayer[-2] 499 | \tonode(lollipop098)(0,\layer){Lollipop 0.98} 500 | \todraw(lollipop098)(lollipop095) 501 | } 502 | 503 | %%% MacroTeX %%% 504 | \tograph(\tostruct(1)[Macro\TeX]{Macro\TeX}){ 505 | \tonode(macrotex)(0,0){Macro\TeX} 506 | } 507 | 508 | %%% MEX %%% 509 | \tograph(\tostruct(1)[MeX]{MeX}){ 510 | \tonode(mex)(0,0){MeX} 511 | } 512 | 513 | %%% OpTeX %%% 514 | \tograph(\tostruct(1)[OpTeX]{OpTeX}){ 515 | \tonode(mex)(0,0){OpTeX} 516 | } 517 | 518 | %%% PHYS(E) %%% 519 | \tograph(\tostruct(1)[PHYS(E)]{PHYS(E)}){ 520 | \tonode(physe)(0,0){PHYS(E)} 522 | } 523 | 524 | %%% PHYZZX %%% 525 | \tograph(\tostruct(1)[PHYZZX]{PHYZZX}){ 526 | \tonode(phyzzx)(0,0){PHYZZX} 527 | } 528 | 529 | %%% StarTeX %%% 530 | \tograph(\tostruct(1)[Star\TeX]{Star\TeX\ – Starter's \TeX}){ 531 | \tonode(startex)(0,0) instead of \ command>{Star\TeX} 532 | } 533 | 534 | %%% Texinfo %%% 535 | \tograph(\tostruct(1)[Texinfo]{Texinfo}[\normalimportant]){ 536 | \tonode(texinfo)(0,0){Texinfo} 537 | } 538 | 539 | %%% TeXsis %%% 540 | \tograph(\tostruct(1)[TeXsis]{\TeX sis}[\normalimportant]){ 541 | \tonode(texsis)(0,0){\TeX sis} 542 | } 543 | 544 | %%% XMLTeX %%% 545 | \tograph(\tostruct(1)[XML\TeX]{XML\TeX}){ 546 | \tonode(xmltex)(0,\layer){XML\TeX} 547 | } 548 | 549 | %%% YTeX %%% 550 | \tograph(\tostruct(1)[Y\TeX]{Y\TeX}[\experimental]){ 551 | \tonode(ytex)(0,0){Y\TeX} 552 | } 553 | 554 | %%% ZzTeX %%% 555 | \tograph(\tostruct(1)[Zz\TeX]{Zz\TeX}[\normalimportant]){ 556 | \tonode(zztex)(0,0)<“a macro package for producing books, jour- 557 | nals, and technical documentation”, named “after a rock group from Texas.” The author Paul C. Anagnostopoulos found LaTeX too unflexible. Appeared around 1992. 558 | >{Zz\TeX} 559 | } 560 | 561 | \clearpage 562 | 563 | \tostruct[Distributions]{Distributions}[\distro] 564 | \parbox{\textwidth}{\normalsize 565 | 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. 566 | } 567 | 568 | \ExplSyntaxOn 569 | \fp_gset:Nn\layerdist_num{-1.5} 570 | \ExplSyntaxOff 571 | 572 | \tograph(\tostruct(1)[\TeX\ Live]{\TeX\ Live}){ 573 | \tonode(web2c)(0,\layer){Web2C} 574 | \steplayer 575 | %% PCTeX? (Breitenloher) [need more information] 576 | %% True TeX (MS DOS) [need more information] 577 | 578 | \tonode[\histdistro](emtex)(3,\layer){em\TeX} %% d-latex, latex … (trennmuster) 579 | \todraw.(web2c)(emtex) 580 | \steplayer 581 | 582 | \tonode[\histdistro](tetex)(3,\layer){te\TeX} 583 | \tonode[\histdistro](4alltexcd)(-3,\layer){4All\TeX CD } 584 | \todraw.(web2c)(tetex) 585 | \todraw.(web2c)(4alltexcd) 586 | \steplayer[-1.5] 587 | 588 | \tonode(fptex)(3,\layer){fp\TeX} 589 | \todraw(fptex)(tetex) 590 | 591 | \tonode(gnutex)(6.5,\layer){GNU\TeX\ 0.x} 592 | \todraw(gnutex)(tetex) 593 | 594 | \steplayer[-1.5] 595 | 596 | \tonode[\histdistro](xemtex)(4.5,\layer){XEm\TeX} 597 | \todraw(xemtex)(fptex) 598 | 599 | \steplayer[-0.5] 600 | 601 | \tonode[\histdistro](tlpre2008)(0,\layer){\TeX\ Live 1996\,–\,2007} 602 | \todraw(tetex)(tlpre2008) 603 | \todraw(4alltexcd)(tlpre2008) 604 | \todraw.(web2c)(tlpre2008) 605 | \steplayer 606 | 607 | \tonode(tl2008)(0,\layer){\TeX\ Live 2008} 608 | \todraw.(tl2008)(tlpre2008) 609 | 610 | \tonode[\histdistro](gwtex)(5,\layer){gw\TeX} 611 | \todraw(tlpre2008)(gwtex) 612 | 613 | \steplayer 614 | 615 | \tonode(tl2009)(0,\layer){\TeX\ Live 2009} 616 | \todraw(tl2009)(tl2008) 617 | \steplayer 618 | 619 | \tonode(tl2010)(0,\layer){\TeX\ Live 2010} 620 | \todraw(tl2010)(tl2009) 621 | 622 | 623 | \tonode(tlcontrib)(-5,\layer){TLContrib} 624 | \todraw.(tl2010)(tlcontrib) 625 | \steplayer 626 | 627 | \tonode(tl2011)(0,\layer)<2011 release of TeX Live.>{\TeX~Live 2011} 628 | \todraw(tl2011)(tl2010) 629 | \todraw.(tl2011)(tlcontrib) 630 | 631 | \steplayer 632 | 633 | \tonode(tl2012)(0,\layer){\TeX~Live 2012} 634 | \todraw(tl2012)(tl2011) 635 | \todraw.(tl2012)(tlcontrib) 636 | 637 | \tonode(texportal)(-4,\layer){\TeX Portal} 638 | \todraw(tl2012)(texportal) 639 | 640 | \steplayer 641 | 642 | \tonode(tl20132020)(0,\layer){\TeX~Live 2013\,–\,2020} 643 | \todraw(tl2012)(tl20132020) 644 | 645 | \tonode(mactex)(5,\layer){Mac\TeX} 646 | \todraw(tl20132020)(mactex) 647 | 648 | \tonode(basictex)(8,\layer)<“BasicTeX is a subset of TeX Live of size 100 megabytes instead of 2 gigabytes.”>{Basic\TeX} 649 | \todraw(mactex)(basictex) 650 | } 651 | 652 | \tograph(\tostruct(1)[MiK\TeX]{MiK\TeX}){ 653 | \tonode(mt)(0,\layer){MiK\TeX} 654 | \steplayer 655 | 656 | \tonode(mt26)(0,\layer){MiK\TeX\ 2.6} 657 | \todraw(mt)(mt26) 658 | \steplayer 659 | 660 | \tonode(mt27)(0,\layer){MiK\TeX\ 2.7} 661 | \todraw(mt27)(mt26) 662 | \steplayer 663 | 664 | \tonode(mt28)(0,\layer){MiK\TeX\ 2.8} 665 | \todraw(mt28)(mt27) 666 | \steplayer 667 | 668 | \tonode(mt29)(0,\layer){MiK\TeX\ 2.9} 669 | \todraw(mt29)(mt28) 670 | \steplayer 671 | 672 | \tonode(protext)(3,\layer){ProTeXt} 673 | \todraw(protext)(mt29) 674 | 675 | \steplayer[-0.5] 676 | 677 | \tonode[\experimental](mt30)(-2,\layer){MiK\TeX\ 3.0} 678 | \todraw(mt30)(mt29) 679 | 680 | \steplayer 681 | \tonode(mt20x)(0,\layer){MiK\TeX\ 20.6} 682 | \todraw(mt29)(mt20x) 683 | 684 | } 685 | 686 | \tograph(\tostruct(1)[\TeX\ collection]{\TeX\ collection}){ 687 | \tonode(texcollection)(0,\layer){\TeX\ Collection} 688 | 689 | } 690 | 691 | \tograph(\tostruct(1)[standalone Con\TeX t]{standalone Con\TeX t}){ 692 | \tonode(minimals)(-3,\layer){Standalone} 693 | } 694 | 695 | \tograph(\tostruct(1)[Decus \TeX]{Decus \TeX}){ 696 | \tonode[\histdistro](decustex)(0,\layer){Decus \TeX} 697 | } 698 | 699 | \tograph(\tostruct(1)[Ker\TeX]{Ker\TeX}){ 700 | \tonode(kertex)(0,\layer){Ker\TeX} 701 | } 702 | 703 | \tograph(\tostruct(1)[W32\TeX]{W32\TeX}){ 704 | \tonode(w32tex)(0,\layer){W32\TeX} 705 | } 706 | 707 | \tograph(\tostruct(1)[OzTeX]{OzTeX}){ 708 | \tonode[\histdistro](oztex)(0,\layer){Oz\TeX} 709 | } 710 | 711 | \tograph(\tostruct(1)[For Amiga]{For Amiga}){ 712 | \tonode[\histdistro](amigatex)(-2,\layer){Amiga-TeX} 713 | \tonode[\histdistro](pastex)(2,\layer){pasTeX} 714 | } 715 | 716 | \tograph(\tostruct(1)[N\TeX]{N\TeX}){ 717 | \tonode[\histdistro](ntex)(0,\layer){N\TeX} 718 | } 719 | 720 | \newpage 721 | \tostruct[Pandora's Box]{Pandora's Box} 722 | \parbox{\textwidth}{\normalsize 723 | 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! 724 | } 725 | 726 | %%% META* %%% 727 | \tograph(\tostruct(1)[META*]{META*}[\program]){ 728 | \tonode(metafont)(0,\layer){METAFONT} 729 | \steplayer 730 | 731 | \tonode(metafog)(4,\layer){Metafog} 732 | \todraw(metafog)(metafont) 733 | 734 | \tonode(metatype1)(-4,\layer){MetaType1} 735 | \todraw(metatype1)(metafont) 736 | \steplayer[-1] 737 | 738 | \tonode(metapost)(0,\layer){MetaPost} 739 | \todraw(metapost)(metafont) 740 | \steplayer[-1] 741 | 742 | \tonode[\normalimportant](mptopdf)(-4,\layer){mptopdf} 743 | \todraw.(metapost)(mptopdf) 744 | 745 | \tonode[\experimental](mflua)(3.5,\layer){MFLua} 746 | \todraw(mflua)(metafont) 747 | \steplayer[-0.5] 748 | 749 | \tonode[\experimental](mfluajit)(6.5,\layer){MFLuaJIT} 750 | \todraw(mfluajit)(mflua) 751 | \steplayer[-1.5] 752 | 753 | \tonode[\normalimportant](metappeal)(4,\layer)<“Metappeal is an extension to Plain MetaPost, providing a lightweight framework 754 | for consistent development in MetaPost.”>{Metappeal} 755 | \todraw(metappeal)(metapost) 756 | \steplayer[-1] 757 | 758 | \tonode[\experimental](megapost)(0,\layer){MegaPost} 760 | \todraw(metapost)(megapost) 761 | \steplayer[-1] 762 | 763 | \tonode[\normalimportant](metafun)(3,\layer)<“MetaFun is Hans Hagen's extension to (or module for) the MetaPost language.” A format for MetaPost that is useable with ConTeXt.>{MetaFun} 764 | \todraw(metafun)(metapost) 765 | } 766 | 767 | %%% BIBTEX %%% 768 | \tograph(\tostruct(1)[Bib\TeX]{Bib\TeX}){ 769 | \tonode(bibtex)(0,0){\BibTeX} 770 | \steplayer[-1] 771 | 772 | \tonode(nbibtex)(4,\layer)<“NbibTeX helps authors take better advantage of BibTeX data” says the homepage.>{NbibTeX} 773 | \todraw(nbibtex)(bibtex) 774 | \steplayer[-0.5] 775 | 776 | \tonode(bibtex8)(0,\layer){\BibTeX8} 777 | \todraw(bibtex8)(bibtex) 778 | 779 | \tonode(mlbibtex)(-4,\layer){MlBibTeX} 780 | \todraw(mlbibtex)(bibtex) 781 | \steplayer 782 | 783 | \tonode(bibtexu)(0,\layer){\BibTeX u} 784 | \todraw(bibtex8)(bibtexu) 785 | 786 | \tonode(jbibtex)(-4,\layer){j\BibTeX} 787 | \todraw(bibtex8)(jbibtex) 788 | 789 | \tonode(pybtex)(3,\layer){Pybtex} 790 | \todraw(pybtex)(bibtexu) 791 | \steplayer 792 | 793 | \tonode(pbibtex)(-4,\layer){p\BibTeX} 794 | \todraw(jbibtex)(pbibtex) 795 | \steplayer 796 | 797 | \tonode(upbibtex)(-6,\layer){up\BibTeX} 798 | \todraw(pbibtex)(upbibtex) 799 | \steplayer 800 | 801 | \tonode(biber)(0,\layer){biber} 802 | \todraw(bibtexu)(biber) 803 | 804 | \steplayer 805 | 806 | \tonode[\package](biblatex)(3,\layer){Bib\LaTeX} 807 | \todraw.(biber)(biblatex) 808 | \todraw.(bibtexu)(biblatex) 809 | 810 | \tonode[\package](librarian)(7,\layer){Librarian} 811 | } 812 | 813 | %%% dvipdfm and similar ones %%% 814 | \tograph(\tostruct(1)[{(x)dvipdf(m)(x)}]{(x)dvipdf(m)(x)}){ 815 | \tonode(dvipdf)(0,0){dvipdf} 816 | \tonode(xdv2pdf)(4,0){xdv2pdf} 817 | \steplayer 818 | 819 | \tonode(dvipdfm)(0,\layer){dvipdfm} 820 | \steplayer 821 | 822 | \tonode(dvipdfmx)(0,\layer){dvipdfmx} 823 | \todraw(dvipdfm)(dvipdfmx) 824 | \steplayer 825 | 826 | \tonode(xdvipdfmx)(0,\layer){xdvipdfmx} 827 | \todraw(dvipdfmx)(xdvipdfmx) 828 | } 829 | 830 | \tograph(\tostruct(1)[Fonts]{Fonts}[\fonttechnology] 831 | \parbox{\textwidth}{\large 832 | This section tries to cover the development of fonts – the most important thing for a typesetting system are font mechanisms, after all …\\[4ex]} 833 | ){ 834 | \tonode(bitmap)(0,\layer){Bitmap fonts} 835 | \steplayer[-3] 836 | 837 | \tonode(type1)(-2,\layer){PostScript Type 1} 838 | \tonode(truetype)(2,\layer){TrueType} 839 | \tonode(freetype)(6,\layer){FreeType} 840 | \todraw(freetype)(truetype) 841 | \steplayer[-3] 842 | 843 | \tonode(gx)(6,\layer)<“Graphis eXtension”. A font format only available for Mac OS.>{TrueType GX} 844 | \todraw(truetype)(gx) 845 | \steplayer[-3] 846 | 847 | \tonode(opentype)(-2,\layer){OpenType} 848 | \todraw(truetype)(opentype) 849 | \todraw(type1)(opentype) 850 | 851 | \tonode(aat)(6,\layer)<“Apple Advanced Typography” fonts are succesors of the GX fonts. Only available for Mac OS, too.>{AAT} 852 | \todraw(aat)(gx) 853 | } 854 | 855 | \newpage 856 | \tograph(\tostruct(1)[Work Flow]{Work Flow – Under Construction!}[\vip] 857 | { 858 | \flushleft 859 | \large This section tries to give a rough overview over the connection of different file types and how they are used by the different programs. We concentrate on the ”modern“ version of the programs, i.\,e.~Lua\TeX, biber etc. The graph so far shows: 860 | 861 | \begin{itemize} 862 | \item basic files used/produced in every Lua\LaTeX run, 863 | \item files used for complex documents with TOC, LOT and LOF, 864 | \item files and programs associated with bibliographies, 865 | \item files produced by the beamer class 866 | \end{itemize} 867 | 868 | A next version might show the files produced using Ti{\textit k}Z and externalizing etc. 869 | 870 | \global\let\necessary\vip 871 | \global\let\additional\experimental 872 | \global\let\automatic\normalimportant 873 | \global\let\program\program 874 | \global\let\temporary\package 875 | The preliminary nomenclature is: 876 | \begin{itemize} 877 | \item[{\let\nodecolor\necessary \tikz \node[coolnode]{necessary\strut};}] necessary input files 878 | \item[{\let\nodecolor\temporary \tikz \node[coolnode]{temporary\strut};}] temporary storage files: written in one run, read in the next one 879 | \item[{\let\nodecolor\additional \tikz \node[coolnode]{additional\strut};}] additional input files 880 | \item[{\let\nodecolor\automatic \tikz \node[coolnode]{automatic\strut};}] automatically produced files 881 | \item[{\let\nodecolor\program \tikz \node[coolnode]{program\strut};}] program that is used – editor, processing tool, viewer, … 882 | \end{itemize} 883 | 884 | %% yes, this is stupid, but for now that's how it is …: 885 | } 886 | ){ 887 | \tonode[\necessary](texfile)(0,\layer){.tex} 888 | 889 | \steplayer 890 | \tonode[\necessary](styfile)(-1,\layer)