%% %% jlreq-deluxe.sty %% %% Copyright (c) 2019-2024 Yukimasa Morimi (h20y6m) %% GitHub: https://github.com/h20y6m %% %% This package is distributed under the MIT License. %% % -------------------------------------------------- \NeedsTeXFormat{pLaTeX2e} \RequirePackage{expl3}[2019-05-03] \ProvidesExplPackage {jlreq-deluxe} {2024-02-18} {0.5.0} {Multi-weight Japanese font for jlreq class} % -------------------------------------------------- % load packeges \RequirePackage{l3keys2e} % -------------------------------------------------- % Variables \tl_new:N \l__jldx_prefix_tl \tl_new:N \l__jldx_scale_tl \bool_new:N \l__jldx_deluxe_bool \bool_new:N \l__jldx_jismmiv_bool \bool_new:N \l__jldx_uplatex_bool \bool_new:N \l__jldx_hanging_punctuation_bool \bool_new:N \l__jldx_zenkakunibu_nibu_bool % -------------------------------------------------- % Messages \msg_new:nnn { jlreq-deluxe } { option-not-available } { The~`#1'~option~is~not~available. } % -------------------------------------------------- % Helpers \prg_new_conditional:Npnn \__jldx_if_class_loaded:n #1 { p , T , F , TF } { \@ifclassloaded {#1} { \prg_return_true: } { \prg_return_false: } } % -------------------------------------------------- %% Options % options for japanese-otf package \keys_define:nn { jlreq-deluxe } { deluxe .bool_set:N = \l__jldx_deluxe_bool, burasage .code:n = { \msg_error:nnn { jlreq-deluxe } { option-not-available } { burasage } }, jis2004 .bool_set:N = \l__jldx_jismmiv_bool, uplatex .bool_set:N = \l__jldx_uplatex_bool, scale .tl_set:N = \l__jldx_scale_tl, } % options for this package \keys_define:nn { jlreq-deluxe } { hanging_punctuation .bool_set:N = \l__jldx_hanging_punctuation_bool, zenkakunibu_nibu .bool_set:N = \l__jldx_zenkakunibu_nibu_bool, } % unknown option \keys_define:nn { jlreq-deluxe } { unknown .code:n = { \PassOptionsToPackage { \CurrentOption } { pxjodel } } } % set default options \keys_set:nn { jlreq-deluxe } { deluxe = true, jis2004 = true, } % process options \ProcessKeysOptions { jlreq-deluxe } % -------------------------------------------------- %% jlreq parameters \__jldx_if_class_loaded:nT { jlreq } { % uplatex \bool_lazy_and:nnT { \token_if_primitive_p:N \ucs } { \int_compare_p:n { \ucs"FA4A = "FA4A } } { \bool_set_true:N \l__jldx_uplatex_bool } % scale \jlreq@divide { \jlreq@jafontsize } { \jlreq@fontsize } \tl_set:Nx \l__jldx_scale_tl { \strip@pt \jlreq@resultdimen } % hanging_punctuation \bool_set:Nn \l__jldx_zenkakunibu_nibu_bool { \str_if_eq_p:no { zenkakunibu_nibu } { \jlreq@open@bracket@pos } } % zenkakunibu_nibu \bool_set:Nn \l__jldx_hanging_punctuation_bool { \legacy_if_p:n { jlreq@burasage } } } % -------------------------------------------------- %% prefix \tl_set:Nn \l__jldx_prefix_tl { jlreq } % zenkakunibu_nibu \bool_if:NT \l__jldx_zenkakunibu_nibu_bool { \tl_put_left:Nn \l__jldx_prefix_tl { z } } % hanging_punctuation \bool_if:NT \l__jldx_hanging_punctuation_bool { \tl_put_left:Nn \l__jldx_prefix_tl { b } } % -------------------------------------------------- % pxjodel % prefix \PassOptionsToPackage { prefix = \l__jldx_prefix_tl } { pxjodel } % deluxe \bool_if:NT \l__jldx_deluxe_bool { \PassOptionsToPackage { deluxe } { pxjodel } } % jis2004 \bool_if:NT \l__jldx_jismmiv_bool { \PassOptionsToPackage { jis2004 } { pxjodel } } % uplatex \bool_if:NT \l__jldx_uplatex_bool { \PassOptionsToPackage { uplatex } { pxjodel } } % scale \tl_if_empty:NF \l__jldx_scale_tl { \PassOptionsToPackage { scale = \l__jldx_scale_tl } { pxjodel } } % load pxjodel package \RequirePackage{pxjodel}