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
|
%%
%% This is file `example-mycolorsetup.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% kvoptions.dtx (with options: `example')
%%
%% This is a generated file.
%%
%% Copyright (C) 2004, 2006 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
%%
%% 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".
%%
%% This Current Maintainer of this work is Heiko Oberdiek.
%%
%% This work consists of the main source file kvoptions.dtx
%% and the derived files
%% kvoptions.sty, kvoptions.pdf, kvoptions.ins, kvoptions.drv,
%% example-mycolorsetup.sty.
%%
%% No we don't need the option 'color'.
%% With color support option 'emphcolor' will dynamically change
%% the color of \emph statements.
% Package identification
% -----------------------
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{example-mycolorsetup}[2006/08/22 Managing my colors]
\RequirePackage{ifpdf}
\RequirePackage{kvoptions}
% Option declarations
% -------------------
\SetupKeyvalOptions{
family=MCS,
prefix=MCS@
}
% Use a shorter family name and prefix
% Option print
\DeclareBoolOption{print}
% is the same as
% \DeclareBoolOption[false]{print}
% Option driver
\ifpdf
\DeclareStringOption[pdftex]{driver}
\else
\DeclareStringOption[dvips]{driver}
\fi
% Alternative interface for driver options
\DeclareVoidOption{dvips}{\SetupDriver}
\DeclareVoidOption{dvipdfm}{\SetupDriver}
\DeclareVoidOption{pdftex}{\SetupDriver}
% In \SetupDriver we take the current option \CurrentOption
% and pass it to the driver option.
% The \expandafter commands expand \CurrentOption at the
% time, when \SetupDriver is executed and \CurrentOption
% has the correct meaning.
\newcommand*{\SetupDriver}{%
\expandafter\@SetupDriver\expandafter{\CurrentOption}%
}
\newcommand*{\@SetupDriver}[1]{%
\setkeys{MCS}{driver={#1}}%
}
% Option emph
% An empty value means, we want to have no color for \emph.
% If the user specifies option emph without value, the red is used.
\DeclareStringOption{emph}[red]
% is the same as
% \DeclareStringOption[]{emph}[red]
% Default option rule
\DeclareDefaultOption{%
\ifx\CurrentOptionValue\relax
\PackageWarningNoLine{\@currname}{%
Unknown option `\CurrentOption'\MessageBreak
is passed to package `color'%
}%
% Pass the option to package color.
% Again it is better to expand \CurrentOption.
\expandafter\PassOptionsToPackage\expandafter{\CurrentOption}{color}%
\else
% Package color does not take options with values.
% We provide the standard LaTeX error.
\@unknownoptionerror
\fi
}
% Process options
% ---------------
\ProcessKeyvalOptions*
% Implementation depending on option values
% -----------------------------------------
% Code for print mode
\ifMCS@print
\PassOptionsToPackage{monochrome}{color}
% tells package color to use black and white
\fi
\RequirePackage[\MCS@driver]{color}
% load package color with the correct driver
% \emph setup
\ifx\MCS@emph\@empty
% \@empty is a predefined macro with empty contents.
% the option value of option emph is empty, thus
% we do not want a redefinition of \emph.
\else
\renewcommand*{\emph}[1]{%
\textcolor{\MCS@emph}{#1}%
}
\fi
\endinput
%%
%% End of file `example-mycolorsetup.sty'.
|