1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
% !TeX root = tex-overview.tex
%% (for the TeXworks-users.)
\usepackage{
bookmark,
cooltooltips,
dtklogos, %% for \NTS etc.
fontspec,
geometry,
hyperref,
pdftexcmds,
tikz,
xcolor,
xparse
}
%% circumventing a bug in cooltooltips
\makeatletter
\let\topdfescapestring\pdf@escapestring
% \let\toanywherehook\@empty
% \def\toAtEndDocument{\g@addto@macro\toanywherehook}
\makeatother
\setmainfont{TeX Gyre Pagella}
\setsansfont{TeX Gyre Pagella}
\hypersetup{
colorlinks=true,
linkcolor=blue,
urlcolor=blue,
pdfborder=0 0 0 %% don’t like these boxes
}
\date{\today}
\pagestyle{empty}
%% use LaTeX3 syntax from here on:
\ExplSyntaxNamesOn
\tl_set:Nn\settextviews{}
\cs_set:Nn\addtotextviews:n{\tl_gput_right:Nn\settextviews{#1}}
%% 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\program{black}
\tl_set:Nn\package{green}
\tl_set:Nn\distro{orange}
%% shorthand to keep a good structure of the node positions
\fp_new:N\layer
\fp_new:N\layerdist
\fp_set:Nn\layer{0}
\fp_set:Nn\layerdist{-1}
%% 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\short
\bool_gset_true:N\short
%% 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}{
%% save the content pdfescaped
\tl_set:No\tonodecontent{\topdfescapestring{#4}}
%% test if we are in the short or full view
\gdef\nodecolor{#1}
\bool_if:NTF\short{
%% short view
\tl_if_eq:NNT#1{\vip}{ %% then check if this is an important node
\node[coolnode]
(#2) at (#3) {
\cooltooltip{#2}{\tonodecontent}{\tonodecontent}{}{#5\strut}
};
}
}{
%% long view
\node[coolnode] (#2) at (#3) {
\cooltooltip{#2}{\tonodecontent}{\tonodecontent}{}{#5\strut}
};
%% and the text view, to be added only once!
\addtotextviews:n{\subsubsection*{\color{blue}#5}\parbox{\textwidth}{#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 \short) or nothing is given
\bool_if:nT{#1 || (#2 && \short) || !(#2 || \short)}
{\draw [thick,gray,\IfBooleanT{#3}{dotted},\IfBooleanT{#4}{dashed},#5] (#6) to (#7);} %% I’m just loooving expl3!
\end{pgfonlayer}
}
%% a command for creation of bib-items.
\NewDocumentCommand\tobibsection{m}{
\subsection*{#1}
}
\NewDocumentCommand\tobibsubsection{m}{
\subsection*{#1}
}
\NewDocumentCommand\tobib{mD<>{}O{}}{
\vspace*{1.5ex}
\begin{minipage}{\textwidth} %% to prevent page breaks
#1\\ \quad \url{#2} #3
\end{minipage}
}
\NewDocumentCommand{\setlayer}{m}{
\fp_set:Nn\layer{#1}
}
\NewDocumentCommand{\steplayer}{O{\layerdist}}{
\fp_add:Nn\layer{#1}
}
\addtokomafont{section}{\LARGE}
\addtokomafont{subsection}{\large}
\NewDocumentCommand{\overviewsection}{omO{\tonodestyle}}{
\clearpage
\cs_gset_eq:NN\tonodestyle#3
%% \dim_set:Nn\pdfpagewidth{9cm} %% make a smaller paper so the header won’t feel so alone on the big, big paper
%% \dim_set:Nn\pdfpageheight{2.5cm}
\IfNoValueTF{#1}{\section{#2}}{\section[#1]{#2}}
\bool_if:NF\short{\addtotextviews:n{\IfNoValueTF{#1}{\section{#2}}{\section[#1]{#2}}}}
%% \dim_set:Nn\pdfpagewidth{21cm} %% back to a4
%% \dim_set:Nn\pdfpageheight{29.7cm}
}
\NewDocumentCommand{\overviewsubsection}{omO{\tonodestyle}}{
\cs_gset_eq:NN\tonodestyle#3
\IfNoValueTF{#1}{\subsection{#2}}{\subsection[#1]{#2}}
\bool_if:NF\short{\addtotextviews:n{\IfNoValueTF{#1}{\subsection{#2}}{\subsection[#1]{#2}}}}
}
\ExplSyntaxNamesOff
|