blob: bae23bd05fd41f0012d76fb40e02455aac1ae0f0 (
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
|
%%
%% This is file `l3keys2e.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% l3keys2e.dtx (with options: `package')
%% ----------------------------------------------------------------
%% l3keys2e --- Parsing LaTeX3 keyvals as LaTeX2e package options
%% Copyright 2009 The LaTeX3 Project
%% Released under the LaTeX Project Public License v1.3c or later
%% See http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%% File: l3keys2e.dtx (C) Copyright 2009 LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
%% license or (at your option) any later version. The latest version
%% of this license is in the file
%%
%% http://www.latex-project.org/lppl.txt
%%
%% This file is part of the ``l3keys2e'' (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
%% The released version of this bundle is available from CTAN.
%%
%% -----------------------------------------------------------------------
%%
%% The development version of the bundle can be found at
%%
%% http://www.latex-project.org/svnroot/experimental/trunk/
%%
%% for those people who are interested.
%%
%%%%%%%%%%%
%% NOTE: %%
%%%%%%%%%%%
%%
%% Snapshots taken from the repository represent work in progress and may
%% not work or may contain conflicting material! We therefore ask
%% people _not_ to put them into distributions, archives, etc. without
%% prior consultation with the LaTeX Project Team.
%%
%% -----------------------------------------------------------------------
%%
\RequirePackage{l3names}
\GetIdInfo$Id: l3keys2e.dtx 1494 2009-08-24 11:05:44Z joseph $
{Parsing LaTeX3 keyvals as LaTeX2e package options}
\ProvidesExplPackage
{\filename}{\filedate}{\fileversion}{\filedescription}
\RequirePackage{xparse}
\clist_new:N \keys_latexe_options_clist
\bool_new:N \_l_keys_process_class_bool
\cs_new:Npn \keys_latexe_options:n #1 {
\clist_clear:N \keys_latexe_options_clist
\keys_latexe_options_global:n {#1}
\keys_latexe_options_local:
\keys_if_exist:nnF {#1} { unknown } {
\keys_define:nn {#1} {
unknown .code:n = {
\msg_error:nnxx { Option~Processing } { unknown-option }
{ \l_keys_key_tl } { \@currname }
}
}
}
\keys_set:nV {#1} \keys_latexe_options_clist
\AtEndOfPackage { \cs_set_eq:NN \@unprocessedoptions \scan_stop: }
}
\msg_new:nnn { Option~Processing } { unknown-option } {%
Unknown~option~`#1'\\%
for~module~#2.%
}
\cs_new:Npn \keys_latexe_options_global:n #1 {
\cs_if_eq:NNF \@classoptionslist \scan_stop: {
\cs_if_eq:NNTF \@currext \@clsextension {
\keys_latexe_options_class:n {#1}
}{
\bool_if:NT \_l_keys_process_class_bool
{ \keys_latexe_options_package:n {#1} }
}
}
}
\cs_new:Npn \keys_latexe_options_class:n #1 {
\clist_map_inline:Nn \@classoptionslist {
\keys_if_exist:nnTF {#1} { \keys_latexe_remove_equals:n {##1} } {
\clist_put_right:Nn \keys_latexe_options_clist {##1}
}{
\clist_put_right:Nn \@unusedoptionlist {##1}
}
}
}
\cs_new:Npn \keys_latexe_options_package:n #1 {
\clist_map_inline:Nn \@classoptionslist {
\keys_if_exist:nnT {#1} { \keys_latexe_remove_equals:n {##1} } {
\clist_put_right:Nn \keys_latexe_options_clist {##1}
\clist_remove_element:Nn \@unusedoptionlist {##1}
}
}
}
\cs_new_nopar:Npn \keys_latexe_options_local: {
\cs_if_eq:NNF \@currext \@clsextension {
\cs_if_exist:cT { opt@ \@currname . \@currext } {
\exp_args:NNc \clist_put_right:NV \keys_latexe_options_clist
{ opt@ \@currname . \@currext }
}
}
}
\cs_new:Npn \keys_latexe_remove_equals:n #1 {
\keys_latexe_remove_equals:w #1 = \q_stop
}
\cs_new:Npn \keys_latexe_remove_equals:w #1 = #2 \q_stop {#1}
\NewDocumentCommand \ProcessKeysOptions { m } {
\bool_set_true:N \_l_keys_process_class_bool
\keys_latexe_options:n {#1}
}
\NewDocumentCommand \ProcessKeysPackageOptions { m } {
\bool_set_false:N \_l_keys_process_class_bool
\keys_latexe_options:n {#1}
}
\@onlypreamble \ProcessKeysOptions
\@onlypreamble \ProcessKeysPackageOptions
\endinput
%%
%% End of file `l3keys2e.sty'.
|