summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/ninecolors/ninecolors.sty
blob: e7ac2d73526b95ae808a29ed6062403fea365041 (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
%%%  -*- coding: utf-8 -*-
%%% ----------------------------------------------------------------------------
%%% Ninecolors: Select colors with proper WCAG color contrast
%%% Author    : Jianrui Lyu <tolvjr@163.com> and Nan Geng <nangeng@nwafu.edu.cn>
%%% Repository: https://github.com/lvjr/ninecolors
%%% License   : The LaTeX Project Public License 1.3
%%% ----------------------------------------------------------------------------

\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{ninecolors}{2022-02-13}{v2022D}
  {Select colors with proper color contrast}

%% We have to make ninecolors package support TeX Live 2020,
%% because tabularray still supports TeX Live 2020 and it depends on this package.
%% Therefore we need to load xparse package first.

\RequirePackage{xcolor}
\RequirePackage{xparse}

%% Old versions of l3color don't work if color model contains a colon.
%% This bug has been fixed in LaTeX3 release 2021-07-12.
%% See https://github.com/latex3/latex3/issues/962
%% and https://github.com/lvjr/ninecolors/issues/1
%% Therefore we only define latex3 colors in newer LaTeX3 releases.
%% Note that l3color was moved from l3experimental to l3kernel on 2021-02-18,
%% hence we don't need to load l3color package first.

\bool_new:N \l__ninecolors_define_latex_three_bool

\@ifpackagelater{expl3}{2021-07-12} % need expl3 which is loaded by xparse
  { \bool_set_true:N \l__ninecolors_define_latex_three_bool } { }

\cs_new_protected_nopar:Npn \__ninecolors_define_colors_mono:
  {
    \__ninecolors_define_one:nnn {gray1} {gray} {0.14}
    \__ninecolors_define_one:nnn {gray2} {gray} {0.23}
    \__ninecolors_define_one:nnn {gray3} {gray} {0.30}
    \__ninecolors_define_one:nnn {gray4} {gray} {0.38}
    \__ninecolors_define_one:nnn {gray5} {gray} {0.46}
    \__ninecolors_define_one:nnn {gray6} {gray} {0.55}
    \__ninecolors_define_one:nnn {gray7} {gray} {0.64}
    \__ninecolors_define_one:nnn {gray8} {gray} {0.75}
    \__ninecolors_define_one:nnn {gray9} {gray} {0.87}
  }

\cs_new_protected_nopar:Npn \__ninecolors_define_colors_low:
  {
    \__ninecolors_define_one:nnn {red1} {rgb:Hsb} {0,0.67,0.26}
    \__ninecolors_define_one:nnn {red2} {rgb:Hsb} {0,0.67,0.41}
    \__ninecolors_define_one:nnn {red3} {rgb:Hsb} {0,0.67,0.54}
    \__ninecolors_define_one:nnn {red4} {rgb:Hsb} {0,0.67,0.67}
    \__ninecolors_define_one:nnn {red5} {rgb:Hsb} {0,0.60,0.77}
    \__ninecolors_define_one:nnn {red6} {rgb:Hsb} {0,0.46,0.81}
    \__ninecolors_define_one:nnn {red7} {rgb:Hsb} {0,0.34,0.86}
    \__ninecolors_define_one:nnn {red8} {rgb:Hsb} {0,0.22,0.90}
    \__ninecolors_define_one:nnn {red9} {rgb:Hsb} {0,0.11,0.95}
    \__ninecolors_define_one:nnn {brown1} {rgb:Hsb} {30,0.67,0.19}
    \__ninecolors_define_one:nnn {brown2} {rgb:Hsb} {30,0.67,0.31}
    \__ninecolors_define_one:nnn {brown3} {rgb:Hsb} {30,0.67,0.41}
    \__ninecolors_define_one:nnn {brown4} {rgb:Hsb} {30,0.67,0.51}
    \__ninecolors_define_one:nnn {brown5} {rgb:Hsb} {30,0.67,0.62}
    \__ninecolors_define_one:nnn {brown6} {rgb:Hsb} {30,0.67,0.74}
    \__ninecolors_define_one:nnn {brown7} {rgb:Hsb} {30,0.49,0.80}
    \__ninecolors_define_one:nnn {brown8} {rgb:Hsb} {30,0.32,0.86}
    \__ninecolors_define_one:nnn {brown9} {rgb:Hsb} {30,0.15,0.93}
    \__ninecolors_define_one:nnn {yellow1} {rgb:Hsb} {60,0.67,0.15}
    \__ninecolors_define_one:nnn {yellow2} {rgb:Hsb} {60,0.67,0.23}
    \__ninecolors_define_one:nnn {yellow3} {rgb:Hsb} {60,0.67,0.31}
    \__ninecolors_define_one:nnn {yellow4} {rgb:Hsb} {60,0.67,0.39}
    \__ninecolors_define_one:nnn {yellow5} {rgb:Hsb} {60,0.67,0.47}
    \__ninecolors_define_one:nnn {yellow6} {rgb:Hsb} {60,0.67,0.56}
    \__ninecolors_define_one:nnn {yellow7} {rgb:Hsb} {60,0.67,0.66}
    \__ninecolors_define_one:nnn {yellow8} {rgb:Hsb} {60,0.59,0.77}
    \__ninecolors_define_one:nnn {yellow9} {rgb:Hsb} {60,0.27,0.88}
    \__ninecolors_define_one:nnn {olive1} {rgb:Hsb} {90,0.67,0.16}
    \__ninecolors_define_one:nnn {olive2} {rgb:Hsb} {90,0.67,0.25}
    \__ninecolors_define_one:nnn {olive3} {rgb:Hsb} {90,0.67,0.33}
    \__ninecolors_define_one:nnn {olive4} {rgb:Hsb} {90,0.67,0.42}
    \__ninecolors_define_one:nnn {olive5} {rgb:Hsb} {90,0.67,0.51}
    \__ninecolors_define_one:nnn {olive6} {rgb:Hsb} {90,0.67,0.60}
    \__ninecolors_define_one:nnn {olive7} {rgb:Hsb} {90,0.67,0.71}
    \__ninecolors_define_one:nnn {olive8} {rgb:Hsb} {90,0.48,0.81}
    \__ninecolors_define_one:nnn {olive9} {rgb:Hsb} {90,0.22,0.90}
    \__ninecolors_define_one:nnn {green1} {rgb:Hsb} {120,0.67,0.16}
    \__ninecolors_define_one:nnn {green2} {rgb:Hsb} {120,0.67,0.26}
    \__ninecolors_define_one:nnn {green3} {rgb:Hsb} {120,0.67,0.35}
    \__ninecolors_define_one:nnn {green4} {rgb:Hsb} {120,0.67,0.44}
    \__ninecolors_define_one:nnn {green5} {rgb:Hsb} {120,0.67,0.53}
    \__ninecolors_define_one:nnn {green6} {rgb:Hsb} {120,0.67,0.63}
    \__ninecolors_define_one:nnn {green7} {rgb:Hsb} {120,0.67,0.74}
    \__ninecolors_define_one:nnn {green8} {rgb:Hsb} {120,0.42,0.83}
    \__ninecolors_define_one:nnn {green9} {rgb:Hsb} {120,0.19,0.91}
    \__ninecolors_define_one:nnn {teal1} {rgb:Hsb} {150,0.67,0.16}
    \__ninecolors_define_one:nnn {teal2} {rgb:Hsb} {150,0.67,0.26}
    \__ninecolors_define_one:nnn {teal3} {rgb:Hsb} {150,0.67,0.34}
    \__ninecolors_define_one:nnn {teal4} {rgb:Hsb} {150,0.67,0.43}
    \__ninecolors_define_one:nnn {teal5} {rgb:Hsb} {150,0.67,0.52}
    \__ninecolors_define_one:nnn {teal6} {rgb:Hsb} {150,0.67,0.62}
    \__ninecolors_define_one:nnn {teal7} {rgb:Hsb} {150,0.67,0.73}
    \__ninecolors_define_one:nnn {teal8} {rgb:Hsb} {150,0.44,0.82}
    \__ninecolors_define_one:nnn {teal9} {rgb:Hsb} {150,0.20,0.91}
    \__ninecolors_define_one:nnn {cyan1} {rgb:Hsb} {180,0.67,0.16}
    \__ninecolors_define_one:nnn {cyan2} {rgb:Hsb} {180,0.67,0.25}
    \__ninecolors_define_one:nnn {cyan3} {rgb:Hsb} {180,0.67,0.33}
    \__ninecolors_define_one:nnn {cyan4} {rgb:Hsb} {180,0.67,0.42}
    \__ninecolors_define_one:nnn {cyan5} {rgb:Hsb} {180,0.67,0.51}
    \__ninecolors_define_one:nnn {cyan6} {rgb:Hsb} {180,0.67,0.60}
    \__ninecolors_define_one:nnn {cyan7} {rgb:Hsb} {180,0.67,0.71}
    \__ninecolors_define_one:nnn {cyan8} {rgb:Hsb} {180,0.47,0.81}
    \__ninecolors_define_one:nnn {cyan9} {rgb:Hsb} {180,0.21,0.90}
    \__ninecolors_define_one:nnn {azure1} {rgb:Hsb} {210,0.67,0.22}
    \__ninecolors_define_one:nnn {azure2} {rgb:Hsb} {210,0.67,0.35}
    \__ninecolors_define_one:nnn {azure3} {rgb:Hsb} {210,0.67,0.47}
    \__ninecolors_define_one:nnn {azure4} {rgb:Hsb} {210,0.67,0.59}
    \__ninecolors_define_one:nnn {azure5} {rgb:Hsb} {210,0.67,0.71}
    \__ninecolors_define_one:nnn {azure6} {rgb:Hsb} {210,0.56,0.78}
    \__ninecolors_define_one:nnn {azure7} {rgb:Hsb} {210,0.41,0.83}
    \__ninecolors_define_one:nnn {azure8} {rgb:Hsb} {210,0.27,0.88}
    \__ninecolors_define_one:nnn {azure9} {rgb:Hsb} {210,0.13,0.94}
    \__ninecolors_define_one:nnn {blue1} {rgb:Hsb} {240,0.67,0.34}
    \__ninecolors_define_one:nnn {blue2} {rgb:Hsb} {240,0.67,0.53}
    \__ninecolors_define_one:nnn {blue3} {rgb:Hsb} {240,0.67,0.70}
    \__ninecolors_define_one:nnn {blue4} {rgb:Hsb} {240,0.58,0.77}
    \__ninecolors_define_one:nnn {blue5} {rgb:Hsb} {240,0.48,0.81}
    \__ninecolors_define_one:nnn {blue6} {rgb:Hsb} {240,0.39,0.84}
    \__ninecolors_define_one:nnn {blue7} {rgb:Hsb} {240,0.29,0.87}
    \__ninecolors_define_one:nnn {blue8} {rgb:Hsb} {240,0.19,0.91}
    \__ninecolors_define_one:nnn {blue9} {rgb:Hsb} {240,0.10,0.95}
    \__ninecolors_define_one:nnn {violet1} {rgb:Hsb} {270,0.67,0.29}
    \__ninecolors_define_one:nnn {violet2} {rgb:Hsb} {270,0.67,0.45}
    \__ninecolors_define_one:nnn {violet3} {rgb:Hsb} {270,0.67,0.60}
    \__ninecolors_define_one:nnn {violet4} {rgb:Hsb} {270,0.67,0.75}
    \__ninecolors_define_one:nnn {violet5} {rgb:Hsb} {270,0.54,0.79}
    \__ninecolors_define_one:nnn {violet6} {rgb:Hsb} {270,0.43,0.82}
    \__ninecolors_define_one:nnn {violet7} {rgb:Hsb} {270,0.32,0.86}
    \__ninecolors_define_one:nnn {violet8} {rgb:Hsb} {270,0.21,0.90}
    \__ninecolors_define_one:nnn {violet9} {rgb:Hsb} {270,0.11,0.95}
    \__ninecolors_define_one:nnn {magenta1} {rgb:Hsb} {300,0.67,0.23}
    \__ninecolors_define_one:nnn {magenta2} {rgb:Hsb} {300,0.67,0.37}
    \__ninecolors_define_one:nnn {magenta3} {rgb:Hsb} {300,0.67,0.49}
    \__ninecolors_define_one:nnn {magenta4} {rgb:Hsb} {300,0.67,0.61}
    \__ninecolors_define_one:nnn {magenta5} {rgb:Hsb} {300,0.67,0.74}
    \__ninecolors_define_one:nnn {magenta6} {rgb:Hsb} {300,0.51,0.80}
    \__ninecolors_define_one:nnn {magenta7} {rgb:Hsb} {300,0.37,0.84}
    \__ninecolors_define_one:nnn {magenta8} {rgb:Hsb} {300,0.24,0.89}
    \__ninecolors_define_one:nnn {magenta9} {rgb:Hsb} {300,0.12,0.94}
    \__ninecolors_define_one:nnn {purple1} {rgb:Hsb} {330,0.67,0.25}
    \__ninecolors_define_one:nnn {purple2} {rgb:Hsb} {330,0.67,0.39}
    \__ninecolors_define_one:nnn {purple3} {rgb:Hsb} {330,0.67,0.52}
    \__ninecolors_define_one:nnn {purple4} {rgb:Hsb} {330,0.67,0.65}
    \__ninecolors_define_one:nnn {purple5} {rgb:Hsb} {330,0.63,0.76}
    \__ninecolors_define_one:nnn {purple6} {rgb:Hsb} {330,0.48,0.81}
    \__ninecolors_define_one:nnn {purple7} {rgb:Hsb} {330,0.35,0.85}
    \__ninecolors_define_one:nnn {purple8} {rgb:Hsb} {330,0.23,0.90}
    \__ninecolors_define_one:nnn {purple9} {rgb:Hsb} {330,0.11,0.95}
  }

\cs_new_protected_nopar:Npn \__ninecolors_define_colors_medium:
  {
    \__ninecolors_define_one:nnn {red1} {rgb:Hsb} {0,0.79,0.28}
    \__ninecolors_define_one:nnn {red2} {rgb:Hsb} {0,0.79,0.44}
    \__ninecolors_define_one:nnn {red3} {rgb:Hsb} {0,0.79,0.58}
    \__ninecolors_define_one:nnn {red4} {rgb:Hsb} {0,0.79,0.72}
    \__ninecolors_define_one:nnn {red5} {rgb:Hsb} {0,0.72,0.84}
    \__ninecolors_define_one:nnn {red6} {rgb:Hsb} {0,0.54,0.87}
    \__ninecolors_define_one:nnn {red7} {rgb:Hsb} {0,0.40,0.90}
    \__ninecolors_define_one:nnn {red8} {rgb:Hsb} {0,0.26,0.93}
    \__ninecolors_define_one:nnn {red9} {rgb:Hsb} {0,0.13,0.97}
    \__ninecolors_define_one:nnn {brown1} {rgb:Hsb} {30,0.79,0.21}
    \__ninecolors_define_one:nnn {brown2} {rgb:Hsb} {30,0.79,0.33}
    \__ninecolors_define_one:nnn {brown3} {rgb:Hsb} {30,0.79,0.43}
    \__ninecolors_define_one:nnn {brown4} {rgb:Hsb} {30,0.79,0.54}
    \__ninecolors_define_one:nnn {brown5} {rgb:Hsb} {30,0.79,0.66}
    \__ninecolors_define_one:nnn {brown6} {rgb:Hsb} {30,0.79,0.78}
    \__ninecolors_define_one:nnn {brown7} {rgb:Hsb} {30,0.63,0.86}
    \__ninecolors_define_one:nnn {brown8} {rgb:Hsb} {30,0.41,0.90}
    \__ninecolors_define_one:nnn {brown9} {rgb:Hsb} {30,0.20,0.95}
    \__ninecolors_define_one:nnn {yellow1} {rgb:Hsb} {60,0.79,0.15}
    \__ninecolors_define_one:nnn {yellow2} {rgb:Hsb} {60,0.79,0.23}
    \__ninecolors_define_one:nnn {yellow3} {rgb:Hsb} {60,0.79,0.31}
    \__ninecolors_define_one:nnn {yellow4} {rgb:Hsb} {60,0.79,0.39}
    \__ninecolors_define_one:nnn {yellow5} {rgb:Hsb} {60,0.79,0.48}
    \__ninecolors_define_one:nnn {yellow6} {rgb:Hsb} {60,0.79,0.57}
    \__ninecolors_define_one:nnn {yellow7} {rgb:Hsb} {60,0.79,0.66}
    \__ninecolors_define_one:nnn {yellow8} {rgb:Hsb} {60,0.79,0.77}
    \__ninecolors_define_one:nnn {yellow9} {rgb:Hsb} {60,0.46,0.89}
    \__ninecolors_define_one:nnn {olive1} {rgb:Hsb} {90,0.79,0.16}
    \__ninecolors_define_one:nnn {olive2} {rgb:Hsb} {90,0.79,0.25}
    \__ninecolors_define_one:nnn {olive3} {rgb:Hsb} {90,0.79,0.34}
    \__ninecolors_define_one:nnn {olive4} {rgb:Hsb} {90,0.79,0.42}
    \__ninecolors_define_one:nnn {olive5} {rgb:Hsb} {90,0.79,0.51}
    \__ninecolors_define_one:nnn {olive6} {rgb:Hsb} {90,0.79,0.61}
    \__ninecolors_define_one:nnn {olive7} {rgb:Hsb} {90,0.79,0.72}
    \__ninecolors_define_one:nnn {olive8} {rgb:Hsb} {90,0.76,0.83}
    \__ninecolors_define_one:nnn {olive9} {rgb:Hsb} {90,0.34,0.92}
    \__ninecolors_define_one:nnn {green1} {rgb:Hsb} {120,0.79,0.17}
    \__ninecolors_define_one:nnn {green2} {rgb:Hsb} {120,0.79,0.26}
    \__ninecolors_define_one:nnn {green3} {rgb:Hsb} {120,0.79,0.35}
    \__ninecolors_define_one:nnn {green4} {rgb:Hsb} {120,0.79,0.44}
    \__ninecolors_define_one:nnn {green5} {rgb:Hsb} {120,0.79,0.53}
    \__ninecolors_define_one:nnn {green6} {rgb:Hsb} {120,0.79,0.63}
    \__ninecolors_define_one:nnn {green7} {rgb:Hsb} {120,0.79,0.74}
    \__ninecolors_define_one:nnn {green8} {rgb:Hsb} {120,0.64,0.85}
    \__ninecolors_define_one:nnn {green9} {rgb:Hsb} {120,0.28,0.93}
    \__ninecolors_define_one:nnn {teal1} {rgb:Hsb} {150,0.79,0.16}
    \__ninecolors_define_one:nnn {teal2} {rgb:Hsb} {150,0.79,0.26}
    \__ninecolors_define_one:nnn {teal3} {rgb:Hsb} {150,0.79,0.35}
    \__ninecolors_define_one:nnn {teal4} {rgb:Hsb} {150,0.79,0.43}
    \__ninecolors_define_one:nnn {teal5} {rgb:Hsb} {150,0.79,0.53}
    \__ninecolors_define_one:nnn {teal6} {rgb:Hsb} {150,0.79,0.62}
    \__ninecolors_define_one:nnn {teal7} {rgb:Hsb} {150,0.79,0.73}
    \__ninecolors_define_one:nnn {teal8} {rgb:Hsb} {150,0.68,0.85}
    \__ninecolors_define_one:nnn {teal9} {rgb:Hsb} {150,0.30,0.93}
    \__ninecolors_define_one:nnn {cyan1} {rgb:Hsb} {180,0.79,0.16}
    \__ninecolors_define_one:nnn {cyan2} {rgb:Hsb} {180,0.79,0.25}
    \__ninecolors_define_one:nnn {cyan3} {rgb:Hsb} {180,0.79,0.34}
    \__ninecolors_define_one:nnn {cyan4} {rgb:Hsb} {180,0.79,0.42}
    \__ninecolors_define_one:nnn {cyan5} {rgb:Hsb} {180,0.79,0.51}
    \__ninecolors_define_one:nnn {cyan6} {rgb:Hsb} {180,0.79,0.61}
    \__ninecolors_define_one:nnn {cyan7} {rgb:Hsb} {180,0.79,0.71}
    \__ninecolors_define_one:nnn {cyan8} {rgb:Hsb} {180,0.77,0.83}
    \__ninecolors_define_one:nnn {cyan9} {rgb:Hsb} {180,0.32,0.92}
    \__ninecolors_define_one:nnn {azure1} {rgb:Hsb} {210,0.79,0.24}
    \__ninecolors_define_one:nnn {azure2} {rgb:Hsb} {210,0.79,0.38}
    \__ninecolors_define_one:nnn {azure3} {rgb:Hsb} {210,0.79,0.51}
    \__ninecolors_define_one:nnn {azure4} {rgb:Hsb} {210,0.79,0.64}
    \__ninecolors_define_one:nnn {azure5} {rgb:Hsb} {210,0.79,0.77}
    \__ninecolors_define_one:nnn {azure6} {rgb:Hsb} {210,0.67,0.85}
    \__ninecolors_define_one:nnn {azure7} {rgb:Hsb} {210,0.50,0.88}
    \__ninecolors_define_one:nnn {azure8} {rgb:Hsb} {210,0.33,0.92}
    \__ninecolors_define_one:nnn {azure9} {rgb:Hsb} {210,0.17,0.96}
    \__ninecolors_define_one:nnn {blue1} {rgb:Hsb} {240,0.79,0.41}
    \__ninecolors_define_one:nnn {blue2} {rgb:Hsb} {240,0.79,0.64}
    \__ninecolors_define_one:nnn {blue3} {rgb:Hsb} {240,0.77,0.83}
    \__ninecolors_define_one:nnn {blue4} {rgb:Hsb} {240,0.65,0.85}
    \__ninecolors_define_one:nnn {blue5} {rgb:Hsb} {240,0.54,0.87}
    \__ninecolors_define_one:nnn {blue6} {rgb:Hsb} {240,0.43,0.90}
    \__ninecolors_define_one:nnn {blue7} {rgb:Hsb} {240,0.33,0.92}
    \__ninecolors_define_one:nnn {blue8} {rgb:Hsb} {240,0.22,0.94}
    \__ninecolors_define_one:nnn {blue9} {rgb:Hsb} {240,0.11,0.97}
    \__ninecolors_define_one:nnn {violet1} {rgb:Hsb} {270,0.79,0.33}
    \__ninecolors_define_one:nnn {violet2} {rgb:Hsb} {270,0.79,0.52}
    \__ninecolors_define_one:nnn {violet3} {rgb:Hsb} {270,0.79,0.69}
    \__ninecolors_define_one:nnn {violet4} {rgb:Hsb} {270,0.76,0.83}
    \__ninecolors_define_one:nnn {violet5} {rgb:Hsb} {270,0.62,0.86}
    \__ninecolors_define_one:nnn {violet6} {rgb:Hsb} {270,0.49,0.88}
    \__ninecolors_define_one:nnn {violet7} {rgb:Hsb} {270,0.37,0.91}
    \__ninecolors_define_one:nnn {violet8} {rgb:Hsb} {270,0.25,0.94}
    \__ninecolors_define_one:nnn {violet9} {rgb:Hsb} {270,0.13,0.97}
    \__ninecolors_define_one:nnn {magenta1} {rgb:Hsb} {300,0.79,0.25}
    \__ninecolors_define_one:nnn {magenta2} {rgb:Hsb} {300,0.79,0.39}
    \__ninecolors_define_one:nnn {magenta3} {rgb:Hsb} {300,0.79,0.52}
    \__ninecolors_define_one:nnn {magenta4} {rgb:Hsb} {300,0.79,0.65}
    \__ninecolors_define_one:nnn {magenta5} {rgb:Hsb} {300,0.79,0.78}
    \__ninecolors_define_one:nnn {magenta6} {rgb:Hsb} {300,0.62,0.86}
    \__ninecolors_define_one:nnn {magenta7} {rgb:Hsb} {300,0.44,0.89}
    \__ninecolors_define_one:nnn {magenta8} {rgb:Hsb} {300,0.29,0.93}
    \__ninecolors_define_one:nnn {magenta9} {rgb:Hsb} {300,0.14,0.96}
    \__ninecolors_define_one:nnn {purple1} {rgb:Hsb} {330,0.79,0.27}
    \__ninecolors_define_one:nnn {purple2} {rgb:Hsb} {330,0.79,0.42}
    \__ninecolors_define_one:nnn {purple3} {rgb:Hsb} {330,0.79,0.56}
    \__ninecolors_define_one:nnn {purple4} {rgb:Hsb} {330,0.79,0.70}
    \__ninecolors_define_one:nnn {purple5} {rgb:Hsb} {330,0.76,0.83}
    \__ninecolors_define_one:nnn {purple6} {rgb:Hsb} {330,0.57,0.87}
    \__ninecolors_define_one:nnn {purple7} {rgb:Hsb} {330,0.42,0.90}
    \__ninecolors_define_one:nnn {purple8} {rgb:Hsb} {330,0.27,0.93}
    \__ninecolors_define_one:nnn {purple9} {rgb:Hsb} {330,0.14,0.96}
  }

\cs_new_protected_nopar:Npn \__ninecolors_define_colors_high:
  {
    \__ninecolors_define_one:nnn {red1} {rgb:Hsb} {0,0.89,0.30}
    \__ninecolors_define_one:nnn {red2} {rgb:Hsb} {0,0.89,0.46}
    \__ninecolors_define_one:nnn {red3} {rgb:Hsb} {0,0.89,0.61}
    \__ninecolors_define_one:nnn {red4} {rgb:Hsb} {0,0.89,0.76}
    \__ninecolors_define_one:nnn {red5} {rgb:Hsb} {0,0.87,0.90}
    \__ninecolors_define_one:nnn {red6} {rgb:Hsb} {0,0.62,0.93}
    \__ninecolors_define_one:nnn {red7} {rgb:Hsb} {0,0.45,0.95}
    \__ninecolors_define_one:nnn {red8} {rgb:Hsb} {0,0.30,0.96}
    \__ninecolors_define_one:nnn {red9} {rgb:Hsb} {0,0.15,0.98}
    \__ninecolors_define_one:nnn {brown1} {rgb:Hsb} {30,0.89,0.22}
    \__ninecolors_define_one:nnn {brown2} {rgb:Hsb} {30,0.89,0.34}
    \__ninecolors_define_one:nnn {brown3} {rgb:Hsb} {30,0.89,0.46}
    \__ninecolors_define_one:nnn {brown4} {rgb:Hsb} {30,0.89,0.57}
    \__ninecolors_define_one:nnn {brown5} {rgb:Hsb} {30,0.89,0.69}
    \__ninecolors_define_one:nnn {brown6} {rgb:Hsb} {30,0.89,0.82}
    \__ninecolors_define_one:nnn {brown7} {rgb:Hsb} {30,0.77,0.91}
    \__ninecolors_define_one:nnn {brown8} {rgb:Hsb} {30,0.51,0.94}
    \__ninecolors_define_one:nnn {brown9} {rgb:Hsb} {30,0.25,0.97}
    \__ninecolors_define_one:nnn {yellow1} {rgb:Hsb} {60,0.89,0.15}
    \__ninecolors_define_one:nnn {yellow2} {rgb:Hsb} {60,0.89,0.23}
    \__ninecolors_define_one:nnn {yellow3} {rgb:Hsb} {60,0.89,0.31}
    \__ninecolors_define_one:nnn {yellow4} {rgb:Hsb} {60,0.89,0.39}
    \__ninecolors_define_one:nnn {yellow5} {rgb:Hsb} {60,0.89,0.48}
    \__ninecolors_define_one:nnn {yellow6} {rgb:Hsb} {60,0.89,0.57}
    \__ninecolors_define_one:nnn {yellow7} {rgb:Hsb} {60,0.89,0.66}
    \__ninecolors_define_one:nnn {yellow8} {rgb:Hsb} {60,0.89,0.77}
    \__ninecolors_define_one:nnn {yellow9} {rgb:Hsb} {60,0.89,0.90}
    \__ninecolors_define_one:nnn {olive1} {rgb:Hsb} {90,0.89,0.16}
    \__ninecolors_define_one:nnn {olive2} {rgb:Hsb} {90,0.89,0.26}
    \__ninecolors_define_one:nnn {olive3} {rgb:Hsb} {90,0.89,0.34}
    \__ninecolors_define_one:nnn {olive4} {rgb:Hsb} {90,0.89,0.43}
    \__ninecolors_define_one:nnn {olive5} {rgb:Hsb} {90,0.89,0.52}
    \__ninecolors_define_one:nnn {olive6} {rgb:Hsb} {90,0.89,0.61}
    \__ninecolors_define_one:nnn {olive7} {rgb:Hsb} {90,0.89,0.72}
    \__ninecolors_define_one:nnn {olive8} {rgb:Hsb} {90,0.89,0.84}
    \__ninecolors_define_one:nnn {olive9} {rgb:Hsb} {90,0.52,0.94}
    \__ninecolors_define_one:nnn {green1} {rgb:Hsb} {120,0.89,0.17}
    \__ninecolors_define_one:nnn {green2} {rgb:Hsb} {120,0.89,0.27}
    \__ninecolors_define_one:nnn {green3} {rgb:Hsb} {120,0.89,0.35}
    \__ninecolors_define_one:nnn {green4} {rgb:Hsb} {120,0.89,0.44}
    \__ninecolors_define_one:nnn {green5} {rgb:Hsb} {120,0.89,0.54}
    \__ninecolors_define_one:nnn {green6} {rgb:Hsb} {120,0.89,0.64}
    \__ninecolors_define_one:nnn {green7} {rgb:Hsb} {120,0.89,0.75}
    \__ninecolors_define_one:nnn {green8} {rgb:Hsb} {120,0.89,0.87}
    \__ninecolors_define_one:nnn {green9} {rgb:Hsb} {120,0.39,0.95}
    \__ninecolors_define_one:nnn {teal1} {rgb:Hsb} {150,0.89,0.17}
    \__ninecolors_define_one:nnn {teal2} {rgb:Hsb} {150,0.89,0.26}
    \__ninecolors_define_one:nnn {teal3} {rgb:Hsb} {150,0.89,0.35}
    \__ninecolors_define_one:nnn {teal4} {rgb:Hsb} {150,0.89,0.44}
    \__ninecolors_define_one:nnn {teal5} {rgb:Hsb} {150,0.89,0.53}
    \__ninecolors_define_one:nnn {teal6} {rgb:Hsb} {150,0.89,0.63}
    \__ninecolors_define_one:nnn {teal7} {rgb:Hsb} {150,0.89,0.74}
    \__ninecolors_define_one:nnn {teal8} {rgb:Hsb} {150,0.89,0.86}
    \__ninecolors_define_one:nnn {teal9} {rgb:Hsb} {150,0.43,0.95}
    \__ninecolors_define_one:nnn {cyan1} {rgb:Hsb} {180,0.89,0.16}
    \__ninecolors_define_one:nnn {cyan2} {rgb:Hsb} {180,0.89,0.25}
    \__ninecolors_define_one:nnn {cyan3} {rgb:Hsb} {180,0.89,0.34}
    \__ninecolors_define_one:nnn {cyan4} {rgb:Hsb} {180,0.89,0.42}
    \__ninecolors_define_one:nnn {cyan5} {rgb:Hsb} {180,0.89,0.51}
    \__ninecolors_define_one:nnn {cyan6} {rgb:Hsb} {180,0.89,0.61}
    \__ninecolors_define_one:nnn {cyan7} {rgb:Hsb} {180,0.89,0.71}
    \__ninecolors_define_one:nnn {cyan8} {rgb:Hsb} {180,0.89,0.83}
    \__ninecolors_define_one:nnn {cyan9} {rgb:Hsb} {180,0.50,0.94}
    \__ninecolors_define_one:nnn {azure1} {rgb:Hsb} {210,0.89,0.26}
    \__ninecolors_define_one:nnn {azure2} {rgb:Hsb} {210,0.89,0.41}
    \__ninecolors_define_one:nnn {azure3} {rgb:Hsb} {210,0.89,0.55}
    \__ninecolors_define_one:nnn {azure4} {rgb:Hsb} {210,0.89,0.69}
    \__ninecolors_define_one:nnn {azure5} {rgb:Hsb} {210,0.89,0.83}
    \__ninecolors_define_one:nnn {azure6} {rgb:Hsb} {210,0.77,0.91}
    \__ninecolors_define_one:nnn {azure7} {rgb:Hsb} {210,0.58,0.93}
    \__ninecolors_define_one:nnn {azure8} {rgb:Hsb} {210,0.39,0.95}
    \__ninecolors_define_one:nnn {azure9} {rgb:Hsb} {210,0.20,0.98}
    \__ninecolors_define_one:nnn {blue1} {rgb:Hsb} {240,0.89,0.48}
    \__ninecolors_define_one:nnn {blue2} {rgb:Hsb} {240,0.89,0.73}
    \__ninecolors_define_one:nnn {blue3} {rgb:Hsb} {240,0.84,0.90}
    \__ninecolors_define_one:nnn {blue4} {rgb:Hsb} {240,0.70,0.92}
    \__ninecolors_define_one:nnn {blue5} {rgb:Hsb} {240,0.58,0.93}
    \__ninecolors_define_one:nnn {blue6} {rgb:Hsb} {240,0.47,0.94}
    \__ninecolors_define_one:nnn {blue7} {rgb:Hsb} {240,0.36,0.96}
    \__ninecolors_define_one:nnn {blue8} {rgb:Hsb} {240,0.25,0.97}
    \__ninecolors_define_one:nnn {blue9} {rgb:Hsb} {240,0.13,0.98}
    \__ninecolors_define_one:nnn {violet1} {rgb:Hsb} {270,0.89,0.37}
    \__ninecolors_define_one:nnn {violet2} {rgb:Hsb} {270,0.89,0.57}
    \__ninecolors_define_one:nnn {violet3} {rgb:Hsb} {270,0.89,0.75}
    \__ninecolors_define_one:nnn {violet4} {rgb:Hsb} {270,0.85,0.90}
    \__ninecolors_define_one:nnn {violet5} {rgb:Hsb} {270,0.68,0.92}
    \__ninecolors_define_one:nnn {violet6} {rgb:Hsb} {270,0.54,0.94}
    \__ninecolors_define_one:nnn {violet7} {rgb:Hsb} {270,0.41,0.95}
    \__ninecolors_define_one:nnn {violet8} {rgb:Hsb} {270,0.28,0.97}
    \__ninecolors_define_one:nnn {violet9} {rgb:Hsb} {270,0.14,0.98}
    \__ninecolors_define_one:nnn {magenta1} {rgb:Hsb} {300,0.89,0.26}
    \__ninecolors_define_one:nnn {magenta2} {rgb:Hsb} {300,0.89,0.41}
    \__ninecolors_define_one:nnn {magenta3} {rgb:Hsb} {300,0.89,0.54}
    \__ninecolors_define_one:nnn {magenta4} {rgb:Hsb} {300,0.89,0.67}
    \__ninecolors_define_one:nnn {magenta5} {rgb:Hsb} {300,0.89,0.80}
    \__ninecolors_define_one:nnn {magenta6} {rgb:Hsb} {300,0.76,0.91}
    \__ninecolors_define_one:nnn {magenta7} {rgb:Hsb} {300,0.52,0.94}
    \__ninecolors_define_one:nnn {magenta8} {rgb:Hsb} {300,0.33,0.96}
    \__ninecolors_define_one:nnn {magenta9} {rgb:Hsb} {300,0.17,0.98}
    \__ninecolors_define_one:nnn {purple1} {rgb:Hsb} {330,0.89,0.29}
    \__ninecolors_define_one:nnn {purple2} {rgb:Hsb} {330,0.89,0.45}
    \__ninecolors_define_one:nnn {purple3} {rgb:Hsb} {330,0.89,0.59}
    \__ninecolors_define_one:nnn {purple4} {rgb:Hsb} {330,0.89,0.73}
    \__ninecolors_define_one:nnn {purple5} {rgb:Hsb} {330,0.89,0.88}
    \__ninecolors_define_one:nnn {purple6} {rgb:Hsb} {330,0.66,0.92}
    \__ninecolors_define_one:nnn {purple7} {rgb:Hsb} {330,0.47,0.94}
    \__ninecolors_define_one:nnn {purple8} {rgb:Hsb} {330,0.31,0.96}
    \__ninecolors_define_one:nnn {purple9} {rgb:Hsb} {330,0.16,0.98}
  }

\cs_new_protected_nopar:Npn \__ninecolors_define_colors:n #1
  {
    \cs_set_eq:NN \__ninecolors_define_one:nnn \definecolor
    \use:c { __ninecolors_define_colors_ #1 : }
    \bool_if:NT \l__ninecolors_define_latex_three_bool
      {
        \cs_set_eq:NN \__ninecolors_define_one:nnn \color_set:nnn
        \use:c { __ninecolors_define_colors_ #1 : }
      }
  }

\__ninecolors_define_colors:n { mono }
\__ninecolors_define_colors:n { medium }

\tl_new:N \l__ninecolors_sat_tl

\keys_define:nn {ninecolors}
  {
    saturation .choice:,
    saturation .value_required:n = true,
    saturation .choices:nn = { low, medium, high }
      { \tl_set_eq:NN \l__ninecolors_sat_tl \l_keys_choice_tl },
    saturation .initial:n = medium,
  }

\NewDocumentCommand \NineColors {m}
  {
    \keys_set:nn {ninecolors} {#1}
    \exp_args:NV \__ninecolors_define_colors:n \l__ninecolors_sat_tl
  }