summaryrefslogtreecommitdiff
path: root/info/tex-font-errors-cheatsheet/tex-font-cheatsheet.tex
blob: d9b52afb0c99761c014bf061d076b2a56c9085e7 (plain)
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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
%% tex-font-cheatsheet.tex
%% Copyright (C) 2009, 2010 Nico Schlömer
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
%
% The Current Maintainer of this work is Nico Schlömer.
%
\documentclass[10pt]{scrartcl}

\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{microtype}

\usepackage{fixltx2e}
\usepackage{csquotes}

% \usepackage{MinionPro}
% \usepackage{MyriadPro}
% \usepackage{beramono}
\renewcommand{\familydefault}{\sfdefault}

\usepackage[margin=0.5in]{geometry}

\usepackage{listings}  % include highlighted source code
\lstset{% general command to set parameter(s)
basicstyle=\ttfamily, % print whole listing small
keywordstyle=\color{myDarkBlue},
identifierstyle=,
commentstyle=\color{myDarkGreen},
stringstyle=\color{myAccentRed},
showstringspaces=false,     % no special string spaces
frame=single,
language=[LaTeX]Tex
}

\usepackage{tabularx}
\usepackage{booktabs}

\usepackage{tikz}
\usetikzlibrary{shapes}
\usetikzlibrary{arrows}
\usetikzlibrary{decorations}

\usepackage{fancyvrb}

% define colors from the KDE color scheme
\usepackage{xcolor}
\definecolor{myDarkBlue}{RGB}{27,45,131}
\definecolor{myLightBlue}{RGB}{197,217,240}

% \definecolor{myDarkGreen}{RGB}{0,102,47}
% \definecolor{myLightGreen}{RGB}{171,215,188}
\definecolor{myDarkGreen}{RGB}{83,147,22}
\definecolor{myLightGreen}{RGB}{180,213,151}

\definecolor{myDarkYellow}{RGB}{249,186,7}
\definecolor{myLightYellow}{RGB}{255,245,146}
\definecolor{myDarkGray}{RGB}{0,0,28}
\definecolor{myLightGray}{RGB}{235,236,237}
\definecolor{myAccentYellow}{RGB}{255,220,0}
\definecolor{myAccentRed}{RGB}{231,35,0}


\newcommand{\ttffile}{\texttt{\$TTF\_FILE}}
\newcommand{\encfile}{\texttt{\$ENC\_FILE}}

\newcommand{\sampleshort}{
\begin{tabular}{p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}}
0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 9 &\\
a & b & c & d & e & f & g & h & i & j & k & l & m\\
n & o & p & q & r & s & t & u & v & w & x & y & z\\
A & B & C & D & E & F & G & H & I & J & K & L & M\\
N & O & P & Q & R & S & T & U & V & W & X & Y & Z
\end{tabular}%
% {0}{1}{2}{3}{4}{5}{6}{7}{8}{9}\\
% {a}{b}{c}{d}{e}{f}{g}{h}{i}{j}{k}{l}{m}{n}{o}{p}{q}{r}{s}{t}{u}{v}{w}{x}{y}{z}\\
% {A}{B}{C}{D}{E}{F}{G}{H}{I}{J}{K}{L}{M}{N}{O}{P}{Q}{R}{S}{T}\\
% {U}{V}{W}{X}{Y}{Z}
}

\newcommand{\sample}{
\begin{tabular}{p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}@{}p{2.5ex}}
0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 9 &   &\\
a & b & c & d & e & f & g & h & i & j & k & l & m & n\\
o & p & q & r & s & t & u & v & w & x & y & z\\
A & B & C & D & E & F & G & H & I & J & K & L & M & N\\
O & P & Q & R & S & T & U & V & W & X & Y & Z
\end{tabular}%
% {0}{1}{2}{3}{4}{5}{6}{7}{8}{9}\\
% {a}{b}{c}{d}{e}{f}{g}{h}{i}{j}{k}{l}{m}{n}{o}{p}{q}{r}{s}{t}{u}{v}{w}{x}{y}{z}\\
% {A}{B}{C}{D}{E}{F}{G}{H}{I}{J}{K}{L}{M}{N}{O}{P}{Q}{R}{S}{T}\\
% {U}{V}{W}{X}{Y}{Z}
}

\begin{document}

\centering

% ============================================================================
% START page 1
% ============================================================================
\section*{\TeX{} font errors: Cheatsheet}

\begin{tikzpicture}
[auto,
decision/.style = {diamond, draw=myDarkBlue, thick, fill=myLightBlue, text width=4.5em, text badly centered,inner sep=1pt},
block/.style    = {rectangle, draw=myDarkBlue, thick, fill=myLightBlue, text width=5em, text centered, rounded corners, minimum height=4em},
line/.style     = {draw, thick, -latex',shorten >=2pt},
error/.style    = {draw=myAccentRed, thick, fill=red!20, minimum height=2em},
error_number/.style  = {starburst, fill=myAccentYellow, draw=myAccentRed, line width=2pt,starburst points=17},
warning_number/.style  = {starburst, fill=myAccentYellow, draw=myAccentRed, line width=0.5pt,starburst points=7},
crookedoutput/.style   = {draw=myDarkYellow, thick, fill=myLightYellow, text width=5cm,minimum height=2em, inner sep=2ex},
output/.style   = {draw=myDarkGreen, thick, fill=myLightYellow, text width=5cm,minimum height=2em, inner sep=2ex}
]

% \node[starburst, fill=myAccentYellow, draw=myAccentRed, line width=2pt] {\bf BANG!};

% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% *** matrix
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\matrix [column sep=5mm,row sep=7mm]
{
% row 0
% &
% \node [block] (sty_latex) {\LaTeX +sty};&
\node [block] (declare_latex) {\LaTeX};&
\node [block] (tex) {\TeX{}\textsuperscript{2}}; \\
% row 1
% \node [error_number] (no_sty) {1};&
% \node [decision] (sty_exist) {STY file found?};&

\node [decision] (fd_exist) {Font declared?\textsuperscript{1}}; &
\node [decision] (tfm_exist) {TFM file\textsuperscript{3} found?};&
\node [error_number] (no_tfm) {2};\\
% row 3
&
\node [decision] (vf_exist) {VF file\textsuperscript{3} found?}; &
\node [decision] (rtfm_exist) {Raw TFM file\textsuperscript{3}~found?};\\
% row 4
&
\node [decision] (fi_suff) {Font info sufficient?};&\\
% row 4b
&
\node [decision] (map_exist) {Map file in \TeX's cache?};
&\node [error_number] (no_map) {4};\\
% row 5
&
\node [decision] (enc_exist) {ENC file found?};&
\node [error_number] (no_encoding) {5};\\
% row 6
&
\node [decision] (ttf_exist) {PFM/TTF file found?};&
\node [error_number] (no_ttf) {6};\\
};
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% *** END matrix
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% *** output nodes
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\node (fallback_output) at (-10,7) [crookedoutput] {\fontfamily{cmr}\fontseries{m}\fontshape{n}\selectfont An output file with a fallback font (usually \texttt{cmr}) will be generated .\\\sampleshort\\ };
\node (output_flawless)at(-7,-12) [output,text width=7cm]   {\fontfamily{MinionPro-TOsF}\fontseries{m}\fontshape{n}\selectfont Done!\\
\sampleshort\\
Depending on whether or not your TFM/VF file contains kerning and ligature tables, the quality of your document might vary (see note~${}^4$). Compare, for example,
\begin{center}
\begin{tabular}{cc}
\toprule
% good  & bad\\\midrule
Table & {T}able\\
ffi   & {f}{f}i\\
---   & {-}{-}{-}\\
?`    & {?}`\\\bottomrule
\end{tabular}
\end{center}
};
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% *** END output nodes
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% *** paths
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\begin{scope}[every path/.style=line]
% \path (sty_latex) -- (sty_exist);
% \path (sty_exist)-- node [near start] {no} (no_sty);
% \path (sty_exist)-- node [near start] {yes} (fd_exist);
\path (tex) -- (tfm_exist);
\path (declare_latex) -- (fd_exist);
% \path (fd_exist) -- node [midway] {no} (no_fd);
\path (fd_exist) -- node [near start] {no}
                    node [above,near end] {\tikz\node [warning_number] (no_fd) {1};} (fallback_output);
\path (fd_exist) -- node [near start] {yes} (tfm_exist);
\path (tfm_exist) -- node [near start] {no} (no_tfm);
\path (tfm_exist) -- node [near start] {yes} (vf_exist);
\path (vf_exist) -- node [near start] {no\textsuperscript{4}} (fi_suff);
\path (map_exist) -- node [near start] {yes} (enc_exist);
\path (enc_exist) -- node [near start] {yes} (ttf_exist);
\path (ttf_exist) -- node [near start] {yes} (output_flawless);
\path (vf_exist) -- node [near start] {yes} (rtfm_exist);
\path [double,-] (rtfm_exist) -- node [near start,above] {\tikz\node [error_number] (no_fd) {3};} (tfm_exist);
\path (rtfm_exist) -- node [near start] {yes} (fi_suff);
\path (fi_suff)    -- node [near start] {yes} (map_exist);
\path (fi_suff)    -- node [near start] {no} (no_map);
\path (rtfm_exist) -- node [right,near start] {no} (no_tfm);
\path (map_exist) -- node [near start] {no} (no_map);
\path (enc_exist) -- node [near start] {no} (no_encoding);
\path (ttf_exist) -- node [near start] {no} (no_ttf);
% \path (rmap_exist) -- node [midway] {yes}(rencttf_exist);
% \path (rencttf_exist) -- node [midway] {yes} (output_flawless);
\end{scope}
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% *** END paths
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% *** notes
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\begin{scope}[xshift=-8cm,yshift=-1.5cm]
\node (0,0)[rectangle, draw=myDarkGray, thick, fill=myLightGray, text width=9cm, text centered, rounded corners, inner sep=2ex]{
\begin{minipage}[t]{9cm}
\begin{center}
Notes
\end{center}
\begin{tabularx}{\textwidth}{lX}
\textsuperscript{1} & To use a font in {\LaTeX}, you need to connect \LaTeX's font definition -- given as \texttt{fontfamily} (e.g., Computer Modern Roman, \texttt{cmr}), \texttt{fontseries} (e.g., bold, \texttt{b}), and \texttt{fontsshape} (e.g, upright, \texttt{n}) -- with an actual {\TeX} font. This happens most commonly in an FD file, but can also be accomplished in the {\LaTeX} source file itself.\\[2mm]
\textsuperscript{2} & Even if you're not fluent in \TeX, it's quite easy to actually test a font with it, and that's what you should do if things are not working as expected in \LaTeX. On the command line, just go \texttt{pdftex~testfont}, then give your font's (\TeX) name, ask {\TeX} to \texttt{$\backslash$sample}, and say \texttt{$\backslash$bye}. What you'll get is a nice prototype document of your font.\\[2mm]
\textsuperscript{3} & Your font definition declares a \TeX{} font name and \TeX{} looks for \texttt{[r]TeX-font-name.\{tfm,vf\}}.\\[2mm]
\textsuperscript{4} & If no further errors occur, your document will probably compile fine without a font-related warning message at all. However, you appear to use the raw TFM directly without the VF detour. This way, {\TeX} will not have access to kerning and ligature information; hence, for example, \enquote{\texttt{{-}{-}{-}}} and \enquote{\texttt{Ta}} will be rendered as \enquote{{-}{-}{-}} and \enquote{{T}{a}} instead of the correct \enquote{---} and \enquote{Ta}.
\end{tabularx}
\end{minipage}};
\end{scope}
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% *** END notes
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

\end{tikzpicture}
% ============================================================================
% END page 1
% ============================================================================


% ============================================================================
% page 2
% ============================================================================
\section*{Errors and warnings as given by \TeX}

\begin{minipage}{\textwidth}
The following error messages were generated with the TTF font Comic Sans in \LaTeX{}. The \TeX{} font name was chosen to be \texttt{jcs} and T1 encoding was used.
\end{minipage}

\bigskip

\newlength{\errormsgboxwidth}
\setlength{\errormsgboxwidth}{15cm}

\begin{tikzpicture}[%
error_number/.style  = {starburst, fill=myAccentYellow, draw=myAccentRed, line width=2pt,starburst points=17},%
errormsg/.style      = {rectangle, draw=myDarkGray, fill=myLightGray, thick, rounded corners, inner sep=2ex},%
remedy/.style        = {},%
warning_number/.style  = {starburst, fill=myAccentYellow, draw=myAccentRed, line width=0.5pt,starburst points=7}%
]
\matrix [column sep=5mm,row sep=7mm]
{
% \node [error_number] {1};
% &\node [errormsg] {\begin{minipage}[t]{\errormsgboxwidth}
% \begin{Verbatim}
% ! LaTeX Error: File `auto1.sty' not found.
% Type X to quit or <RETURN> to proceed, or enter new name. (Default extension: sty)
% \end{Verbatim}
% \end{minipage}};\\
% &
% \node [remedy] {\begin{minipage}[t]{\errormsgboxwidth}
% Check that you didn't misspell the package name and thatyou updated \TeX's cache with
% \begin{Verbatim}
% $> texhash
% \end{Verbatim}
% \end{minipage}};\\
% % 
\node [warning_number] {1};&
\node [errormsg] {\begin{minipage}[t]{\errormsgboxwidth}%
\begin{Verbatim}
LaTeX Font Warning: Font shape `OT1/jcs/m/n' undefined
(Font)              using `OT1/jcs/m/n' instead on input line 23.
\end{Verbatim}
\end{minipage}
};\\
&
\node [remedy] {\begin{minipage}[t]{\errormsgboxwidth}
If you select the font explicitly by
\begin{lstlisting}
\fontfamily{jcs}\fontseries{m}\fontshape{n}\selectfont Sample text.
\end{lstlisting}
you might run into the same issue. The problem is that \LaTeX{} can't find a definition (in an FD file or in the source file itself) that links the font family \texttt{jcs} with series \texttt{m} and shape \texttt{n} \emph{and the current encoding} to a specific internal \TeX{} font.

That said, the problem is mostly the encoding. Are you using
\begin{lstlisting}[language=TeX]
\DeclareFontFamily{T1}{jcs}{}
\DeclareFontShape{T1}{jcs}{m}{n} {<-> jcsr8t } {}
\end{lstlisting}
that is, T1 encoding? Well, \LaTeX's default is OT1, so it's probably just enough to force T1 encoding in your source file with
\begin{lstlisting}
\usepackage[T1]{fontenc}
\end{lstlisting}
\end{minipage}};\\
%
% 3:
\node [error_number] {2};&
\node [errormsg] {\begin{minipage}[t]{\errormsgboxwidth}
\begin{Verbatim}
kpathsea: Running mktextfm jcsr8t
mktextfm: Running mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode;
input jcsr8t
This is METAFONT, Version 2.718281 (Web2C 7.5.7)


kpathsea: Running mktexmf jcsr8t
! I can't find file jcsr8t'.
<*> ...=ljfour; mag:=1; nonstopmode; input jcsr8t

Please type another input file name
! Emergency stop.
<*> ...=ljfour; mag:=1; nonstopmode; input jcsr8t

Transcript written on mfput.log.
grep: jcsr8t.log: No such file or directory
mktextfm: `mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input jcsr8t'
failed to make jcsr8t.tfm.
kpathsea: Appending font creation commands to missfont.log.

! Font T1/jcs/m/n/10=jcsr8t at 10.0pt not loadable: Metric (TFM) file not found.
<to be read again>
                   relax
\end{Verbatim}
\end{minipage}};\\
&
\node [remedy] {\begin{minipage}[t]{\errormsgboxwidth}
Now, somewhere in \TeX's data (in an FD file corresponding to your font or in the source file), one of \TeX's internal font names is specified, (like \texttt{jcsr8t} here). Unfortunately, {\TeX} can't find a file named \texttt{jcsr8t.tfm} now; you can verify this with
\begin{lstlisting}[language=bash]
$> kpsewhich jcsr8t.tfm
\end{lstlisting}
which doesn't give any location. \emph{This file is needed to use the font.} If you are sure that the file is there, update \TeX's cache (\texttt{texhash}).
\end{minipage}};\\
};
\end{tikzpicture}


\begin{tikzpicture}[%
error_number/.style  = {starburst, fill=myAccentYellow, draw=myAccentRed, line width=2pt,starburst points=17},%
errormsg/.style      = {rectangle, draw=myDarkGray, fill=myLightGray, thick, rounded corners, inner sep=2ex},%
remedy/.style        = {},%
warning_number/.style  = {starburst, fill=myAccentYellow, draw=myAccentRed, line width=0.5pt,starburst points=7}%
]
\matrix [column sep=5mm,row sep=7mm]
{
%
% 4:
\node [error_number] {3};&
\node [errormsg] {\begin{minipage}[t]{\errormsgboxwidth}
\begin{Verbatim}
! TeX capacity exceeded, sorry [max level recursion of virtual fonts=10].
\end{Verbatim}
\end{minipage}};\\%
&%
\node [remedy] {\begin{minipage}[t]{\errormsgboxwidth}%
This error message arises when there is a TFM file and a VF file that points to a raw TFM file that happens to be the original TFM file itself. From there, \TeX{} finds the corresponding VF file again and so on: happy looping until \TeX{} is tired.

There probably was an error when creating the font files which resulted in not distinguishing raw TFM and TFM file. If you created the font files yourself, make sure that \emph{these are actually different files}.
\end{minipage}};\\
%
% 5:
\node [error_number] {4};&
\node [errormsg] {\begin{minipage}[t]{\errormsgboxwidth}
\begin{Verbatim}
kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 0+420/600 --dpi 420 rjcsr8t
mktexpk: don't know how to create bitmap font for rjcsr8t.
kpathsea: Appending font creation commands to missfont.log.

!pdfTeX error: pdflatex (file rjcsr8t): Font rjcsr8t at 420 not found
 ==> Fatal error occurred, no output PDF file produced!
\end{Verbatim}
\end{minipage}};\\
&
\node [remedy] {\begin{minipage}[t]{\errormsgboxwidth}
Probably the most common error message in \LaTeX{} fonts.

It's being triggered when the information in the (raw) TFM file is not sufficient to create the actual font, and thus again is a font installation error.
\begin{itemize}
\item Check that you did not interchange raw TFM and TFM font file (the raw TFM file should be a lot smaller).
\item Check that \TeX{} finds your VF file if there is one.
\end{itemize}

Another possible cause is that the raw TFM is declared in no MAP file, or that \TeX's map cache isn't updated. Look for a map file with an entry starting with the raw TFM name, for example,
\begin{lstlisting}[breaklines,breakatwhitespace]
rjcsr8t Comic-Sans " T1Encoding ReEncodeFont " <Comic-Sans.ttf <T1-WGL4.enc
\end{lstlisting}
In Linux, this could for example be done by
\begin{lstlisting}[language=bash]
$> find /path/to/mapfiles | xargs grep rjcsr8t
\end{lstlisting}
If you can't find it, create a proper map file, and update \TeX's map cache:
\begin{lstlisting}[language=bash]
$> updmap --enable Map=/path/to/mapfile.map
\end{lstlisting}
\end{minipage}};\\
%
% 6:
\node [error_number] {5};&
\node [errormsg] {\begin{minipage}[t]{\errormsgboxwidth}
\begin{Verbatim}
!pdfTeX error: pdflatex (file T1-WGL4.enc): cannot open encoding file for reading
 ==> Fatal error occurred, no output PDF file produced!
\end{Verbatim}
\end{minipage}};\\
&
\node [remedy] {\begin{minipage}[t]{\errormsgboxwidth}
Probably easy: \LaTeX{} can't find the encoding file. Can you? In this case, you probably forgot to update \TeX's cache:
\begin{lstlisting}[language=bash]
$> texhash
\end{lstlisting}
\end{minipage}};\\
%
% 7:
\node [error_number] {6};&
\node [errormsg] {\begin{minipage}[t]{\errormsgboxwidth}
\begin{Verbatim}
!pdfTeX error: pdflatex (file Comic-Sans.ttf): cannot open TrueType font file
for reading
 ==> Fatal error occurred, no output PDF file produced!
\end{Verbatim}
\end{minipage}};\\
&
\node [remedy] {\begin{minipage}[t]{\errormsgboxwidth}
The actual font file appears to be missing. Again, this might be a matter of updating \TeX's cache; also make sure that the user can actually access the font file (read: get file permissions right).
\end{minipage}};\\
};
\end{tikzpicture}
% ============================================================================
% END 2nd page
% ============================================================================

\end{document}