diff options
author | Karl Berry <karl@freefriends.org> | 2022-11-02 22:07:44 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-11-02 22:07:44 +0000 |
commit | 51fe613807b7e6be62212f12b2a53d37161773ca (patch) | |
tree | 7934b814fcf5929bc7260bdfed6d904f8db21479 /Master/texmf-dist/tex/latex/scripture | |
parent | 333424c80728b6b332f3a99398cf99f9197a6bd0 (diff) |
scripture (2nov22)
git-svn-id: svn://tug.org/texlive/trunk@64910 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/scripture')
-rw-r--r-- | Master/texmf-dist/tex/latex/scripture/scripture.sty | 237 |
1 files changed, 208 insertions, 29 deletions
diff --git a/Master/texmf-dist/tex/latex/scripture/scripture.sty b/Master/texmf-dist/tex/latex/scripture/scripture.sty index 613fe5df290..c9f133cdaa3 100644 --- a/Master/texmf-dist/tex/latex/scripture/scripture.sty +++ b/Master/texmf-dist/tex/latex/scripture/scripture.sty @@ -24,14 +24,21 @@ %% This work consists of the files scripture.ins, scripture.dtx, README.md, %% and the derived files scripture.sty and scripture.pdf %% -\NeedsTeXFormat{LaTeX2e}[2021-11-15] -\ProvidesExplPackage{scripture}{2022/08/27}{1.1} +\NeedsTeXFormat{LaTeX2e}[2022-06-01] +\ProvidesExplPackage{scripture}{2022/11/02}{1.2} {Format Scripture Quotations (DCP)} -\RequirePackage{l3keys2e} \msg_new:nnnn { scripture } { nested-environment } { Nesting~of~scripture~environments~not~supported. } { You~have~tried~to~nest~a~scripture~environment~or \\ one~of~its~internal~environments,~which~is~not~supported. } +\msg_new:nnnn { scripture } { language-error } + { Language~`#1'~not~set~up. } + { Language~`#1'~has~not~been~set~up.~Make~sure~you~set~up~languages~ + before~using~the~language~option~of~the~scripture~environment. } +\msg_new:nnnn { scripture } { language-warning } + { Language~requested~without~support. } + { You~have~requested~language=#1,~but~neither~babel~nor~polyglossia~ + have~been~loaded~and~set~up.~Ignoring~option~language=#1. } \keys_define:nn { scripture } { , aboveskip .tl_set:N = \l__scripture_aboveskip_tl @@ -40,18 +47,20 @@ , belowskip .tl_set:N = \l__scripture_belowskip_tl , belowskip .value_required:n = true , belowskip .initial:n = \c_zero_skip + , colour .tl_set:N = \l__scripture_colour_tl + , colour .value_required:n = true + , colour .initial:n = . + , color .meta:n = { colour = { #1 } } , compact .bool_set:N = \l__scripture_compact_bool , compact .default:n = true , compact .initial:n = false - , leftmargin .tl_set:N = \l__scripture_leftmargin_tl - , leftmargin .value_required:n = true - , leftmargin .initial:n = \c_zero_dim - , rightmargin .tl_set:N = \l__scripture_rightmargin_tl - , rightmargin .value_required:n = true - , rightmargin .initial:n = \c_zero_dim , chapter / font .tl_set:N = \l__scripture_chap_font_tl , chapter / font .value_required:n = true , chapter / font .initial:n = \bfseries + , chapter / colour .tl_set:N = \l__scripture_chapter_colour_tl + , chapter / colour .value_required:n = true + , chapter / colour .initial:n = . + , chapter / color .meta:n = { chapter / colour = { #1 } } , chapter / drop .bool_set:N = \l__scripture_chap_drop_bool , chapter / drop .default:n = true , chapter / drop .initial:n = true @@ -77,6 +86,21 @@ , indent .bool_set:N = \l__scripture_indent_bool , indent .default:n = true , indent .initial:n = true + , language .tl_set:N = \l__scripture_language_tl + , language .value_required:n = true + , language .initial:n = + , language / variant .tl_set:N = \l__scripture_language_variant_tl + , language / variant .value_required:n = true + , language / variant .initial:n = + , leftmargin .tl_set:N = \l__scripture_leftmargin_tl + , leftmargin .value_required:n = true + , leftmargin .initial:n = \c_zero_dim + , name / font .tl_set:N = \l__scripture_name_font_tl + , name / font .value_required:n = true + , name / font .initial:n = \scshape + , name / format .cs_set:Np = \__scripture_name_format:n #1 + , name / format .value_required:n = true + , name / format .initial:n = #1 , noindent .bool_set_inverse:N = \l__scripture_indent_bool , noindent .default:n = true , parindent .tl_set:N = \l__scripture_parindent_tl @@ -85,6 +109,17 @@ , parskip .tl_set:N = \l__scripture_parskip_tl , parskip .value_required:n = true , parskip .initial:n = \parskip + , redletter .bool_set:N = \l__scripture_red_letter_bool + , redletter .default:n = true + , redletter .initial:n = false + , redletter / colour .tl_set:N = \l__scripture_red_letter_colour_tl + , redletter / colour .value_required:n = true + , redletter / colour .initial:n = red!80!black + , redletter / color .meta:n = { redletter / colour = { #1 } } + , reference / colour .tl_set:N = \l__scripture_ref_colour_tl + , reference / colour .value_required:n = true + , reference / colour .initial:n = . + , reference / color .meta:n = { reference / colour = { #1 } } , reference / delim .tl_set:N = \l__scripture_ref_delim_tl , reference / delim .value_required:n = true , reference / delim .initial:n = \hfill @@ -97,6 +132,9 @@ , reference / sep .tl_set:N = \l__scripture_ref_sep_tl , reference / sep .value_required:n = true , reference / sep .initial:n = 2 em + , rightmargin .tl_set:N = \l__scripture_rightmargin_tl + , rightmargin .value_required:n = true + , rightmargin .initial:n = \c_zero_dim , selah / text .tl_set:N = \l__scripture_selah_text_tl , selah / text .value_required:n = true , selah / text .initial:n = Selah @@ -109,6 +147,13 @@ , selah / sep .tl_set:N = \l__scripture_selah_sep_tl , selah / sep .value_required:n = true , selah / sep .initial:n = 1 em + , textright / sep .tl_set:N = \l__scripture_text_right_sep_tl + , textright / sep .value_required:n = true + , textright / sep .initial:n = 1 em + , verse / colour .tl_set:N = \l__scripture_verse_colour_tl + , verse / colour .value_required:n = true + , verse / colour .initial:n = . + , verse / color .meta:n = { verse / colour = { #1 } } , verse / font .tl_set:N = \l__scripture_verse_font_tl , verse / font .value_required:n = true , verse / font .initial:n = @@ -215,7 +260,7 @@ , poetry / verse / sep .value_required:n = true , poetry / verse / sep .initial:n = 0.05 em } -\ProcessKeysOptions { scripture } +\ProcessKeyOptions \hook_new_pair:nn { scripture / chap / before } { scripture / chap / after } \hook_new_pair:nn { scripture / verse / before } { scripture / verse / after } \bool_new:N \l__scripture_active_bool @@ -237,25 +282,40 @@ } \cs_new_protected:Nn \__scripture_text_right:nn { - { - \unskip - \hfil - \penalty 50 - \skip_horizontal:n { #1 } - \hbox:n {} - \nobreak - \hfill - #2 - \skip_zero:N \parfillskip - \int_zero:N \finalhyphendemerits - \para_end: - } + \bool_lazy_or:nnTF + { \str_if_eq_p:Vn \l__scripture_currenvir_str { flushright } } + { \str_if_eq_p:Vn \l__scripture_currenvir_str { center } } + { + \unskip + \break + \strut + \hfill + #2 + \para_end: + } + { + { + \unskip + \hfil + \penalty 50 + \skip_horizontal:n { #1 } + \hbox:n {} + \nobreak + \hfill + #2 + \skip_zero:N \parfillskip + \int_zero:N \finalhyphendemerits + \para_end: + } + } } \box_new:N \l__scripture_ref_box \cs_new_protected:Nn \__scripture_format_full_ref:n { \group_begin: \l__scripture_ref_font_tl + \str_if_eq:VnF \l__scripture_ref_colour_tl { . } + { \exp_args:NV \color_select:n \l__scripture_ref_colour_tl } \__scripture_ref_format:n { #1 } \tl_if_empty:NF \l__scripture_version_tl { @@ -282,6 +342,77 @@ \l__scripture_ref_delim_tl \box_use:N \l__scripture_ref_box } +\bool_new:N \g__scripture_red_letter_active_bool + +\cs_new_protected:Nn \__scripture_red_letter_on: + { + \bool_if:NT \l__scripture_red_letter_bool + { + \bool_gset_true:N \g__scripture_red_letter_active_bool + \exp_args:NV \color_select:n \l__scripture_red_letter_colour_tl + \str_if_eq:VnF \l__scripture_currenvir_str { scripture } + { + \hook_gput_next_code:nn { env / \l__scripture_currenvir_str / after } + { + \exp_args:NV \color_select:n \l__scripture_red_letter_colour_tl + } + } + } + } +\cs_new_protected:Nn \__scripture_red_letter_off: + { + \bool_if:NT \l__scripture_red_letter_bool + { + \color_select:n { scripture default colour } + \bool_gset_false:N \g__scripture_red_letter_active_bool + \str_if_eq:VnF \l__scripture_currenvir_str { scripture } + { + \hook_gput_next_code:nn { env / \l__scripture_currenvir_str / after } + { + \color_select:n { scripture default colour } + } + } + } + } +\cs_new_protected:Nn \__scripture_select_language: + { + \tl_if_empty:NF \l__scripture_language_tl + { + \@ifpackageloaded { babel } + { + \selectlanguage { \l__scripture_language_tl } + } + { + \@ifpackageloaded { polyglossia } + { + \iflanguageloaded { \l__scripture_language_tl } + { + \tl_if_empty:NTF \l__scripture_language_variant_tl + { + \selectlanguage { \l__scripture_language_tl } + } + { + \selectlanguage + [ variant = \l__scripture_language_variant_tl ] + { \l__scripture_language_tl } + } + } + { + \msg_error:nnx + { scripture } + { language-error } + { \l__scripture_language_tl } + } + } + { + \msg_warning:nnx + { scripture } + { language-waning } + { \l__scripture_language_tl } + } + } + } + } \box_new:N \l__scripture_chap_box \box_new:N \l__scripture_chap_tmp_box \dim_new:N \l__scripture_chap_fontsize_dim @@ -312,6 +443,8 @@ { \l__scripture_chap_fontsize_dim } { \l__scripture_chap_fontsize_dim } \selectfont + \str_if_eq:VnF \l__scripture_chapter_colour_tl { . } + { \exp_args:NV \color_select:n \l__scripture_chapter_colour_tl } \__scripture_chap_format:n { #1 } } \dim_set:Nn \l__scripture_chap_width_dim @@ -357,8 +490,10 @@ { \hook_use:n { scripture / chap / before } \group_begin: + \str_if_eq:VnF \l__scripture_chapter_colour_tl { . } + { \exp_args:NV \color_select:n \l__scripture_chapter_colour_tl } \l__scripture_chap_font_tl - #1 + \__scripture_chap_format:n { #1 } \group_end: \skip_horizontal:N \l__scripture_chap_sep_tl \hook_use:n { scripture / chap / after } @@ -413,8 +548,12 @@ \hook_use:n { scripture / verse / before } \bool_if:NT \l__scripture_verse_show_bool { + \group_begin: \l__scripture_verse_font_tl + \str_if_eq:VnF \l__scripture_verse_colour_tl { . } + { \exp_args:NV \color_select:n \l__scripture_verse_colour_tl } \__scripture_verse_format:n { #1 } + \group_end: \kern \l__scripture_verse_sep_tl } \hook_use:n { scripture / verse / after } @@ -464,6 +603,7 @@ { \keys_set:nn { scripture } { #1 } } + \__scripture_select_language: \legacy_if:nT { @newlist } { \strut @@ -498,7 +638,28 @@ \bool_gset_false:N \g__scripture_poetry_end_bool \dim_set_eq:NN \parindent \l__scripture_parindent_tl \cs_set_eq:NN \extraskip \__scripture_extra_skip: + \cs_set_eq:NN \redletteron \__scripture_red_letter_on: + \cs_set_eq:NN \redletteroff \__scripture_red_letter_off: \cs_set_eq:NN \vs \__scripture_verse_output:n + \cs_set_protected_nopar:Npn \name ##1 + { + \group_begin: + \l__scripture_name_font_tl + \__scripture_name_format:n { ##1 } + \group_end: + } + \cs_set_protected_nopar:Npn \LORD + { + \name { Lord } + } + \cs_set_protected_nopar:Npn \GOD + { + \name { God } + } + \cs_set_protected_nopar:Npn \textright ##1 + { + \__scripture_text_right:nn { \l__scripture_text_right_sep_tl } { ##1 } + } \hook_gclear_next_code:n { para / before } \skip_set:Nn \l__scripture_parskip_correction_skip { \parskip - \l__scripture_parskip_tl } \mode_if_vertical:T @@ -507,6 +668,11 @@ } \skip_set_eq:NN \parskip \l__scripture_parskip_tl \l__scripture_font_tl + \exp_args:NnV \color_set:nn { scripture default colour } \l__scripture_colour_tl + \str_if_eq:VnF \l__scripture_colour_tl { . } + { + \color_select:n { scripture default colour } + } \bool_lazy_or:nnT { \dim_compare_p:n { \l__scripture_leftmargin_tl > 0pt } } { \dim_compare_p:n { \l__scripture_rightmargin_tl > 0pt } } @@ -540,6 +706,7 @@ } \cs_new_protected:Nn \__scripture_end:n { + \__scripture_red_letter_off: \mode_if_vertical:TF { \unskip @@ -564,10 +731,10 @@ } } { \parshape 1 ~ \@totalleftmargin ~ \linewidth } - \tl_if_novalue:nF { #1 } - { - \__scripture_reference:n { #1 } - } + \bool_lazy_or:nnF + { \tl_if_novalue_p:n { #1 } } + { \tl_if_empty_p:n { #1 } } + { \__scripture_reference:n { #1 } } \par \bool_lazy_or:nnT { \dim_compare_p:n { \l__scripture_leftmargin_tl > 0pt } } @@ -1246,7 +1413,9 @@ \hook_use:n { scripture / chap / before } \group_begin: \l__scripture_chap_font_tl - #1 + \str_if_eq:VnF \l__scripture_chapter_colour_tl { . } + { \exp_args:NV \color_select:n \l__scripture_chapter_colour_tl } + \__scripture_chap_format:n { #1 } \group_end: \skip_horizontal:N \l__scripture_chap_sep_tl \hook_use:n { scripture / chap / after } @@ -1393,6 +1562,10 @@ \cs_set_eq:NN \vs \__scripture_poetry_mode_vertical_verse:n \cs_set_eq:NN \extraskip \__scripture_poetry_extra_skip: \cs_set_eq:NN \selah \__scripture_selah_output: + \cs_set_protected_nopar:Npn \textright ##1 + { + \__scripture_poetry_text_right:nn { \l__scripture_text_right_sep_tl } { ##1 } + } \item \relax \cs_set_eq:NN \__scripture_tmp_para_end: \par @@ -1488,6 +1661,12 @@ \c_space_tl \group_end: } + \cs_set_protected_nopar:Npn \textright ##1 + { + \unskip + \c_space_tl + ##1 + } \mode_leave_vertical: } \peek_remove_spaces:n |