diff options
Diffstat (limited to 'info/tex-overview/tex-overview-aux.tex')
-rw-r--r-- | info/tex-overview/tex-overview-aux.tex | 322 |
1 files changed, 322 insertions, 0 deletions
diff --git a/info/tex-overview/tex-overview-aux.tex b/info/tex-overview/tex-overview-aux.tex new file mode 100644 index 0000000000..a2404930da --- /dev/null +++ b/info/tex-overview/tex-overview-aux.tex @@ -0,0 +1,322 @@ +%% 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. +%% author: Arno Trautmann + +% !TeX root = tex-overview.tex +%% (for the TeXworks-users.) +\documentclass{scrartcl} +\usepackage[svgnames]{xcolor} + +\usepackage{ + array, + bookmark, + booktabs, + colortbl, + fontspec, + geometry, + hyperref, + longtable, + luacode, + metalogo, + multicol, + microtype, +% pdftexcmds, + tabu, + tikz, + xparse +} +%% copied definitions from old dtklogos, which are no longer supported: +\makeatletter +\providecommand\NTS{\mbox{\mathsurround=0pt + \(\cal N\mkern -4mu\lower .5ex\hbox{$\cal T$}\mkern -2mu S\)}} +\providecommand\AMS{{\normalfont\(\cal A\)\kern-.1667em\lower.5ex\hbox{\(\cal M\)}\kern-.125em{\(\cal S\)}}} +\providecommand\LamSTeX{% + L\raise.42ex\hbox{\kern-.3em\the\scriptfont2 A}% + \kern-.2em\lower.376ex\hbox{\the\textfont2 M}% + \kern-.125em {\the\textfont2 S}-\TeX} +\DeclareRobustCommand{\BibTeX}{B\kern-.05em% + \hbox{$\m@th$% %% force math size calculations + \csname S@\f@size\endcsname + \fontsize\sf@size\z@ + \math@fontsfalse\selectfont + I\kern-.025emB}% + \kern-.08em% + \-\TeX} + +\newcommand*{\noaddvspace}{\renewcommand*{\addvspace}[1]{}} +\addtocontents{toc}{\protect\noaddvspace} + +\renewcommand*{\addparttocentry}[2]{% + \addtocentrydefault{part}{#1}{\Large #2 \normalsize} +} + +\microtypesetup{stretch=35} %% allow for a bit more expansion to improve typesetting of the columns. +\frenchspacing + +%% define the look-and-feel of the document +\setmainfont{TeX Gyre Pagella} +\setsansfont{TeX Gyre Pagella} + +%% setup the style of hyperlinks. +\hypersetup{ + unicode=true, + colorlinks=true, + linkcolor=DarkRed, + urlcolor=blue +} +\hyperbaseurl{.} + +%% page layout, headings +\pagestyle{empty} +\addtokomafont{disposition}{\color[rgb]{0 0 .7}} +\addtokomafont{section}{\Huge} +\addtokomafont{subsection}{\LARGE} +\addtokomafont{subsubsection}{\Large} + +\ExplSyntaxOn +%% some missing definitions for \TeX-like things +\tl_set:Nn\XeT{X\kern -.1667em\lower .5ex\hbox {E}\kern -.125emT\@} +\tl_set:Nn\ConTeXt{Con\TeX{}t} + +%% constants for the colors. Might change from time to time … +\tl_set:Nn\vip{red} +\tl_set:Nn\normalimportant{blue} +\tl_set:Nn\experimental{yellow} +\tl_set:Nn\planned{LightSkyBlue} +\tl_set:Nn\fonttechnology{pink} +\tl_set:Nn\program{black} +\tl_set:Nn\package{green} +\tl_set:Nn\distro{orange} +\tl_set:Nn\histdistro{purple} +\tl_set:Nn\annotation{black} + +%% shorthand to keep a good structure of the node positions +\fp_new:N\layer_num +\fp_new:N\layerdist_num +\fp_set:Nn\layer_num{0} +\fp_set:Nn\layerdist_num{-1} + +\cs_new:Npn\layer{\fp_use:N\layer_num} + +%% width of the tooltip-boxes (negative value to make them disappear at all) +\dim_set:Nn\fboxrule{-1mm} + +%% to separate important from not-so-important nodes +\bool_new:N\to_short + +%% the token list to save all the textviews. When set once, it is reset. May be useful anyhow. Or not. +\tl_set:Nn\to_textviews{} +\NewDocumentCommand\settextviews{}{ + \setcounter{section}{4} %% to enable equal section numbers for both text and tree views + \to_textviews + \tl_set:Nn\to_textviews{} +} +\cs_gset:Nn\addtotextviews:f{\tl_gput_right:No\to_textviews{#1}} + +%% environment to set the graphs +\NewDocumentCommand\tograph{s+D(){}+m} +{ + \IfBooleanT{#1}{ + \ExplSyntaxOn + \bool_gset_true:N\to_short + \ExplSyntaxOff + #2 + \begin{tikzpicture} + #3 + \end{tikzpicture} + \clearpage + } + \ExplSyntaxOn + \bool_gset_false:N\to_short + \ExplSyntaxOff + #2 + \begin{tikzpicture} + #3 + \end{tikzpicture} +} + +%% Style of the nodes: shade from a light +\tikzstyle{coolnode} = [ + draw=\nodecolor!50!black!70, + top~color=\nodecolor!10!white!105, + bottom~color= \nodecolor!50!black!50 +] + +%% set the first default node style (will change to \distro or \program in the document) +\cs_set_eq:NN\tonodestyle\normalimportant + +%% tonode ⇒ tex-overview node, now with better argument specifier +\NewDocumentCommand\tonode{O{\tonodestyle}D(){no label given}D(){no position given}D<>{no description given}m}{ + +%% test if we are in the short or full view + \tl_gset:Nn\nodecolor{#1} + \bool_if:NTF\to_short{ + %% short view + \tl_if_eq:NNT#1{\vip}{ %% then check if this is an important node + \node[coolnode] (#2) at (#3) { + \href{#4}{\color{black}#5\strut} + }; + } + }{ + %% long view + \node[coolnode] (#2) at (#3) { + \href{#4}{\color{black}#5\strut} + }; + %% and the text view, to be added only once! + \addtotextviews:f{\subsubsection*{\color{blue}#5}\parbox{\columnwidth}{#4}} + } +} + +%% we want to make use of two pdf layers: the upper (main) one for the nodes +%% and the lower (background) one for the lines. That way, the lines will not cross the nodes +\pgfdeclarelayer{background} +\pgfsetlayers{background,main} + +%% the command to draw from one node to the other one. Fine tuning is possible via optional argument #3 +\NewDocumentCommand{\todraw}{st{'}t{.}t{-}O{}d()d()}{ + \begin{pgfonlayer}{background} + %% draw in the case that: either a * is given (always draw) or (' is given and \to_short) or nothing is given + \bool_if:nT{#1 || (#2 && \to_short) || !(#2 || \to_short)} + {\draw [thick,gray,\IfBooleanT{#3}{dotted},\IfBooleanT{#4}{dashed},#5] (#6) to (#7);} %% I’m just loooving expl3! + \end{pgfonlayer} +} + +%% a nice way to control the vertical position of nodes +\NewDocumentCommand{\setlayer}{m}{ + \fp_set:Nn\layer_num{#1} +} +\NewDocumentCommand{\steplayer}{O{\layerdist_num}}{ + \fp_add:Nn\layer_num{#1} +} + +\NewDocumentCommand\topart{m}{ +% \clearpage +% \pdfpagewidth is not available in LuaTeX > 0.85. So we skip this gimmick, might come back later. +%% \dim_set:Nn\pdfpagewidth{9cm} %% make a smaller paper so the header won’t feel so alone on the big, cold paper +%% \dim_set:Nn\pdfpageheight{4cm} +% \newgeometry{margin=1cm} + \part{#1} + \newpage +% \restoregeometry +%% \dim_set:Nn\pdfpagewidth{21cm} %% back to a4 +%% \dim_set:Nn\pdfpageheight{29.7cm} +} + +%% the following code is made to avoid code doubling on cost of readability. Seems to be stable enough to work here. +%% the first argument, given in (), determines the level (sub/sub/section) of the entry. +% second argument: Short name of the struct for toc +% third argument: Full name of the struct +% forth argument: default node style for this struct. Default for the default is the default style. +\NewDocumentCommand\tostruct{D(){0}omO{\tonodestyle}}{ + \tl_set:Nn\to_disp{section} + \int_compare:nT{#1 > 0}{\tl_put_left:Nn\to_disp{sub}} + \int_compare:nT{#1 > 1}{\tl_put_left:Nn\to_disp{sub}} + \bool_if:NTF\to_short + { + \int_compare:nT{#1 = 0}{\stepcounter{section}} + \tl_gset:cn{\to_disp mand}{\cs:w the\to_disp\cs_end:.\hspace{.175em} #3\newline short~view} + \IfNoValueTF{#2}{\tl_gset:cn{\to_disp opt}{\tl_use:c{\to_disp mand}}}{\tl_gset:cn{\to_disp opt}{~#2, short~view}} + \cs:w \to_disp \cs_end:*{\cs:w\to_disp mand\cs_end:} + \int_compare:nT{#1 = 0}{\addtocounter{section}{-1}} + } + { + \tl_gset:cn{\to_disp mand}{#3} + \IfNoValueTF{#2}{\tl_gset:cn{\to_disp opt}{\cs:w \to_disp mand\cs_end:}}{\tl_gset:cn{\to_disp opt}{~#2}} + \addtotextviews:f{\cs:w \to_disp\cs_end:[~#2]{#3}} + \cs:w \to_disp\cs_end:[\cs:w \to_disp opt\cs_end:]{\cs:w \to_disp mand\cs_end:} + } + \cs_gset_eq:NN\tonodestyle#4 +} + +%% the sectioning of the names table +\NewDocumentCommand\totablesec{m}{ +~ \\[-2ex] + \rowcolor[gray]{0.9}\hspace*{2em}\Large \strut \large\rmfamily #1 \\ + ~ \\[-2ex] +} + +%% a command for creation of bib-items. +\NewDocumentCommand\tobibsection{m}{ + \subsection*{#1} +} +\NewDocumentCommand\tobibsubsection{m}{ + \subsection*{#1} +} +\NewDocumentCommand\tobib{mD<>{}O{}}{ + \medskip +\begin{minipage}{\textwidth} %% to prevent page breaks within bib-items + \large #1\normalsize\\ \hspace*{1em} \parbox{.95\textwidth} +{\url{#2} #3} +\end{minipage} +} + +\ExplSyntaxOff + +\AtBeginDocument{ + { + \centering + \huge\bfseries An overview of \TeX, its children\\ + and their friends~\dots + \vspace*{-.2cm} + \flushright\parbox{4cm}{ + \large \color[rgb]{0 0 .7} Arno Trautmann\\ + \fontsize{8.25}{10}\selectfont arno.trautmann@gmx.de + } + \hspace*{.7cm}\par + } + \vspace*{1cm} +} + +%% ok, now something just for fun, but I wanted to use this in a "real life" document: +% we first define some Lua functions for drawing and then use them to colorize the corners of the document. +\begin{luacode} +function pdf_print (...) + for _, str in ipairs({...}) do + pdf.print(str .. " ") + end + pdf.print("\string\n") +end + +function move (p) + pdf_print(p[1],p[2],"m") +end + +function line (p) + pdf_print(p[1],p[2],"l") +end + +function curve(p1,p2,p3) + pdf_print(p1[1], p1[2], + p2[1], p2[2], + p3[1], p3[2], "c") +end + +function linewidth (w) + pdf_print(w,"w") +end + +function disturb_point(point,strength) + if strength then else strength = 5 end + return {point[1] + math.random()*2*strength - strength, + point[2] + math.random()*2*strength - strength} +end + +function sloppyline(start,stop) + local start_line = disturb_point(start,10) + local stop_line = disturb_point(stop,10) + move(start) curve(start_line,stop_line,stop) + pdf_print("S") -- stroke +end +\end{luacode} + +\AtBeginShipout{% + \AtBeginShipoutUpperLeft{% + \color[rgb]{0 0 .7} + \luatexlatelua{ + linewidth(40) + sloppyline({-30,-30},{30,30}) + sloppyline({620,-30},{560,30}) + sloppyline({-30,-800},{30,-860}) + sloppyline({620,-800},{560,-860}) + } + }% +} |