142 lines
4.3 KiB
Plaintext
142 lines
4.3 KiB
Plaintext
\ExplSyntaxOn
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% Class / Package options
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
% Provides class / package option processing of l3keys in LaTeX2e
|
|
\RequirePackage {l3keys2e}
|
|
|
|
% deprecate warning used in options and throughout the collection
|
|
\msg_new:nnn {rpg} {deprecated} { #1 ~ is ~ deprecated ~ and ~ will ~ be ~ removed ~ in ~ version ~ #2. ~ #3 }
|
|
|
|
\cs_new_protected:Npn { \__rpg_deprecated:nnn } #1#2#3
|
|
{
|
|
\msg_warning:nnnnn { rpg } { deprecated } {#1} {#2} {#3}
|
|
}
|
|
|
|
\cs_new_protected:Npn { \__rpg_deprecated:nn } #1#2
|
|
{
|
|
\msg_warning:nnnnn { rpg } { deprecated } {#1} {#2} {}
|
|
}
|
|
|
|
% Messages for unknown options
|
|
\msg_new:nnn {rpg} { options / unknown_class } { Unknown ~ option ~ " #1 " ~ passed ~ to ~ book ~ class. }
|
|
\msg_new:nnn {rpg} { options / unknown_package } { Unknown ~ option ~ " #1 ". }
|
|
|
|
% These booleans are not set directly by an option (i.e. instead set by .code)
|
|
\bool_new:N \l__rpg_show_background_bool
|
|
\bool_new:N \l__rpg_show_footer_scroll_bool
|
|
\bool_new:N \l__rpg_justified_bool
|
|
\bool_new:N \l__rpg_multitoc_bool
|
|
\bool_new:N \l__rpg_layout_bool
|
|
\bool_new:N \l__rpg_no_deprecated_code_bool
|
|
|
|
\bool_set_true:N \l__rpg_multitoc_bool
|
|
\bool_set_eq:NN \l__rpg_layout_bool \c__rpg_isclass_bool
|
|
|
|
% BEGIN section to remove in version 1.0.0
|
|
\bool_set_true:N \l__rpg_layout_bool
|
|
\bool_new:N \l__rpg_layout_set_bool
|
|
% END section to remove in version 1.0.0
|
|
|
|
\keys_define:nn { rpg / options }
|
|
{
|
|
% Large-scale styling choice
|
|
bg .choice:,
|
|
bg / full .code:n =
|
|
{
|
|
\bool_set_true:N \l__rpg_show_background_bool
|
|
\bool_set_true:N \l__rpg_show_footer_scroll_bool
|
|
},
|
|
bg / print .code:n =
|
|
{
|
|
\bool_set_false:N \l__rpg_show_background_bool
|
|
\bool_set_true:N \l__rpg_show_footer_scroll_bool
|
|
},
|
|
bg / none .code:n =
|
|
{
|
|
\bool_set_false:N \l__rpg_show_background_bool
|
|
\bool_set_false:N \l__rpg_show_footer_scroll_bool
|
|
},
|
|
bg .initial:n = full,
|
|
|
|
% Justified text
|
|
justified .code:n =
|
|
{
|
|
\bool_set_true:N \l__rpg_justified_bool
|
|
},
|
|
justified .value_forbidden:n = true,
|
|
|
|
% Suppress deprecated code
|
|
nodeprecatedcode .code:n =
|
|
{
|
|
\bool_set_true:N \l__rpg_no_deprecated_code_bool
|
|
},
|
|
nodeprecatedcode .value_forbidden:n = true,
|
|
|
|
% Avoid multi-column toc
|
|
nomultitoc .code:n =
|
|
{
|
|
\bool_set_false:N \l__rpg_multitoc_bool
|
|
},
|
|
nomultitoc .value_forbidden:n = true,
|
|
|
|
% Apply layout formatting
|
|
%layout .bool_set:N = \l__rpg_layout_bool,
|
|
layout .code:n =
|
|
{
|
|
\tl_if_eq:nnTF {true} {#1}
|
|
{ \bool_set_true:N \l__rpg_layout_bool }
|
|
{ \bool_set_false:N \l__rpg_layout_bool }
|
|
\bool_set_true:N \l__rpg_layout_set_bool
|
|
}, % Remove and replace with .bool_set:N in 1.0.0
|
|
layout .value_required:n = true,
|
|
|
|
% Unknown option handling
|
|
unknown .code:n =
|
|
{
|
|
\bool_if:NTF \c__rpg_isclass_bool
|
|
{
|
|
\msg_info:nnx { rpg } { options / unknown_class } {\l_keys_key_tl}
|
|
\PassOptionsToClass { \l_keys_key_tl } { book }
|
|
}
|
|
{
|
|
\msg_error:nnx { rpg } { options / unknown_package } {\l_keys_key_tl}
|
|
}
|
|
},
|
|
|
|
% Deprecated options
|
|
bg-full .code:n =
|
|
{
|
|
\__rpg_deprecated:nnn { Option ~ "bg-full" } {1.0} { Use ~ "bg = full" ~ instead. }
|
|
\bool_set_true:N \l__rpg_show_background_bool
|
|
\bool_set_true:N \l__rpg_show_footer_scroll_bool
|
|
},
|
|
bg-full .value_forbidden:n = true,
|
|
bg-none .code:n =
|
|
{
|
|
\__rpg_deprecated:nnn { Option ~ "bg-none" } {1.0} { Use ~ "bg = none" ~ instead. }
|
|
},
|
|
bg-none .value_forbidden:n = true,
|
|
bg-print .code:n =
|
|
{
|
|
\__rpg_deprecated:nnn { Option ~ "bg-print" } {1.0} { Use ~ "bg = print" ~ instead. }
|
|
\bool_set_true:N \l__rpg_show_footer_scroll_bool
|
|
},
|
|
bg-print .value_forbidden:n = true,
|
|
}
|
|
|
|
\ProcessKeysOptions { rpg / options }
|
|
|
|
% BEGIN section to remove in version 1.0.0
|
|
\bool_if:NF \c__rpg_isclass_bool
|
|
{
|
|
\bool_if:NF \l__rpg_layout_set_bool
|
|
{
|
|
\msg_new:nnn {rpg} { options / layout_false } { Package ~ option ~ "layout" ~ will ~ default ~ to ~ false ~ in ~ 1.0.0. }
|
|
\msg_warning:nn {rpg} { options / layout_false }
|
|
}
|
|
}
|
|
% END section to remove in version 1.0.0
|