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
|
% File: dvipscol.sty
% Version: 2000/08/31 v1.0
% Author: Heiko Oberdiek
% Email: <oberdiek@ruf.uni-freiburg.de>
%
% Copyright: Copyright (C) 2000 Heiko Oberdiek.
%
% This program may be distributed and/or modified under
% the conditions of the LaTeX Project Public License,
% either version 1.2 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.2 or later is part of all distributions
% of LaTeX version 1999/12/01 or later.
%
% Function: This package tries a solution, if the program
% dvips complains:
% "! out of color stack space"
% The driver file `dvips.def' contains the
% low level color commands for the package `color'.
% Each time a color is set, the current color is
% pushed on the color stack before and after the
% current group the old color is popped from
% the stack and set again (via \aftergroup).
% But the color stack size of dvips is limited,
% so a stack overflow can occur, if there are
% too many color setting operations in a group.
% Only at the bottom group level (no group),
% the color can be set directly without pushing
% the current color on the stack before, because
% there is no group at bottom level that can end.
% With e-TeX the group level can easily be
% detected (\currentgrouplevel). Alone with TeX
% this is not possible.
%
% Recommended: e-TeX (explanation see above)
%
% Use: * With e-TeX the package fixes \set@color, therefore
% no interaction with the user is required.
% * Without e-TeX the package defines \nogroupcolor,
% that the user can use manually instead of \color.
% But caution: it should only be used outside of all
% groups, for example the following will not work:
% \textcolor{black}{\nogroupcolor{blue}...}
%
% History: 2000/08/31 v1.0:
% first public release created as answer to
% a question of Deepak Goel in comp.text.tex:
% "\color{} problems.. :Out of stack space.."
%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{dvipscol}[2000/08/31 v1.0 Fix for dvips.def (HO)]
\@ifundefined{ver@dvips.def}{%
\PackageWarningNoLine{dvipscol}{%
Nothing to fix, because \string`dvips.def\string' not loaded%
}%
\endinput
}
\CheckCommand*{\set@color}{%
\special{color push \current@color}%
\aftergroup\reset@color
}
\newcommand*{\nogroupcolor}{%
\let\saved@org@set@color\set@color
\def\set@color{%
\let\set@color\saved@org@set@color
\special{color \current@color}%
}%
\color
}
\ifx\currentgrouplevel\@undefined
\PackageWarningNoLine{dvipscol}{%
\string\set@color\space cannot be fixed, %
because the\MessageBreak
e-TeX extensions are not available%
}%
\expandafter\endinput
\fi
\def\set@color{%
\ifcase\currentgrouplevel
\special{color \current@color}%
\else
\special{color push \current@color}%
\aftergroup\reset@color
\fi
}
\endinput
|