summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2022-11-02 22:07:44 +0000
committerKarl Berry <karl@freefriends.org>2022-11-02 22:07:44 +0000
commit51fe613807b7e6be62212f12b2a53d37161773ca (patch)
tree7934b814fcf5929bc7260bdfed6d904f8db21479 /Master/texmf-dist/tex
parent333424c80728b6b332f3a99398cf99f9197a6bd0 (diff)
scripture (2nov22)
git-svn-id: svn://tug.org/texlive/trunk@64910 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r--Master/texmf-dist/tex/latex/scripture/scripture.sty237
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