% % ***************** THE PASSOPT PACKAGE ***************** % % Copyright (C) 2024 by Qu Yi % % This work may be distributed and/or modified under the % conditions of the CC-BY 4.0 License. % The latest version of this license is in % https://creativecommons.org/licenses/by/4.0/legalcode \NeedsTeXFormat{LaTeX2e}[2021/11/15] \ProvidesExplPackage{passopt}{2024/07/15}{1.01} {Passing options to packages or classes} \cs_generate_variant:Nn \tl_if_blank:nTF { v } \cs_new_protected:Npn \po_add_before_hook:nnn #1#2 { \hook_gput_code:nnn { #1/#2/before } { passopt } } \cs_new_protected:Npn \po_set_options_list:nnnnn #1#2#3#4#5 { \po_add_before_hook:nnn {#1} {#5} { \cs_set:cpx { @raw@opt@#5.#2 } { \IfBooleanTF{#3} {\exp_not:o {#4}} { \tl_if_blank:vTF { @raw@opt@#5.#2 } { \exp_not:o {#4} } { \exp_not:v { @raw@opt@#5.#2 },\exp_not:o {#4} } } } \exp_args:Nc \protected@edef { opt@#5.#2 } { \exp_last_unbraced:Nv \zap@space { @raw@opt@#5.#2 }~\@empty } } } \cs_new_protected:Npn \po_clear_options_list:nnn #1#2#3 { \po_add_before_hook:nnn {#1} {#3} { \tl_clear:c { @raw@opt@#3.#2 } \tl_clear:c { opt@#3.#2 } } } \NewDocumentCommand{\SetOptionsToPackage}{smm} {\po_set_options_list:nnnnn { package } { sty } {#1} {#2} {#3}} \NewDocumentCommand{\SetOptionsToClass}{smm} {\po_set_options_list:nnnnn { class } { cls } {#1} {#2} {#3}} \cs_new_protected:Npn \ClearPackageOptions #1 { \po_clear_options_list:nnn { package } { sty } {#1} } \cs_new_protected:Npn \ClearClassOptions #1 { \po_clear_options_list:nnn { class } { cls } {#1} } \endinput % % End of file `passopt.sty'.