summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/scripture
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-12-28 03:00:45 +0000
committerNorbert Preining <norbert@preining.info>2023-12-28 03:00:45 +0000
commit8806b2d6c55426cb0ba19311d2acf7c4f522a291 (patch)
tree17ec53ef59efff97d2e122e72358b9be18c739df /macros/latex/contrib/scripture
parenta017c8624fa1cc7d2781f6f4e59e4bd12e7050f1 (diff)
CTAN sync 202312280300
Diffstat (limited to 'macros/latex/contrib/scripture')
-rw-r--r--macros/latex/contrib/scripture/scripture.dtx1627
-rw-r--r--macros/latex/contrib/scripture/scripture.pdfbin956076 -> 965221 bytes
2 files changed, 857 insertions, 770 deletions
diff --git a/macros/latex/contrib/scripture/scripture.dtx b/macros/latex/contrib/scripture/scripture.dtx
index c54a361a5a..f4a4f6c6a0 100644
--- a/macros/latex/contrib/scripture/scripture.dtx
+++ b/macros/latex/contrib/scripture/scripture.dtx
@@ -185,10 +185,13 @@
% \changes{v1.1}{2022/08/27}{Bug fixes}
% \changes{v1.2}{2022/11/02}{Bug fixes}
% \changes{v1.3}{2023/01/08}{Bug fixes}
+% \changes{v2.0}{2023/12/26}{Switch \env{scripture} to a \LaTeX{} \env{list}
+% based environment}
+% \changes{v2.0}{2023/12/27}{Bug fixes}
%
% \title{The \pkg{scripture} package}
% \author{David Purton\thanks{Email: \url{dcpurton@marshwiggle.net}}}
-% \date{2023/01/08 v1.3}
+% \date{2023/12/27 v2.0}
%
% \maketitle
%
@@ -248,7 +251,7 @@
% more stretchable space on the page before the incorrect break is enough to
% obtain acceptable output.
%
-% At least version 2022-06-01 of the \LaTeX\ format is required.
+% At least version 2022-11-01 of the \LaTeX\ format is required.
%
% \section{Documentation}
%
@@ -301,6 +304,37 @@
%
% \subsubsection{Functions}
%
+% \changes{v1.3}{2022/11/15}{Add feature to highlight translator added words}
+% \begin{function}[added=2022-11-15]{\added}
+% \begin{syntax}
+% |\added|\marg{words}
+% \end{syntax}
+% Some Bible translations mark out words added for clarity not found in the
+% original language (e.g., in italics). This can be done using the \cs{added}
+% function. The font and format can be set using the \opt{added/font} and
+% \opt{added/format} options.
+% \end{function}
+%
+% \begin{scriptureexample}
+% \begin{verbatim}
+% \begin{scripture}[John 1:18][verse/font=\bfseries,
+% verse/format=#1, verse/sep=0.5em, version=KJV]
+% \vs{18}No man hath seen God at any time, the
+% only begotten Son, which is in the bosom of the
+% Father, he hath declared \added{him}.
+% \end{scripture}
+% \end{verbatim}
+%
+% \tcblower
+%
+% \begin{scripture}[John 1:18][verse/font=\bfseries,
+% verse/format=#1, verse/sep=0.5em, version=KJV]
+% \vs{18}No man hath seen God at any time, the
+% only begotten Son, which is in the bosom of the
+% Father, he hath declared \added{him}.
+% \end{scripture}
+% \end{scriptureexample}
+%
% \begin{function}{\ch, \ch*}
% \begin{syntax}
% |\ch|\marg{chapter number}
@@ -409,37 +443,6 @@
% \end{scripture}
% \end{scriptureexample}
%
-% \changes{v1.3}{2022/11/15}{Add feature to highlight translator added words}
-% \begin{function}[added=2022-11-15]{\added}
-% \begin{syntax}
-% |\added|\marg{words}
-% \end{syntax}
-% Some Bible translations mark out words added for clarity not found in the
-% original language (e.g., in italics). This can be done using the \cs{added}
-% function. The font and format can be set using the \opt{added/font} and
-% \opt{added/format} options.
-% \end{function}
-%
-% \begin{scriptureexample}
-% \begin{verbatim}
-% \begin{scripture}[John 1:18][verse/font=\bfseries,
-% verse/format=#1, verse/sep=0.5em, version=KJV]
-% \vs{18}No man hath seen God at any time, the
-% only begotten Son, which is in the bosom of the
-% Father, he hath declared \added{him}.
-% \end{scripture}
-% \end{verbatim}
-%
-% \tcblower
-%
-% \begin{scripture}[John 1:18][verse/font=\bfseries,
-% verse/format=#1, verse/sep=0.5em, version=KJV]
-% \vs{18}No man hath seen God at any time, the
-% only begotten Son, which is in the bosom of the
-% Father, he hath declared \added{him}.
-% \end{scripture}
-% \end{scriptureexample}
-%
% \changes{v1.2}{2022/09/01}{Add divine name feature}
% \begin{function}[added=2022-09-01]{\name, \LORD, \GOD}
% \begin{syntax}
@@ -592,14 +595,6 @@
% \end{scripture}
% \end{scriptureexample}
%
-% \begin{function}{\scripturesetup}
-% \begin{syntax}
-% |\scripturesetup|\marg{options}
-% \end{syntax}
-% Set default format for quotations. See section \ref{options} for
-% supported formatting \meta{|options|}.
-% \end{function}
-%
% \changes{v1.1}{2022/08/07}{Add \cs{scripturecurrentchapter} and
% \cs{scripturecurrentverse} variables}
% \begin{function}[added=2022-08-07]{\scripturecurrentchapter,
@@ -614,6 +609,25 @@
% example.
% \end{function}
%
+% \begin{function}{\scripturesetup}
+% \begin{syntax}
+% |\scripturesetup|\marg{options}
+% \end{syntax}
+% Set default format for quotations. See section \ref{options} for
+% supported formatting \meta{|options|}.
+% \end{function}
+%
+% \changes{v2.0}{2023/12/27}{Add \cs{scripturestyle} function}
+% \begin{function}[added=2023/12/27]{\scripturestyle, \scripturestyle*}
+% \begin{syntax}
+% |\scripturestyle|\marg{name}\marg{options}
+% |\scripturestyle*|\marg{name}\marg{options}
+% \end{syntax}
+% Set \meta{|options|} which are saved as style with \meta{|name|}. These
+% can later be set with the \opt{style} option. The starred version appends
+% \meta{|options|} to an existing style rather than overwriting all options.
+% \end{function}
+%
% \changes{v1.1}{2022/07/29}{Add \cs{selah} function}
% \begin{function}[added=2022-07-29]{\selah}
% \begin{syntax}
@@ -645,14 +659,6 @@
% \end{scripture}
% \end{scriptureexample}
%
-% \begin{function}{\scripturesetup}
-% \begin{syntax}
-% |\scripturesetup|\marg{options}
-% \end{syntax}
-% Set default format for quotations. See section \ref{options} for
-% supported formatting \meta{|options|}.
-% \end{function}
-%
% \changes{v1.2}{2022/08/30}{Add \cs{textright} function}
% \begin{function}[added=2022-08-30]{\textright}
% \begin{syntax}
@@ -693,15 +699,16 @@
% \end{syntax}
% \cs{textscripture} sets an inline scripture quotation. The quotation is
% surrounded be the values of \opt{inline/begin} and \opt{inline/end} which
-% default to |``\,| and |\,''|, respectively. This function also changes the
-% defaults of some options as follows:
+% default to |``\,| and |\,''|, respectively. This function also sets the
+% \opt{compact} option and places the \val{reference} inline. The reference
+% format can be controlled using the following options:
% \begin{itemize}
-% \item \opt{compact} is set
-% \item \opt{reference/align} is set to |inline|
-% \item \opt{reference/sep} is set to |0.5em|
-% \item \opt{reference/format} is set to |(#1)|
-% \item \opt{version/format} is set to |#1|
+% \item \opt{inline/reference/format}
+% \item \opt{inline/reference/sep}
+% \item \opt{inline/version/delim}
+% \item \opt{inline/version/format}
% \end{itemize}
+% Other \val{reference} and \val{version} options are inherited.
%
% This function is equivalent to using the \env{scripture} environment with
% the \opt{inline} option.
@@ -925,7 +932,8 @@
% \end{environment}
%
% \noindent Environment for typesetting narrow sections of scripture
-% quotations.
+% quotations. If there is no blank line before the start of a \env{narrow}
+% environment the indent will be suppressed.
%
% See section \ref{narrowoptions} for supported formatting \meta{|options|}.
%
@@ -939,6 +947,7 @@
%
% \vs{19}The field commander said to them, `Tell
% Hezekiah:
+%
% \begin{narrow}
% `\thinspace``This is what the great king, the
% king of Assyria, says: on what are you basing
@@ -957,6 +966,7 @@
%
% \vs{19}The field commander said to them, `Tell
% Hezekiah:
+%
% \begin{narrow}
% `\thinspace``This is what the great king, the
% king of Assyria, says: on what are you basing
@@ -1090,8 +1100,7 @@
% \lhead{\textbf{\rightmark}}
% \rhead{\textbf{\leftmark} \textbar\ \thepage}
% \begin{document}
-% \noindent
-% \begin{scripture}
+% \begin{scripture}[][noindent]
% \vs{45}Instead he went out and began to talk
% freely, spreading the news. As a result, Jesus
% could no longer enter a town openly but stayed
@@ -1113,8 +1122,7 @@
%
% \rule[2mm]{\linewidth}{0.4pt}
%
-% \noindent
-% \begin{scripture}
+% \begin{scripture}[][noindent]
% \vs{45}Instead he went out and began to talk
% freely, spreading the news. As a result, Jesus
% could no longer enter a town openly but stayed
@@ -1139,13 +1147,6 @@
% \cs{scripturesetup}|{|\meta{|options|}|}|. Local formatting \meta{|options|}
% can be set by passing them to the various environments described above.
%
-% \textbf{Note:} It's not possible to pass non-expandable macros as key-value
-% options to the optional argument of \cs{usepackage}. So if you want to set
-% |font=|\cs{bfseries} as the default, you must use
-% \cs{scripturesetup}|{font=|\cs{bfseries}|}|. It is not possible to use
-% \cs{usepackage}|[font=|\cs{bfseries}|]{scripture}| (you will get a compile
-% error).
-%
% \begin{option}{aboveskip}
% \begin{syntax}
% aboveskip = \meta{skip} \hfill Default: 0pt
@@ -1409,19 +1410,20 @@
% \changes{v1.3}{2023/01/07}{Add \opt{inline} option}
% \begin{option}[added=2023-01-07]{inline}
% \begin{syntax}
-% inline
+% inline = \meta{boolean} \hfill Default: false
% \end{syntax}
% Set the scripture quotation inline. The quotation is surrounded be the
% values of \opt{inline/begin} and \opt{inline/end} which default to |``\,|
-% and |\,''|, respectively. This option also changes the defaults of some
-% other options as follows:
+% and |\,''|, respectively. This option also sets the \opt{compact} option
+% set sets the \val{reference} inline. The reference format can be
+% controlled using the following options:
% \begin{itemize}
-% \item \opt{compact} is set
-% \item \opt{reference/align} is set to |inline|
-% \item \opt{reference/sep} is set to |0.5em|
-% \item \opt{reference/format} is set to |(#1)|
-% \item \opt{version/format} is set to |#1|
+% \item \opt{inline/reference/format}
+% \item \opt{inline/reference/sep}
+% \item \opt{inline/version/delim}
+% \item \opt{inline/version/format}
% \end{itemize}
+% Other \val{reference} and \val{version} options are inherited.
%
% \textbf{Warning:} \cs{par} is redefined to \cs{relax} when the
% \opt{inline} option is set. If you have anything other than expected
@@ -1448,6 +1450,43 @@
% (if specified).
% \end{option}
%
+% \changes{v2.0}{2023/12/27}{Add \opt{inline/reference/format} option}
+% \begin{option}[added=2023-12-27]{inline/reference/format}
+% \begin{syntax}
+% inline/reference/format = \meta{macro} \hfill Default: (\#1)
+% \end{syntax}
+% \meta{|macro|} used to format the \val{reference} for an inline
+% \env{scripture} quotation. |#1| contains the text of the \val{reference}
+% and \val{version} (if specified).
+% \end{option}
+%
+% \changes{v2.0}{2023/12/27}{Add \opt{inline/reference/sep} option}
+% \begin{option}[added=2023-12-27]{inline/reference/sep}
+% \begin{syntax}
+% inline/reference/sep = \meta{dimen} \hfill Default: 0.5em
+% \end{syntax}
+% The \meta{|dimen|} between the end of an inline \env{scripture} quotation
+% and its \val{reference}.
+% \end{option}
+%
+% \changes{v2.0}{2023/12/27}{Add \opt{inline/version/delim} option}
+% \begin{option}[added=2023-12-27]{inline/version/delim}
+% \begin{syntax}
+% inline/version/delim = \meta{delim} \hfill Default: \{\ \}
+% \end{syntax}
+% \meta{|delim|} to use between the \val{reference} and the \val{version} of
+% an inline \env{scripture} quotation.
+% \end{option}
+%
+% \changes{v2.0}{2023/12/27}{Add \opt{inline/version/format} option}
+% \begin{option}[added=2023-12-27]{inline/version/format}
+% \begin{syntax}
+% inline/version/format = \meta{macro} \hfill Default: \#1
+% \end{syntax}
+% \meta{|macro|} used to format the \val{version} for an inline
+% \env{scripture} quotation. |#1| contains the text of the \val{version}.
+% \end{option}
+%
% \begin{option}{indent}
% \begin{syntax}
% indent = \meta{boolean} \hfill Default: true
@@ -1578,10 +1617,10 @@
% \changes{v1.3}{2023/01/08}{Add \opt{reference/align} option}
% \begin{option}[added=2023-01-08]{reference/align}
% \begin{syntax}
-% reference/align = inline \textbar\ left \textbar\ right \hfill Default: right
+% reference/align = left \textbar\ right \hfill Default: right
% \end{syntax}
-% Set the alignment of the reference. For |left| and |right| the reference
-% will not break across lines, but a line break is permitted for |inline|.
+% Set the alignment of the reference. Note that in neither case will the
+% reference break across lines.
% \end{option}
%
% \changes{v1.2}{2022/09/07}{Add \opt{reference/colour} option}
@@ -1669,6 +1708,15 @@
% \meta{|text|} used to for \cs{selah} in a \env{poetry} environment.
% \end{option}
%
+% \changes{v2.0}{2023/12/27}{Add \opt{style} option}
+% \begin{option}[added=2023/12/27]{style}
+% \begin{syntax}
+% style = \meta{name}
+% \end{syntax}
+% Set options previously saved with \cs{scripturestyle}. An error occurs if
+% the style isn't defined.
+% \end{option}
+%
% \changes{v1.2}{2022/08/30}{Add \opt{textright/sep} option}
% \begin{option}[added=2022-08-30]{textright/sep}
% \begin{syntax}
@@ -1814,7 +1862,7 @@
% \changes{v1.1}{2022/07/28}{Add \opt{verse/sep} option with small default}
% \begin{option}[added=2022-07-28]{verse/sep}
% \begin{syntax}
-% verse/sep = \meta{dimen} \hfill Default: 0.05 em
+% verse/sep = \meta{dimen} \hfill Default: 0.05em
% \end{syntax}
% \meta{|dimen|} used to separate a \cs{vs} from the following text.
% \end{option}
@@ -2211,8 +2259,8 @@
% \end{macrocode}
%
% \begin{macrocode}
-\NeedsTeXFormat{LaTeX2e}[2022-06-01]
-\ProvidesExplPackage{scripture}{2023/01/08}{1.3}
+\NeedsTeXFormat{LaTeX2e}[2022-11-01]
+\ProvidesExplPackage{scripture}{2023/12/27}{2.0}
{Format Scripture Quotations (DCP)}
% \end{macrocode}
%
@@ -2247,6 +2295,16 @@
have~been~loaded~and~set~up.~Ignoring~option~language=#1. }
% \end{macrocode}
%
+% Error if an unknown \opt{style} is requested.
+%
+% \begin{macrocode}
+\msg_new:nnnn { scripture } { unknown-style }
+ { Style~#1~not~defined. }
+ { You~have~requested~style=#1,~but~it~has~not~been~defined.~
+ You~can~define~it~using~\token_to_str:N \scripturestyle.~
+ Ignoring~option~style=#1. }
+% \end{macrocode}
+%
% \subsection{Options}
%
% Key-value settings for the \env{scripture} environment and its inner
@@ -2254,284 +2312,293 @@
% \begin{macrocode}
\keys_define:nn { scripture }
{
- , aboveskip .tl_set:N = \l_@@_aboveskip_tl
- , aboveskip .value_required:n = true
- , aboveskip .initial:n = \c_zero_skip
- , added / font .tl_set:N = \l_@@_added_font_tl
- , added / font .value_required:n = true
- , added / font .initial:n =
- , added / format .cs_set:Np = \@@_added_format:n #1
- , added / format .value_required:n = true
- , added / format .initial:n = \emph { #1 }
- , belowskip .tl_set:N = \l_@@_belowskip_tl
- , belowskip .value_required:n = true
- , belowskip .initial:n = \c_zero_skip
- , colour .tl_set:N = \l_@@_colour_tl
- , colour .value_required:n = true
- , colour .initial:n = .
- , color .meta:n = { colour = { #1 } }
- , compact .bool_set:N = \l_@@_compact_bool
- , compact .default:n = true
- , compact .initial:n = false
- , chapter / font .tl_set:N = \l_@@_chap_font_tl
- , chapter / font .value_required:n = true
- , chapter / font .initial:n = \bfseries
- , chapter / colour .tl_set:N = \l_@@_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_@@_chap_drop_bool
- , chapter / drop .default:n = true
- , chapter / drop .initial:n = true
- , chapter / format .cs_set:Np = \@@_chap_format:n #1
- , chapter / format .value_required:n = true
- , chapter / format .initial:n = #1
- , chapter / hide .bool_set_inverse:N = \l_@@_chap_show_bool
- , chapter / hide .default:n = true
- , chapter / nodrop .bool_set_inverse:N = \l_@@_chap_drop_bool
- , chapter / nodrop .default:n = true
- , chapter / sep .tl_set:N = \l_@@_chap_sep_tl
- , chapter / sep .value_required:n = true
- , chapter / sep .initial:n = 0.5 em
- , chapter / show .bool_set:N = \l_@@_chap_show_bool
- , chapter / show .default:n = true
- , chapter / show .initial:n = true
- , chapter / showverse .bool_set:N = \l_@@_chap_show_verse_bool
- , chapter / showverse .default:n = true
- , chapter / showverse .initial:n = false
- , extraskip .tl_set:N = \l_@@_extraskip_tl
- , extraskip .value_required:n = true
- , extraskip .initial:n = \medskipamount
- , font .tl_set:N = \l_@@_font_tl
- , font .value_required:n = true
- , font .initial:n =
- , indent .bool_set:N = \l_@@_indent_bool
- , indent .default:n = true
- , indent .initial:n = true
- , _inline .bool_set:N = \l_@@_inline_bool
- , _inline .initial:n = false
- , inline .meta:n = {
- _inline = true ,
- compact ,
- reference / format = (##1) ,
- reference / align = inline ,
- reference / sep = 0.5 em,
- version / format = ##1
- }
- , inline .value_forbidden:n = true
- , inline / begin .tl_set:N = \l_@@_inline_begin_tl
- , inline / begin .value_required:n = true
- , inline / begin .initial:n = ``\,
- , inline / end .tl_set:N = \l_@@_inline_end_tl
- , inline / end .value_required:n = true
- , inline / end .initial:n = \,''
- , language .tl_set:N = \l_@@_language_tl
- , language .value_required:n = true
- , language .initial:n =
- , language / variant .tl_set:N = \l_@@_language_variant_tl
- , language / variant .value_required:n = true
- , language / variant .initial:n =
- , leftmargin .tl_set:N = \l_@@_leftmargin_tl
- , leftmargin .value_required:n = true
- , leftmargin .initial:n = \c_zero_dim
- , name / font .tl_set:N = \l_@@_name_font_tl
- , name / font .value_required:n = true
- , name / font .initial:n = \scshape
- , name / format .cs_set:Np = \@@_name_format:n #1
- , name / format .value_required:n = true
- , name / format .initial:n = #1
- , noindent .bool_set_inverse:N = \l_@@_indent_bool
- , noindent .default:n = true
- , parindent .tl_set:N = \l_@@_parindent_tl
- , parindent .value_required:n = true
- , parindent .initial:n = \parindent
- , parskip .tl_set:N = \l_@@_parskip_tl
- , parskip .value_required:n = true
- , parskip .initial:n = \parskip
- , redletter .bool_set:N = \l_@@_red_letter_bool
- , redletter .default:n = true
- , redletter .initial:n = false
- , redletter / colour .tl_set:N = \l_@@_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 / align .choices:nn = { inline, left, right }
- {
- \tl_if_exist:NF \l_@@_ref_align_tl
- { \tl_new:N \l_@@_ref_align_tl }
- \tl_set_eq:NN \l_@@_ref_align_tl \l_keys_choice_tl
- }
- , reference / align .value_required:n = true
- , reference / align .initial:n = right
- , reference / colour .tl_set:N = \l_@@_ref_colour_tl
- , reference / colour .value_required:n = true
- , reference / colour .initial:n = .
- , reference / color .meta:n = { reference / colour = { #1 } }
- , reference / font .tl_set:N = \l_@@_ref_font_tl
- , reference / font .value_required:n = true
- , reference / font .initial:n = \bfseries
- , reference / format .cs_set:Np = \@@_ref_format:n #1
- , reference / format .value_required:n = true
- , reference / format .initial:n = #1
- , reference / newline .meta:n = { reference / sep = \linewidth }
- , reference / newline .value_forbidden:n = true
- , reference / sep .tl_set:N = \l_@@_ref_sep_tl
- , reference / sep .value_required:n = true
- , reference / sep .initial:n = 2 em
- , rightmargin .tl_set:N = \l_@@_rightmargin_tl
- , rightmargin .value_required:n = true
- , rightmargin .initial:n = \c_zero_dim
- , selah / text .tl_set:N = \l_@@_selah_text_tl
- , selah / text .value_required:n = true
- , selah / text .initial:n = Selah
- , selah / font .tl_set:N = \l_@@_selah_font_tl
- , selah / font .value_required:n = true
- , selah / font .initial:n = \itshape
- , selah / format .cs_set:Np = \@@_selah_format:n #1
- , selah / format .value_required:n = true
- , selah / format .initial:n = #1
- , selah / sep .tl_set:N = \l_@@_selah_sep_tl
- , selah / sep .value_required:n = true
- , selah / sep .initial:n = 1 em
- , textright / sep .tl_set:N = \l_@@_text_right_sep_tl
- , textright / sep .value_required:n = true
- , textright / sep .initial:n = 1 em
- , verse / colour .tl_set:N = \l_@@_verse_colour_tl
- , verse / colour .value_required:n = true
- , verse / colour .initial:n = .
- , verse / color .meta:n = { verse / colour = { #1 } }
- , verse / first .bool_set:N = \l_@@_verse_first_bool
- , verse / first .default:n = true
- , verse / first .initial:n = false
- , verse / firstformat .cs_set:Np = \@@_verse_first_format:n #1
- , verse / firstformat .value_required:n = true
- , verse / firstformat .initial:n = #1
- , verse / firstsep .tl_set:N = \l_@@_verse_first_sep_tl
- , verse / firstsep .value_required:n = true
- , verse / firstsep .initial:n = 0.5em
- , verse / font .tl_set:N = \l_@@_verse_font_tl
- , verse / font .value_required:n = true
- , verse / font .initial:n =
- , verse / format .cs_set:Np = \@@_verse_format:n #1
- , verse / format .value_required:n = true
- , verse / format .initial:n = \textsuperscript{#1}
- , verse / hide .bool_set_inverse:N = \l_@@_verse_show_bool
- , verse / hide .default:n = true
- , verse / sep .tl_set:N = \l_@@_verse_sep_tl
- , verse / sep .value_required:n = true
- , verse / sep .initial:n = 0.05 em
- , verse / show .bool_set:N = \l_@@_verse_show_bool
- , verse / show .default:n = true
- , verse / show .initial:n = true
- , version .tl_set:N = \l_@@_version_tl
- , version .value_required:n = true
- , version .initial:n =
- , version / delim .tl_set:N = \l_@@_version_delim_tl
- , version / delim .value_required:n = true
- , version / delim .initial:n = \c_space_tl
- , version / format .cs_set:Np = \@@_version_format:n #1
- , version / format .value_required:n = true
- , version / format .initial:n = (#1)
+ , aboveskip .tl_set:N = \l_@@_aboveskip_tl
+ , aboveskip .value_required:n = true
+ , aboveskip .initial:n = \c_zero_skip
+ , added / font .tl_set:N = \l_@@_added_font_tl
+ , added / font .value_required:n = true
+ , added / font .initial:n =
+ , added / format .cs_set:Np = \@@_added_format:n #1
+ , added / format .value_required:n = true
+ , added / format .initial:n = \emph { #1 }
+ , belowskip .tl_set:N = \l_@@_belowskip_tl
+ , belowskip .value_required:n = true
+ , belowskip .initial:n = \c_zero_skip
+ , colour .tl_set:N = \l_@@_colour_tl
+ , colour .value_required:n = true
+ , colour .initial:n = .
+ , color .meta:n = { colour = { #1 } }
+ , compact .bool_set:N = \l_@@_compact_bool
+ , compact .default:n = true
+ , compact .initial:n = false
+ , chapter / font .tl_set:N = \l_@@_chap_font_tl
+ , chapter / font .value_required:n = true
+ , chapter / font .initial:n = \bfseries
+ , chapter / colour .tl_set:N = \l_@@_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_@@_chap_drop_bool
+ , chapter / drop .default:n = true
+ , chapter / drop .initial:n = true
+ , chapter / format .cs_set:Np = \@@_chap_format:n #1
+ , chapter / format .value_required:n = true
+ , chapter / format .initial:n = #1
+ , chapter / hide .bool_set_inverse:N = \l_@@_chap_show_bool
+ , chapter / hide .default:n = true
+ , chapter / nodrop .bool_set_inverse:N = \l_@@_chap_drop_bool
+ , chapter / nodrop .default:n = true
+ , chapter / sep .tl_set:N = \l_@@_chap_sep_tl
+ , chapter / sep .value_required:n = true
+ , chapter / sep .initial:n = 0.5 em
+ , chapter / show .bool_set:N = \l_@@_chap_show_bool
+ , chapter / show .default:n = true
+ , chapter / show .initial:n = true
+ , chapter / showverse .bool_set:N = \l_@@_chap_show_verse_bool
+ , chapter / showverse .default:n = true
+ , chapter / showverse .initial:n = false
+ , extraskip .tl_set:N = \l_@@_extraskip_tl
+ , extraskip .value_required:n = true
+ , extraskip .initial:n = \medskipamount
+ , font .tl_set:N = \l_@@_font_tl
+ , font .value_required:n = true
+ , font .initial:n =
+ , indent .bool_set:N = \l_@@_indent_bool
+ , indent .default:n = true
+ , indent .initial:n = true
+ , inline .bool_set:N = \l_@@_inline_bool
+ , inline .default:n = true
+ , inline .initial:n = false
+ , inline / begin .tl_set:N = \l_@@_inline_begin_tl
+ , inline / begin .value_required:n = true
+ , inline / begin .initial:n = ``\,
+ , inline / end .tl_set:N = \l_@@_inline_end_tl
+ , inline / end .value_required:n = true
+ , inline / end .initial:n = \,''
+ , inline / reference / format .cs_set:Np = \@@_inline_ref_format:n #1
+ , inline / reference / format .value_required:n = true
+ , inline / reference / format .initial:n = (#1)
+ , inline / reference / sep .tl_set:N = \l_@@_inline_ref_sep_tl
+ , inline / reference / sep .value_required:n = true
+ , inline / reference / sep .initial:n = 0.5 em
+ , inline / version / delim .tl_set:N = \l_@@_inline_version_delim_tl
+ , inline / version / delim .value_required:n = true
+ , inline / version / delim .initial:n = \c_space_tl
+ , inline / version / format .cs_set:Np = \@@_inline_version_format:n #1
+ , inline / version / format .value_required:n = true
+ , inline / version / format .initial:n = #1
+ , language .tl_set:N = \l_@@_language_tl
+ , language .value_required:n = true
+ , language .initial:n =
+ , language / variant .tl_set:N = \l_@@_language_variant_tl
+ , language / variant .value_required:n = true
+ , language / variant .initial:n =
+ , leftmargin .tl_set:N = \l_@@_leftmargin_tl
+ , leftmargin .value_required:n = true
+ , leftmargin .initial:n = \c_zero_dim
+ , name / font .tl_set:N = \l_@@_name_font_tl
+ , name / font .value_required:n = true
+ , name / font .initial:n = \scshape
+ , name / format .cs_set:Np = \@@_name_format:n #1
+ , name / format .value_required:n = true
+ , name / format .initial:n = #1
+ , noindent .bool_set_inverse:N = \l_@@_indent_bool
+ , noindent .default:n = true
+ , parindent .tl_set:N = \l_@@_parindent_tl
+ , parindent .value_required:n = true
+ , parindent .initial:n = \parindent
+ , parskip .tl_set:N = \l_@@_parskip_tl
+ , parskip .value_required:n = true
+ , parskip .initial:n = \parskip
+ , redletter .bool_set:N = \l_@@_red_letter_bool
+ , redletter .default:n = true
+ , redletter .initial:n = false
+ , redletter / colour .tl_set:N = \l_@@_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 / align .choices:nn = { left, right }
+ {
+ \tl_if_exist:NF \l_@@_ref_align_tl
+ { \tl_new:N \l_@@_ref_align_tl }
+ \tl_set_eq:NN \l_@@_ref_align_tl \l_keys_choice_tl
+ }
+ , reference / align .value_required:n = true
+ , reference / align .initial:n = right
+ , reference / colour .tl_set:N = \l_@@_ref_colour_tl
+ , reference / colour .value_required:n = true
+ , reference / colour .initial:n = .
+ , reference / color .meta:n = { reference / colour = { #1 } }
+ , reference / font .tl_set:N = \l_@@_ref_font_tl
+ , reference / font .value_required:n = true
+ , reference / font .initial:n = \bfseries
+ , reference / format .cs_set:Np = \@@_ref_format:n #1
+ , reference / format .value_required:n = true
+ , reference / format .initial:n = #1
+ , reference / newline .meta:n = { reference / sep = \linewidth }
+ , reference / newline .value_forbidden:n = true
+ , reference / sep .tl_set:N = \l_@@_ref_sep_tl
+ , reference / sep .value_required:n = true
+ , reference / sep .initial:n = 2 em
+ , rightmargin .tl_set:N = \l_@@_rightmargin_tl
+ , rightmargin .value_required:n = true
+ , rightmargin .initial:n = \c_zero_dim
+ , selah / text .tl_set:N = \l_@@_selah_text_tl
+ , selah / text .value_required:n = true
+ , selah / text .initial:n = Selah
+ , selah / font .tl_set:N = \l_@@_selah_font_tl
+ , selah / font .value_required:n = true
+ , selah / font .initial:n = \itshape
+ , selah / format .cs_set:Np = \@@_selah_format:n #1
+ , selah / format .value_required:n = true
+ , selah / format .initial:n = #1
+ , selah / sep .tl_set:N = \l_@@_selah_sep_tl
+ , selah / sep .value_required:n = true
+ , selah / sep .initial:n = 1 em
+ , style .choice:
+ , style / unknown .code:n = \msg_error:nnx
+ { scripture }
+ { unknown-style }
+ { \exp_not:n {#1} }
+ , textright / sep .tl_set:N = \l_@@_text_right_sep_tl
+ , textright / sep .value_required:n = true
+ , textright / sep .initial:n = 1 em
+ , verse / colour .tl_set:N = \l_@@_verse_colour_tl
+ , verse / colour .value_required:n = true
+ , verse / colour .initial:n = .
+ , verse / color .meta:n = { verse / colour = { #1 } }
+ , verse / first .bool_set:N = \l_@@_verse_first_bool
+ , verse / first .default:n = true
+ , verse / first .initial:n = false
+ , verse / firstformat .cs_set:Np = \@@_verse_first_format:n #1
+ , verse / firstformat .value_required:n = true
+ , verse / firstformat .initial:n = #1
+ , verse / firstsep .tl_set:N = \l_@@_verse_first_sep_tl
+ , verse / firstsep .value_required:n = true
+ , verse / firstsep .initial:n = 0.5em
+ , verse / font .tl_set:N = \l_@@_verse_font_tl
+ , verse / font .value_required:n = true
+ , verse / font .initial:n =
+ , verse / format .cs_set:Np = \@@_verse_format:n #1
+ , verse / format .value_required:n = true
+ , verse / format .initial:n = \textsuperscript{#1}
+ , verse / hide .bool_set_inverse:N = \l_@@_verse_show_bool
+ , verse / hide .default:n = true
+ , verse / sep .tl_set:N = \l_@@_verse_sep_tl
+ , verse / sep .value_required:n = true
+ , verse / sep .initial:n = 0.05 em
+ , verse / show .bool_set:N = \l_@@_verse_show_bool
+ , verse / show .default:n = true
+ , verse / show .initial:n = true
+ , version .tl_set:N = \l_@@_version_tl
+ , version .value_required:n = true
+ , version .initial:n =
+ , version / delim .tl_set:N = \l_@@_version_delim_tl
+ , version / delim .value_required:n = true
+ , version / delim .initial:n = \c_space_tl
+ , version / format .cs_set:Np = \@@_version_format:n #1
+ , version / format .value_required:n = true
+ , version / format .initial:n = (#1)
% \end{macrocode}
% Options for the \env{center} environment.
% \begin{macrocode}
- , center / aboveskip .tl_set:N = \l_@@_center_aboveskip_tl
- , center / aboveskip .value_required:n = true
- , center / aboveskip .initial:n = \medskipamount
- , center / belowskip .tl_set:N = \l_@@_center_belowskip_tl
- , center / belowskip .value_required:n = true
- , center / belowskip .initial:n = \medskipamount
- , center / leftmargin .tl_set:N = \l_@@_center_leftmargin_tl
- , center / leftmargin .value_required:n = true
- , center / leftmargin .initial:n = \c_zero_dim
- , center / rightmargin .tl_set:N = \l_@@_center_rightmargin_tl
- , center / rightmargin .value_required:n = true
- , center / rightmargin .initial:n = \c_zero_dim
+ , center / aboveskip .tl_set:N = \l_@@_center_aboveskip_tl
+ , center / aboveskip .value_required:n = true
+ , center / aboveskip .initial:n = \medskipamount
+ , center / belowskip .tl_set:N = \l_@@_center_belowskip_tl
+ , center / belowskip .value_required:n = true
+ , center / belowskip .initial:n = \medskipamount
+ , center / leftmargin .tl_set:N = \l_@@_center_leftmargin_tl
+ , center / leftmargin .value_required:n = true
+ , center / leftmargin .initial:n = \c_zero_dim
+ , center / rightmargin .tl_set:N = \l_@@_center_rightmargin_tl
+ , center / rightmargin .value_required:n = true
+ , center / rightmargin .initial:n = \c_zero_dim
% \end{macrocode}
% Options for the \env{flushright} environment.
% \begin{macrocode}
- , flushright / aboveskip .tl_set:N = \l_@@_flushright_aboveskip_tl
- , flushright / aboveskip .value_required:n = true
- , flushright / aboveskip .initial:n = \medskipamount
- , flushright / belowskip .tl_set:N = \l_@@_flushright_belowskip_tl
- , flushright / belowskip .value_required:n = true
- , flushright / belowskip .initial:n = \medskipamount
- , flushright / leftmargin .tl_set:N = \l_@@_flushright_leftmargin_tl
- , flushright / leftmargin .value_required:n = true
- , flushright / leftmargin .initial:n = \c_zero_dim
- , flushright / rightmargin .tl_set:N = \l_@@_flushright_rightmargin_tl
- , flushright / rightmargin .value_required:n = true
- , flushright / rightmargin .initial:n = \c_zero_dim
+ , flushright / aboveskip .tl_set:N = \l_@@_flushright_aboveskip_tl
+ , flushright / aboveskip .value_required:n = true
+ , flushright / aboveskip .initial:n = \medskipamount
+ , flushright / belowskip .tl_set:N = \l_@@_flushright_belowskip_tl
+ , flushright / belowskip .value_required:n = true
+ , flushright / belowskip .initial:n = \medskipamount
+ , flushright / leftmargin .tl_set:N = \l_@@_flushright_leftmargin_tl
+ , flushright / leftmargin .value_required:n = true
+ , flushright / leftmargin .initial:n = \c_zero_dim
+ , flushright / rightmargin .tl_set:N = \l_@@_flushright_rightmargin_tl
+ , flushright / rightmargin .value_required:n = true
+ , flushright / rightmargin .initial:n = \c_zero_dim
% \end{macrocode}
% Options for the \env{hanging} environment.
% \begin{macrocode}
- , hanging / aboveskip .tl_set:N = \l_@@_hanging_aboveskip_tl
- , hanging / aboveskip .value_required:n = true
- , hanging / aboveskip .initial:n = \medskipamount
- , hanging / belowskip .tl_set:N = \l_@@_hanging_belowskip_tl
- , hanging / belowskip .value_required:n = true
- , hanging / belowskip .initial:n = \medskipamount
- , hanging / hang .tl_set:N = \l_@@_hanging_hang_tl
- , hanging / hang .value_required:n = true
- , hanging / hang .initial:n = 2 em
- , hanging / leftmargin .tl_set:N = \l_@@_hanging_leftmargin_tl
- , hanging / leftmargin .value_required:n = true
- , hanging / leftmargin .initial:n = 1 em
- , hanging / rightmargin .tl_set:N = \l_@@_hanging_rightmargin_tl
- , hanging / rightmargin .value_required:n = true
- , hanging / rightmargin .initial:n = \c_zero_dim
+ , hanging / aboveskip .tl_set:N = \l_@@_hanging_aboveskip_tl
+ , hanging / aboveskip .value_required:n = true
+ , hanging / aboveskip .initial:n = \medskipamount
+ , hanging / belowskip .tl_set:N = \l_@@_hanging_belowskip_tl
+ , hanging / belowskip .value_required:n = true
+ , hanging / belowskip .initial:n = \medskipamount
+ , hanging / hang .tl_set:N = \l_@@_hanging_hang_tl
+ , hanging / hang .value_required:n = true
+ , hanging / hang .initial:n = 2 em
+ , hanging / leftmargin .tl_set:N = \l_@@_hanging_leftmargin_tl
+ , hanging / leftmargin .value_required:n = true
+ , hanging / leftmargin .initial:n = 1 em
+ , hanging / rightmargin .tl_set:N = \l_@@_hanging_rightmargin_tl
+ , hanging / rightmargin .value_required:n = true
+ , hanging / rightmargin .initial:n = \c_zero_dim
% \end{macrocode}
% Options for the mid-paragraph chapters (including the \env{midparachap} environment).
% \begin{macrocode}
- , midparachap / hideverse .bool_set_inverse:N = \l_@@_midparachap_show_verse_bool
- , midparachap / hideverse .default:n = true
- , midparachap / showverse .bool_set:N = \l_@@_midparachap_show_verse_bool
- , midparachap / showverse .default:n = true
- , midparachap / showverse .initial:n = true
+ , midparachap / hideverse .bool_set_inverse:N = \l_@@_midparachap_show_verse_bool
+ , midparachap / hideverse .default:n = true
+ , midparachap / showverse .bool_set:N = \l_@@_midparachap_show_verse_bool
+ , midparachap / showverse .default:n = true
+ , midparachap / showverse .initial:n = true
% \end{macrocode}
% Options for the \env{narrow} environment.
% \begin{macrocode}
- , narrow / aboveskip .tl_set:N = \l_@@_narrow_aboveskip_tl
- , narrow / aboveskip .value_required:n = true
- , narrow / aboveskip .initial:n = \medskipamount
- , narrow / belowskip .tl_set:N = \l_@@_narrow_belowskip_tl
- , narrow / belowskip .value_required:n = true
- , narrow / belowskip .initial:n = \medskipamount
- , narrow / leftmargin .tl_set:N = \l_@@_narrow_leftmargin_tl
- , narrow / leftmargin .value_required:n = true
- , narrow / leftmargin .initial:n = 1 em
- , narrow / rightmargin .tl_set:N = \l_@@_narrow_rightmargin_tl
- , narrow / rightmargin .value_required:n = true
- , narrow / rightmargin .initial:n = 1 em
+ , narrow / aboveskip .tl_set:N = \l_@@_narrow_aboveskip_tl
+ , narrow / aboveskip .value_required:n = true
+ , narrow / aboveskip .initial:n = \medskipamount
+ , narrow / belowskip .tl_set:N = \l_@@_narrow_belowskip_tl
+ , narrow / belowskip .value_required:n = true
+ , narrow / belowskip .initial:n = \medskipamount
+ , narrow / leftmargin .tl_set:N = \l_@@_narrow_leftmargin_tl
+ , narrow / leftmargin .value_required:n = true
+ , narrow / leftmargin .initial:n = 1 em
+ , narrow / rightmargin .tl_set:N = \l_@@_narrow_rightmargin_tl
+ , narrow / rightmargin .value_required:n = true
+ , narrow / rightmargin .initial:n = 1 em
% \end{macrocode}
% Options for the \env{poetry} environment.
% \begin{macrocode}
- , poetry / aboveskip .tl_set:N = \l_@@_poetry_aboveskip_tl
- , poetry / aboveskip .value_required:n = true
- , poetry / aboveskip .initial:n = \medskipamount
- , poetry / belowskip .tl_set:N = \l_@@_poetry_belowskip_tl
- , poetry / belowskip .value_required:n = true
- , poetry / belowskip .initial:n = \medskipamount
- , poetry / bigindent .tl_set:N = \l_@@_poetry_big_indent_tl
- , poetry / bigindent .value_required:n = true
- , poetry / bigindent .initial:n = 4 em
- , poetry / indent .tl_set:N = \l_@@_poetry_indent_tl
- , poetry / indent .value_required:n = true
- , poetry / indent .initial:n = 1 em
- , poetry / leftmargin .tl_set:N = \l_@@_poetry_leftmargin_tl
- , poetry / leftmargin .value_required:n = true
- , poetry / leftmargin .initial:n = 1 em
- , poetry / rightmargin .tl_set:N = \l_@@_poetry_rightmargin_tl
- , poetry / rightmargin .value_required:n = true
- , poetry / rightmargin .initial:n = \c_zero_dim
- , poetry / verse / left .bool_set_inverse:N = \l_@@_poetry_verse_right_bool
- , poetry / verse / left .default:n = true
- , poetry / verse / right .bool_set:N = \l_@@_poetry_verse_right_bool
- , poetry / verse / right .default:n = true
- , poetry / verse / right .initial:n = true
- , poetry / verse / sep .tl_set:N = \l_@@_poetry_verse_sep_tl
- , poetry / verse / sep .value_required:n = true
- , poetry / verse / sep .initial:n = 0.05 em
+ , poetry / aboveskip .tl_set:N = \l_@@_poetry_aboveskip_tl
+ , poetry / aboveskip .value_required:n = true
+ , poetry / aboveskip .initial:n = \medskipamount
+ , poetry / belowskip .tl_set:N = \l_@@_poetry_belowskip_tl
+ , poetry / belowskip .value_required:n = true
+ , poetry / belowskip .initial:n = \medskipamount
+ , poetry / bigindent .tl_set:N = \l_@@_poetry_big_indent_tl
+ , poetry / bigindent .value_required:n = true
+ , poetry / bigindent .initial:n = 4 em
+ , poetry / indent .tl_set:N = \l_@@_poetry_indent_tl
+ , poetry / indent .value_required:n = true
+ , poetry / indent .initial:n = 1 em
+ , poetry / leftmargin .tl_set:N = \l_@@_poetry_leftmargin_tl
+ , poetry / leftmargin .value_required:n = true
+ , poetry / leftmargin .initial:n = 1 em
+ , poetry / rightmargin .tl_set:N = \l_@@_poetry_rightmargin_tl
+ , poetry / rightmargin .value_required:n = true
+ , poetry / rightmargin .initial:n = \c_zero_dim
+ , poetry / verse / left .bool_set_inverse:N = \l_@@_poetry_verse_right_bool
+ , poetry / verse / left .default:n = true
+ , poetry / verse / right .bool_set:N = \l_@@_poetry_verse_right_bool
+ , poetry / verse / right .default:n = true
+ , poetry / verse / right .initial:n = true
+ , poetry / verse / sep .tl_set:N = \l_@@_poetry_verse_sep_tl
+ , poetry / verse / sep .value_required:n = true
+ , poetry / verse / sep .initial:n = 0.05 em
}
% \end{macrocode}
% Process package options.
@@ -2539,6 +2606,30 @@
\ProcessKeyOptions
% \end{macrocode}
%
+% \begin{macro}{\@@_setup_style:nnn}
+% Specify options which can later be activated using the \opt{style} option.
+% If the first argument is \val{true}, then the options are appended rather
+% than replaced.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_setup_style:nnn
+ {
+ \bool_if:NTF #1
+ {
+ \tl_if_exist:cF { g__@@_style_ #2 _tl }
+ { \tl_new:c { g__@@_style_ #2 _tl } }
+ \@@_setup_style:nne \c_false_bool { #2 }
+ { \tl_use:c { g__@@_style_ #2 _tl } , #3 }
+ }
+ {
+ \tl_gset:cn { g__@@_style_ #2 _tl } { #3 }
+ \keys_define:nn { scripture }
+ { style / #2 .meta:n = { #3 } }
+ }
+ }
+\cs_generate_variant:Nn \@@_setup_style:nnn { nne }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Hooks}
%
% \begin{hooks}{scripture/chap/before, scripture/chap/after,
@@ -2570,6 +2661,64 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\g_@@_prev_inner_below_skip}
+% Save the last below skip of an inner environment so it can be removed if
+% the main scripture environment ends with and inner environment.
+% \begin{macrocode}
+\skip_new:N \g_@@_prev_inner_below_skip
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l_@@_outer_itemindent_dim}
+% Holds the \cs{itemindent} of the outer list. Used to calculate the
+% \cs{itemindent} to retain correct indenting when a list environment is
+% the first thing in an outer list.
+% \begin{macrocode}
+\dim_new:N \l_@@_outer_itemindent_dim
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_setup_list_noindent:n}
+% Set \cs{noindent} to do a negative horizontal skip a list is the first
+% item in a list then restore it at the end of the paragraph. This allows
+% \cs{itemindent} to be set to a negative value and still have \cs{noindent}
+% behave as expected.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_setup_list_noindent:n
+ {
+ \legacy_if:nT {@newlist}
+ {
+ \cs_set_protected_nopar:Npn \noindent
+ {
+ \skip_horizontal:n { -#1 }
+ }
+ \hook_gput_next_code:nn { para / end }
+ {
+ \cs_gset_eq:NN \noindent \tex_noindent:D
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_skip_diff:NN}
+% Find the difference between two skips while avoiding negative stretch and
+% shrink components.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_skip_diff:NN
+ {
+ \skip_eval:n
+ {
+ \dim_eval:n { \dimexpr #1 - \dimexpr #2 }
+ ~ plus ~
+ \dim_max:nn { \gluestretch #1 - \gluestretch #2 } \c_zero_dim
+ ~ minus ~
+ \dim_max:nn { \glueshrink #1 - \glueshrink #2 } \c_zero_dim
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\@@_extra_skip:}
% Insert a little extra vertical space between two paragraphs. This function
% tests if the previous paragraph is only one line in length and began
@@ -2656,7 +2805,8 @@
% \begin{macrocode}
\tl_if_empty:NF \l_@@_version_tl
{
- \l_@@_version_delim_tl
+ \tl_if_empty:nF { #1 }
+ { \l_@@_version_delim_tl }
\@@_version_format:n { \l_@@_version_tl }
}
}
@@ -2674,30 +2824,21 @@
{
\@@_format_full_ref:n { #1 }
}
-% \end{macrocode}
-% Since the \env{poetry} environment uses \cs{@@_obeylines:} there is always
-% an extra \cs{parskip} when a \env{scripture} quotation ends with a
-% \env{poetry}
-% environment.
-% \begin{macrocode}
- \bool_if:NT \g_@@_poetry_end_bool
- { \skip_vertical:n { -\parskip } }
\dim_compare:nNnT
{ \box_wd:N \l_@@_ref_box + \g_@@_final_line_dim + \l_@@_ref_sep_tl }
>
\linewidth
- { \skip_vertical:N \baselineskip }
-% \end{macrocode}
-% If a \env{scripture} quotation ends with an inner environment, there will
-% be an extra space of \cs{baselineskip}.
-% \begin{macrocode}
- \int_compare:nNnT \prevgraf = \c_zero_int
- { \skip_vertical:n { -\baselineskip } }
- \tl_if_eq:NnT \l_@@_ref_align_tl { right }
+ {
+ \skip_vertical:N \baselineskip
+ \tl_if_eq:NnT \l_@@_ref_align_tl { left }
+ {
+ \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1
+ { \skip_vertical:N \baselineskip }
+ }
+ }
+ \tl_if_eq:NnTF \l_@@_ref_align_tl { right }
{ \hfill }
- \tl_if_eq:NnT \l_@@_ref_align_tl { left }
{
- \mode_leave_vertical:
\dim_compare:nNnT
{ \box_wd:N \l_@@_ref_box + \g_@@_final_line_dim + \l_@@_ref_sep_tl }
<
@@ -2798,7 +2939,7 @@
{
\msg_warning:nnx
{ scripture }
- { language-waning }
+ { language-warning }
{ \l_@@_language_tl }
}
}
@@ -2893,8 +3034,7 @@
\hook_gput_next_code:nn { para / after }
{
\int_gset_eq:NN \g_@@_chap_par_prevgraf_int \prevgraf
- \int_compare:nNnT
- \g_@@_chap_par_prevgraf_int = 1
+ \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1
{ \penalty 10000 }
\hook_gput_next_code:nn { para / before }
{ \int_set_eq:NN \clubpenalty \l_@@_clubpenalty_saved_int }
@@ -2926,9 +3066,7 @@
\hook_use:n { scripture / chap / after }
\group_end:
\bool_if:NT \l_@@_chap_show_verse_bool
- {
- \@@_verse_output:n { 1 }
- }
+ { \@@_verse_output:n { 1 } }
}
% \end{macrocode}
% \end{macro}
@@ -2995,13 +3133,13 @@
}
\hook_gput_next_code:nn { para / before }
{
- \int_compare:nNnT
- \g_@@_chap_par_prevgraf_int = 1
- { \extraskip }
- \int_gzero:N \g_@@_chap_par_prevgraf_int
- \int_compare:nNnT
- \@listdepth > \c_zero_int
- { \parshape 1 ~ \@totalleftmargin ~ \linewidth }
+ \legacy_if:nF { @newlist }
+ {
+ \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1
+ { \extraskip }
+ \int_gzero:N \g_@@_chap_par_prevgraf_int
+ }
+ \parshape 1 ~ \@totalleftmargin ~ \linewidth
}
}
% \end{macrocode}
@@ -3103,14 +3241,10 @@
}
$$
\@@_reset_spacing:
- \dim_compare:nNnT \g_@@_final_line_dim > \linewidth
- {
- \dim_gset_eq:NN \g_@@_final_line_dim \linewidth
- }
+ \dim_compare:nNnT \g_@@_final_line_dim > \paperwidth
+ { \dim_gset:Nn \g_@@_final_line_dim { \@totalleftmargin + \linewidth } }
\dim_compare:nNnT \g_@@_final_line_dim > { \c_zero_dim - 1 sp }
- {
- \skip_vertical:n { -\baselineskip - \parskip }
- }
+ { \skip_vertical:n { -\baselineskip - \parskip } }
}
% \end{macrocode}
% \end{macro}
@@ -3132,12 +3266,69 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\g_@@_start_bool}
-% Flag indicating whether we are currently setting the first paragraph in a
-% \env{scripture} environment. If this is \val{true}, any \opt{aboveskip}
-% for an inner environment will be ignored.
+% \begin{macro}{\@@_added:n}
+% Mark text as added.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_added:n
+ {
+ \group_begin:
+ \l_@@_added_font_tl
+ \@@_added_format:n { #1 }
+ \group_end:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_name:n}
+% Output divine name.
% \begin{macrocode}
-\bool_new:N \g_@@_start_bool
+\cs_new_protected_nopar:Nn \@@_name:n
+ {
+ \group_begin:
+ \l_@@_name_font_tl
+ \@@_name_format:n { #1 }
+ \group_end:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_no_first_verse:}
+% Suppress special formatting for first verse if active.
+% \begin{macrocode}
+\cs_new_protected_nopar:Nn \@@_no_first_verse:
+ {
+ \bool_set_true:N \l_@@_no_verse_first_bool
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_ch:nn}
+% Print a chapter number in the main scripture environment.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_ch_output:nn
+ {
+ \bool_if:NTF \l_@@_chap_show_bool
+ {
+ \bool_if:NTF \l_@@_chap_drop_bool
+ {
+ \@@_chap:n { #2 }
+ \bool_if:nTF { #1 }
+ {
+ \hook_gput_next_code:nn { para / after }
+ {
+ \int_gzero:N \g_@@_chap_par_prevgraf_int
+ \int_gzero:N \g_@@_mid_para_chap_prevgraf_int
+ }
+ }
+ {
+ \hook_gput_next_code:nn { para / after }
+ { \int_gset_eq:NN \g_@@_mid_para_chap_prevgraf_int \prevgraf }
+ }
+ }
+ { \@@_nodrop_chap:n { #2 } }
+ }
+ { \@@_nodrop_chap:n { #2 } }
+ }
% \end{macrocode}
% \end{macro}
%
@@ -3146,6 +3337,7 @@
% \begin{macrocode}
\cs_new_protected:Nn \@@_begin:n
{
+ \cs_set_eq:NN \@@_noindent_saved: \noindent
\bool_if:NT \l_@@_active_bool
{
\msg_error:nn { scripture } { nested-environment }
@@ -3157,131 +3349,74 @@
\keys_set:nn { scripture } { #1 }
}
\@@_select_language:
-% \end{macrocode}
-% If the \env{scripture} environment begins immediately after an \cs{item},
-% then insert a new paragraph and apply a negative skip. Life is much easier
-% if all paragraphs in a \env{scripture} are the same rather than the first
-% one being in the first paragraph of an \cs{item}.
-% \begin{macrocode}
- \legacy_if:nT { @newlist }
- {
- \strut
- \par
- \vspace* { \dim_eval:n { -\baselineskip - \parskip } }
- }
- \mode_if_vertical:T
- {
- \addvspace { \l_@@_aboveskip_tl }
- }
- \DeclareDocumentCommand { \ch } { sm }
- {
- \bool_if:NTF \l_@@_chap_show_bool
- {
- \bool_if:NTF \l_@@_chap_drop_bool
- {
- \@@_chap:n { ##2 }
- \bool_if:nT { ##1 }
- {
- \hook_gput_next_code:nn { para / after }
- { \int_gzero:N \g_@@_chap_par_prevgraf_int }
- }
- }
- { \@@_nodrop_chap:n { ##2 } }
- }
- { \@@_nodrop_chap:n { ##2 } }
- }
+ \int_gzero:N \g_@@_chap_par_prevgraf_int
% \end{macrocode}
% Empty \cs{everydisplay} to ensure it isn't interring with spacing.
% \begin{macrocode}
\everydisplay { }
\int_set:Nn \predisplaypenalty { 10000 }
\int_set_eq:NN \postdisplaypenalty \@lowpenalty
- \bool_gset_true:N \g_@@_start_bool
+ \int_set:Nn \@beginparpenalty { -\@lowpenalty }
+ \int_set_eq:NN \@endparpenalty \@lowpenalty
\bool_gset_false:N \g_@@_poetry_end_bool
- \dim_set_eq:NN \parindent \l_@@_parindent_tl
\cs_set_eq:NN \extraskip \@@_extra_skip:
\cs_set_eq:NN \redletteron \@@_red_letter_on:
\cs_set_eq:NN \redletteroff \@@_red_letter_off:
+ \DeclareDocumentCommand { \ch } { sm }
+ { \@@_ch_output:nn { ##1 } { ##2 } }
\cs_set_eq:NN \vs \@@_verse_output:n
- \cs_set_protected_nopar:Npn \added ##1
- {
- \group_begin:
- \l_@@_added_font_tl
- \@@_added_format:n { ##1 }
- \group_end:
- }
- \cs_set_protected_nopar:Npn \name ##1
- {
- \group_begin:
- \l_@@_name_font_tl
- \@@_name_format:n { ##1 }
- \group_end:
- }
- \cs_set_protected_nopar:Npn \nofirstverse
- {
- \bool_set_true:N \l_@@_no_verse_first_bool
- }
- \cs_set_protected_nopar:Npn \LORD
- {
- \name { Lord }
- }
- \cs_set_protected_nopar:Npn \GOD
- {
- \name { God }
- }
+ \cs_set_eq:NN \added \@@_added:n
+ \cs_set_eq:NN \name \@@_name:n
+ \cs_set_protected_nopar:Npn \LORD { \name { Lord } }
+ \cs_set_protected_nopar:Npn \GOD { \name { God } }
+ \cs_set_eq:NN \nofirstverse \@@_no_first_verse:
\cs_set_protected_nopar:Npn \textright ##1
- {
- \@@_text_right:nn { \l_@@_text_right_sep_tl } { ##1 }
- }
+ { \@@_text_right:nn { \l_@@_text_right_sep_tl } { ##1 } }
\hook_gclear_next_code:n { para / before }
- \skip_set:Nn \l_@@_parskip_correction_skip { \parskip - \l_@@_parskip_tl }
- \mode_if_vertical:T
- {
- \addvspace { \l_@@_parskip_correction_skip }
- }
- \skip_set_eq:NN \parskip \l_@@_parskip_tl
\l_@@_font_tl
\exp_args:NnV \color_set:nn { scripture default colour } \l_@@_colour_tl
\str_if_eq:VnF \l_@@_colour_tl { . }
+ { \color_select:n { scripture default colour } }
+ \bool_if:NTF \l_@@_inline_bool
+ { \l_@@_inline_begin_tl }
{
- \color_select:n { scripture default colour }
- }
-% \end{macrocode}
-% For left and right margins, use \cs{parshape} is already in a list,
-% otherwise use \cs{leftskip} and \cs{rightskip}
-% \begin{macrocode}
- \bool_lazy_or:nnT
- { \dim_compare_p:n { \l_@@_leftmargin_tl > 0pt } }
- { \dim_compare_p:n { \l_@@_rightmargin_tl > 0pt } }
- {
- \dim_sub:Nn \linewidth
- { \l_@@_leftmargin_tl + \l_@@_rightmargin_tl }
- \int_compare:nNnTF
- \@listdepth > \c_zero_int
- {
- \dim_add:Nn \@totalleftmargin \l_@@_leftmargin_tl
- \parshape 1 ~ \@totalleftmargin ~ \linewidth
- }
- {
- \dim_add:Nn \leftskip \l_@@_leftmargin_tl
- \dim_add:Nn \rightskip \l_@@_rightmargin_tl
- }
- }
- \bool_if:NF \l_@@_indent_bool
- {
- \hook_gput_next_code:nn { para / begin }
+ \legacy_if:nTF { @newlist }
+ { \dim_set_eq:NN \l_@@_outer_itemindent_dim \itemindent }
+ { \dim_zero:N \l_@@_outer_itemindent_dim }
+ \list { }
{
- \bool_lazy_any:nT
+ \dim_set_eq:NN \leftmargin \l_@@_leftmargin_tl
+ \dim_set_eq:NN \rightmargin \l_@@_rightmargin_tl
+ \dim_set:Nn \itemindent { \l_@@_parindent_tl - \l_@@_outer_itemindent_dim }
+ \dim_set_eq:NN \listparindent \l_@@_parindent_tl
+ \skip_zero:N \partopsep
+ \skip_set_eq:NN \parsep \l_@@_parskip_tl
+ \dim_compare:nNnTF \parskip > \l_@@_aboveskip_tl
+ { \skip_zero:N \topsep }
+ { \skip_set:Nn \topsep { \@@_skip_diff:NN \l_@@_aboveskip_tl \parskip } }
+ \@@_setup_list_noindent:n { \l_@@_parindent_tl }
+ \bool_if:NF \l_@@_indent_bool
{
- { \str_if_eq_p:Vn \l_@@_currenvir_str { midparachap } }
- { \str_if_eq_p:Vn \l_@@_currenvir_str { narrow } }
- { \str_if_eq_p:Vn \l_@@_currenvir_str { scripture } }
+ \hook_gput_next_code:nn { para / begin }
+ {
+ \bool_lazy_any:nT
+ {
+ { \str_if_eq_p:Vn \l_@@_currenvir_str { midparachap } }
+ { \str_if_eq_p:Vn \l_@@_currenvir_str { narrow } }
+ { \str_if_eq_p:Vn \l_@@_currenvir_str { scripture } }
+ }
+ {
+ \legacy_if:nTF { @noparlist }
+ { \noindent }
+ { \para_omit_indent: }
+ }
+ }
}
- { \para_omit_indent: }
}
- }
- \bool_if:NT \l_@@_inline_bool
- { \l_@@_inline_begin_tl }
+ \dim_set_eq:NN \parindent \l_@@_parindent_tl
+ \item
+ \relax
+ }
}
% \end{macrocode}
% \end{macro}
@@ -3291,105 +3426,67 @@
% \begin{macrocode}
\cs_new_protected:Nn \@@_end:n
{
- \tl_if_eq:NnTF \l_@@_ref_align_tl { inline }
+ \bool_if:NTF \l_@@_inline_bool
{
- \bool_lazy_or:nnF
+ \unskip
+ \@@_red_letter_off:
+ \l_@@_inline_end_tl
+ \bool_lazy_or:nnTF
{ \tl_if_novalue_p:n { #1 } }
{ \tl_if_empty_p:n { #1 } }
{
- \unskip
- \@@_red_letter_off:
- \bool_if:NT \l_@@_inline_bool
- { \l_@@_inline_end_tl }
+ \tl_if_empty:NF \l_@@_version_tl
+ {
+ \skip_horizontal:N \l_@@_ref_sep_tl
+ \@@_format_full_ref:n { }
+ }
+ }
+ {
\skip_horizontal:N \l_@@_ref_sep_tl
\@@_format_full_ref:n { #1 }
}
}
{
+ \@@_red_letter_off:
+ \skip_zero:N \parskip
+ \int_set:Nn \postdisplaypenalty { 10000 }
+ \@@_calc_final_line_length:
+ \dim_gsub:Nn \g_@@_final_line_dim \@totalleftmargin
+ \dim_compare:nNnTF \@outerparskip > \l_@@_belowskip_tl
+ { \skip_zero:N \@topsepadd }
+ { \skip_set:Nn \@topsepadd { \@@_skip_diff:NN \l_@@_belowskip_tl \@outerparskip } }
% \end{macrocode}
-% Normally \cs{unskip} does not work in vertical mode, but there are some
-% situations where it does work. The following condition is true if the
-% \env{scripture} environment has ended with one of its internal
-% environments. This removes any unwanted \opt{belowskip} if present and
-% leaves the previously calculated line length of the final paragraph intact.
+% If a \env{scripture} quotation ends with an inner environment, remove the
+% below skip of the inner environment.
% \begin{macrocode}
- \mode_if_vertical:TF
- {
- \unskip
- \unskip
- }
- {
- \tl_if_novalue:nTF { #1 }
- { \int_zero:N \postdisplaypenalty }
- { \int_set_eq:NN \postdisplaypenalty \@highpenalty }
- \@@_calc_final_line_length:
- }
-% \end{macrocode}
-% Restore left margin by resetting the \cs{parshape} if in a list
-% based environment, otherwise the space required for the reference is
-% incorrectly calculated.
-% \begin{macrocode}
- \bool_lazy_or:nnTF
- { \dim_compare_p:n { \l_@@_leftmargin_tl > 0pt } }
- { \dim_compare_p:n { \l_@@_rightmargin_tl > 0pt } }
- {
- \dim_add:Nn \linewidth \l_@@_leftmargin_tl
- \int_compare:nNnT
- \@listdepth > \c_zero_int
- {
- \dim_sub:Nn \@totalleftmargin \l_@@_leftmargin_tl
- \parshape 1 ~ \@totalleftmargin ~ \linewidth
- }
- }
- { \parshape 1 ~ \@totalleftmargin ~ \linewidth }
- \@@_red_letter_off:
- \bool_lazy_or:nnF
- { \tl_if_novalue_p:n { #1 } }
- { \tl_if_empty_p:n { #1 } }
- { \@@_reference:n { #1 } }
- \par
+ \int_compare:nNnT \prevgraf = \c_zero_int
+ { \skip_vertical:n { -\g_@@_prev_inner_below_skip } }
+ \hook_gclear_next_code:n { para / before }
+ \parshape 1 ~ \@totalleftmargin ~ \linewidth
+ \noindent
+ \bool_lazy_or:nnTF
+ { \tl_if_novalue_p:n { #1 } }
+ { \tl_if_empty_p:n { #1 } }
+ {
+ \tl_if_empty:NTF \l_@@_version_tl
+ { \hbox:n { } }
+ { \@@_reference:n { } }
+ }
+ { \@@_reference:n { #1 } }
% \end{macrocode}
-% Restore right margin by resetting the \cs{parshape} if in a \LaTeX{} list
-% based environment, since only the left margin was restored above.
+% Set \val{@noparlist} to \val{false} to ensure \cs{topsep} is always added
+% \env{scripture} environment
% \begin{macrocode}
- \bool_lazy_or:nnT
- { \dim_compare_p:n { \l_@@_leftmargin_tl > 0pt } }
- { \dim_compare_p:n { \l_@@_rightmargin_tl > 0pt } }
- {
- \int_compare:nNnT
- \@listdepth > \c_zero_int
- {
- \dim_add:Nn \linewidth \l_@@_rightmargin_tl
- \parshape 1 ~ \@totalleftmargin ~ \linewidth
- }
- }
- \dim_compare:nNnTF
- { \glueexpr \l_@@_belowskip_tl } > \parskip
- {
- \addvspace
- {
- \skip_eval:n { \l_@@_belowskip_tl - \parskip }
- }
- }
- {
- \addvspace { \l_@@_belowskip_tl }
- }
+ \@noparlistfalse
+ \endlist
}
+ \cs_set_eq:NN \noindent \@@_noindent_saved:
}
% \end{macrocode}
% \end{macro}
%
% \subsection{Scripture internal environments}
%
-% \begin{macro}{\l_@@_delta_below_skip}
-% Correction to \tn{@topsepadd} for internal environments. This enables a
-% different \opt{aboveskip} and \opt{belowskip} which are normally the
-% same for \LaTeX{} lists.
-% \begin{macrocode}
-\skip_new:N \l_@@_delta_below_skip
-% \end{macrocode}
-% \end{macro}
-%
% \subsubsection{The \env{center} environment}
%
% \begin{macro}{\@@_center_begin:n}
@@ -3409,41 +3506,29 @@
{ scripture / center }
{ #1 }
}
- \mode_if_horizontal:T
- { \par }
+ \legacy_if:nTF { @newlist }
+ { \dim_add:Nn \l_@@_outer_itemindent_dim \itemindent }
+ { \dim_zero:N \l_@@_outer_itemindent_dim }
\list { }
{
- \skip_set_eq:NN \l_@@_delta_below_skip \l_@@_center_belowskip_tl
% \end{macrocode}
% Ignore \opt{aboveskip} if at the beginning of a \env{scripture} environment.
% \begin{macrocode}
- \bool_if:NTF \g_@@_start_bool
- {
- \skip_zero:N \topsep
- \skip_sub:Nn \topsep \parskip
- \skip_add:Nn \l_@@_delta_below_skip \parskip
- \bool_gset_false:N \g_@@_start_bool
- }
- {
- \dim_compare:nTF
- { \parskip >= \glueexpr \l_@@_center_aboveskip_tl > \c_zero_skip }
- {
- \skip_zero:N \topsep
- \skip_zero:N \l_@@_delta_below_skip
- }
- {
- \skip_set_eq:NN \topsep \l_@@_center_aboveskip_tl
- \skip_sub:Nn \l_@@_delta_below_skip \l_@@_center_aboveskip_tl
- }
- \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1
- { \addvspace { \baselineskip } }
- \int_gzero:N \g_@@_chap_par_prevgraf_int
- }
+ \dim_zero:N \labelsep
+ \dim_set_eq:NN \leftmargin \l_@@_center_leftmargin_tl
+ \dim_set_eq:NN \rightmargin \l_@@_center_rightmargin_tl
+ \dim_set:Nn \itemindent { -\l_@@_outer_itemindent_dim }
+ \dim_zero:N \listparindent
\skip_set_eq:NN \parsep \parskip
\skip_zero:N \partopsep
- \dim_zero:N \leftmargin
- \dim_zero:N \labelsep
+ \dim_compare:nNnTF \parskip > \l_@@_center_aboveskip_tl
+ { \skip_zero:N \topsep }
+ { \skip_set:Nn \topsep { \@@_skip_diff:NN \l_@@_center_aboveskip_tl \parskip } }
+ \@@_setup_list_noindent:n { \c_zero_dim }
}
+ \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1
+ { \addvspace { \baselineskip } }
+ \int_gzero:N \g_@@_chap_par_prevgraf_int
\centering
\item
\relax
@@ -3456,9 +3541,12 @@
% \begin{macrocode}
\cs_new_protected:Nn \@@_center_end:
{
- \@@_calc_final_line_length:
- \skip_add:Nn \@topsepadd \l_@@_delta_below_skip
- \int_set_eq:NN \@endparpenalty \@lowpenalty
+ \dim_gset:Nn \g_@@_final_line_dim { \@totalleftmargin + \linewidth }
+ \dim_compare:nNnTF \@outerparskip > \l_@@_center_belowskip_tl
+ { \skip_zero:N \@topsepadd }
+ { \skip_set:Nn \@topsepadd { \@@_skip_diff:NN \l_@@_center_belowskip_tl \@outerparskip } }
+ \skip_gset_eq:NN \g_@@_prev_inner_below_skip \@topsepadd
+ \legacy_if_set_false:n { @noparlist }
\endlist
}
% \end{macrocode}
@@ -3483,43 +3571,29 @@
{ scripture / flushright }
{ #1 }
}
- \mode_if_horizontal:T
- { \par }
+ \legacy_if:nTF { @newlist }
+ { \dim_add:Nn \l_@@_outer_itemindent_dim \itemindent }
+ { \dim_zero:N \l_@@_outer_itemindent_dim }
\list { }
{
- \skip_set_eq:NN \l_@@_delta_below_skip \l_@@_flushright_belowskip_tl
% \end{macrocode}
% Ignore \opt{aboveskip} if at the beginning of a \env{scripture} environment.
% \begin{macrocode}
- \bool_if:NTF \g_@@_start_bool
- {
- \skip_zero:N \topsep
- \skip_sub:Nn \topsep \parskip
- \skip_add:Nn \l_@@_delta_below_skip \parskip
- \bool_gset_false:N \g_@@_start_bool
- }
- {
- \dim_compare:nTF
- { \parskip >= \glueexpr \l_@@_flushright_aboveskip_tl > \c_zero_skip }
- {
- \skip_zero:N \topsep
- \skip_zero:N \l_@@_delta_below_skip
- }
- {
- \skip_set_eq:NN \topsep \l_@@_flushright_aboveskip_tl
- \skip_sub:Nn \l_@@_delta_below_skip \l_@@_flushright_aboveskip_tl
- }
- \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1
- { \addvspace { \baselineskip } }
- \int_gzero:N \g_@@_chap_par_prevgraf_int
- }
+ \dim_zero:N \labelsep
\dim_set_eq:NN \leftmargin \l_@@_flushright_leftmargin_tl
\dim_set_eq:NN \rightmargin \l_@@_flushright_rightmargin_tl
+ \dim_set:Nn \itemindent { -\l_@@_outer_itemindent_dim }
+ \dim_zero:N \listparindent
\skip_set_eq:NN \parsep \parskip
\skip_zero:N \partopsep
- \dim_zero:N \leftmargin
- \dim_zero:N \labelsep
+ \dim_compare:nNnTF \parskip > \l_@@_flushright_aboveskip_tl
+ { \skip_zero:N \topsep }
+ { \skip_set:Nn \topsep { \@@_skip_diff:NN \l_@@_flushright_aboveskip_tl \parskip } }
+ \@@_setup_list_noindent:n { \c_zero_dim }
}
+ \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1
+ { \addvspace { \baselineskip } }
+ \int_gzero:N \g_@@_chap_par_prevgraf_int
\raggedleft
\item
\relax
@@ -3532,9 +3606,12 @@
% \begin{macrocode}
\cs_new_protected:Nn \@@_flushright_end:
{
- \@@_calc_final_line_length:
- \skip_add:Nn \@topsepadd \l_@@_delta_below_skip
- \int_set_eq:NN \@endparpenalty \@lowpenalty
+ \dim_gset:Nn \g_@@_final_line_dim { \@totalleftmargin + \linewidth }
+ \dim_compare:nNnTF \@outerparskip > \l_@@_flushright_belowskip_tl
+ { \skip_zero:N \@topsepadd }
+ { \skip_set:Nn \@topsepadd { \@@_skip_diff:NN \l_@@_flushright_belowskip_tl \@outerparskip } }
+ \skip_gset_eq:NN \g_@@_prev_inner_below_skip \@topsepadd
+ \legacy_if_set_false:n { @noparlist }
\endlist
}
% \end{macrocode}
@@ -3549,6 +3626,22 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_hanging_ch:n}
+% Position a chapter in a \env{hanging} environment.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_hanging_ch:n
+ {
+ \bool_if:NTF \l_@@_chap_show_bool
+ {
+ \bool_if:NTF \l_@@_chap_drop_bool
+ { \@@_hanging_chap:n { #1 } }
+ { \@@_nodrop_chap:n { #1 } }
+ }
+ { \@@_nodrop_chap:n { #1 } }
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\@@_hanging_chap:n}
% Position a drop chapter in a \env{hanging} environment.
% \begin{macrocode}
@@ -3587,17 +3680,15 @@
} ~
\@totalleftmargin ~ \linewidth
}
- \mode_if_vertical:T
+ \tl_set:Nx \l_@@_chap_sep_tl
{
- \tl_set:Nx \l_@@_chap_sep_tl
+ \dim_eval:n
{
- \dim_eval:n
- {
- \l_@@_chap_sep_tl + \l_@@_hanging_parindent_saved_dim
- }
+ \l_@@_chap_sep_tl + \l_@@_hanging_parindent_saved_dim
}
- \@@_nohang:
}
+ \par
+ \@@_nohang:
\hbox_set:Nn \l_@@_chap_box
{
\box_move_down:nn
@@ -3652,7 +3743,7 @@
% \begin{macrocode}
\cs_new_protected_nopar:Nn \@@_nohang:
{
- \para_raw_noindent:
+ \noindent
\hbox_to_wd:nn { \l_@@_hanging_parindent_saved_dim } { }
}
% \end{macrocode}
@@ -3675,58 +3766,33 @@
{ scripture / hanging }
{ #1 }
}
- \mode_if_horizontal:T
- { \par }
+ \DeclareDocumentCommand { \ch } { sm } { \@@_hanging_ch:n { ##2 } }
+ \cs_set_eq:NN \vs \@@_hanging_verse:n
+ \cs_set_eq:NN \nohang \@@_nohang:
+ \dim_set_eq:NN \l_@@_hanging_parindent_saved_dim \parindent
+ \legacy_if:nTF { @newlist }
+ { \dim_add:Nn \l_@@_outer_itemindent_dim \itemindent }
+ { \dim_zero:N \l_@@_outer_itemindent_dim }
\list { }
{
- \skip_set_eq:NN \l_@@_delta_below_skip \l_@@_hanging_belowskip_tl
% \end{macrocode}
% Ignore \opt{aboveskip} if at the beginning of a \env{scripture} environment.
% \begin{macrocode}
- \bool_if:NTF \g_@@_start_bool
- {
- \dim_zero:N \topsep
- \skip_sub:Nn \topsep \parskip
- \skip_add:Nn \l_@@_delta_below_skip \parskip
- \bool_gset_false:N \g_@@_start_bool
- }
- {
- \dim_compare:nTF
- { \parskip >= \glueexpr \l_@@_hanging_aboveskip_tl > \c_zero_skip }
- {
- \skip_zero:N \topsep
- \skip_zero:N \l_@@_delta_below_skip
- }
- {
- \skip_set_eq:NN \topsep \l_@@_hanging_aboveskip_tl
- \skip_sub:Nn \l_@@_delta_below_skip \l_@@_hanging_aboveskip_tl
- }
- \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1
- { \addvspace { \baselineskip } }
- \int_gzero:N \g_@@_chap_par_prevgraf_int
- }
- \dim_set:Nn \leftmargin
- { \l_@@_hanging_leftmargin_tl + \l_@@_hanging_hang_tl }
+ \dim_zero:N \labelsep
+ \dim_set:Nn \leftmargin { \l_@@_hanging_leftmargin_tl + \l_@@_hanging_hang_tl }
\dim_set_eq:NN \rightmargin \l_@@_hanging_rightmargin_tl
- \dim_set:Nn \itemindent { -\l_@@_hanging_hang_tl }
+ \dim_set:Nn \itemindent { -\l_@@_hanging_hang_tl - \l_@@_outer_itemindent_dim }
\dim_set:Nn \listparindent { -\l_@@_hanging_hang_tl }
\skip_set_eq:NN \parsep \parskip
\skip_zero:N \partopsep
- \dim_zero:N \labelsep
- \dim_set_eq:NN \l_@@_hanging_parindent_saved_dim \parindent
- }
- \DeclareDocumentCommand { \ch } { sm }
- {
- \bool_if:NTF \l_@@_chap_show_bool
- {
- \bool_if:NTF \l_@@_chap_drop_bool
- { \@@_hanging_chap:n { ##2 } }
- { \@@_nodrop_chap:n { ##2 } }
- }
- { \@@_nodrop_chap:n { ##2 } }
+ \dim_compare:nNnTF \parskip > \l_@@_hanging_aboveskip_tl
+ { \skip_zero:N \topsep }
+ { \skip_set:Nn \topsep { \@@_skip_diff:NN \l_@@_hanging_aboveskip_tl \parskip } }
+ \@@_setup_list_noindent:n { -\l_@@_hanging_hang_tl }
}
- \cs_set_eq:NN \vs \@@_hanging_verse:n
- \cs_set_eq:NN \nohang \@@_nohang:
+ \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1
+ { \addvspace { \baselineskip } }
+ \int_gzero:N \g_@@_chap_par_prevgraf_int
\item
\relax
}
@@ -3739,8 +3805,11 @@
\cs_new_protected:Nn \@@_hanging_end:
{
\@@_calc_final_line_length:
- \skip_add:Nn \@topsepadd \l_@@_delta_below_skip
- \int_set_eq:NN \@endparpenalty \@lowpenalty
+ \dim_compare:nNnTF \@outerparskip > \l_@@_hanging_belowskip_tl
+ { \skip_zero:N \@topsepadd }
+ { \skip_set:Nn \@topsepadd { \@@_skip_diff:NN \l_@@_hanging_belowskip_tl \@outerparskip } }
+ \skip_gset_eq:NN \g_@@_prev_inner_below_skip \@topsepadd
+ \legacy_if_set_false:n { @noparlist }
\endlist
}
% \end{macrocode}
@@ -3782,6 +3851,14 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\l_@@_mid_para_chap_totalleftmargin_dim}
+% Save the \cs{@totalleftmargin} before starting a \env{midparachap}
+% environment.
+% \begin{macrocode}
+\dim_new:N \l_@@_mid_para_chap_totalleftmargin_dim
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\g_@@_mid_para_chap_prevgraf_int}
% Store the \cs{prevgraf} of the final paragraph in a \env{midparachap}
% environment.
@@ -3888,6 +3965,11 @@
\par
\bool_set_true:N \l_@@_mid_para_chap_bool
\@@_vbox_set_top:Nw \l_@@_mid_para_chap_box
+ \dim_zero:N \leftskip
+ \dim_zero:N \rightskip
+ \dim_set_eq:NN \l_@@_mid_para_chap_totalleftmargin_dim \@totalleftmargin
+ \dim_zero:N \@totalleftmargin
+ \dim_set_eq:NN \hsize \linewidth
\skip_zero:N \parskip
}
% \end{macrocode}
@@ -3899,7 +3981,6 @@
\cs_new_protected:Nn \@@_mid_para_chap_end:
{
\par
- \int_gset_eq:NN \g_@@_mid_para_chap_prevgraf_int \prevgraf
\dim_gset_eq:NN \g_@@_mid_para_chap_prevdepth_dim \prevdepth
\box_set_to_last:N \l_@@_mid_para_chap_line_box
\hbox_set:Nn \l_@@_mid_para_chap_snap_box
@@ -3909,7 +3990,8 @@
\unskip
\unpenalty
}
- \dim_gset:Nn \g_@@_final_line_dim { \box_wd:N \l_@@_mid_para_chap_snap_box }
+ \dim_gset:Nn \g_@@_final_line_dim
+ { \box_wd:N \l_@@_mid_para_chap_snap_box + \l_@@_mid_para_chap_totalleftmargin_dim }
\box_clear:N \l_@@_mid_para_chap_snap_box
\nointerlineskip
\int_compare:nNnT
@@ -3961,9 +4043,7 @@
\hook_gput_next_code:nn { para / before }
{
\int_gzero:N \g_@@_chap_par_prevgraf_int
- \int_compare:nNnT
- \@listdepth > \c_zero_int
- { \parshape 1 ~ \@totalleftmargin ~ \linewidth }
+ \parshape 1 ~ \@totalleftmargin ~ \linewidth
}
}
% \end{macrocode}
@@ -3988,44 +4068,39 @@
{ scripture / narrow }
{ #1 }
}
- \mode_if_horizontal:T
- { \par }
+ \legacy_if:nTF { @newlist }
+ { \dim_add:Nn \l_@@_outer_itemindent_dim \itemindent }
+ { \dim_zero:N \l_@@_outer_itemindent_dim }
\list { }
{
- \skip_set_eq:NN \l_@@_delta_below_skip \l_@@_narrow_belowskip_tl
% \end{macrocode}
% Ignore \opt{aboveskip} if at the beginning of a \env{scripture} environment.
% \begin{macrocode}
- \bool_if:NTF \g_@@_start_bool
+ %\int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1
+ % { \addvspace { \baselineskip } }
+ %\int_gzero:N \g_@@_chap_par_prevgraf_int
+ \dim_zero:N \labelsep
+ \dim_set_eq:NN \leftmargin \l_@@_narrow_leftmargin_tl
+ \dim_set_eq:NN \rightmargin \l_@@_narrow_rightmargin_tl
+ \dim_set_eq:NN \listparindent \parindent
+ \mode_if_vertical:TF
{
- \skip_zero:N \topsep
- \skip_sub:Nn \topsep \parskip
- \skip_add:Nn \l_@@_delta_below_skip \parskip
- \bool_gset_false:N \g_@@_start_bool
+ \dim_set:Nn \itemindent { \parindent - \l_@@_outer_itemindent_dim }
+ \@@_setup_list_noindent:n { \parindent }
}
{
- \dim_compare:nTF
- { \parskip >= \glueexpr \l_@@_narrow_aboveskip_tl > \c_zero_skip }
- {
- \skip_zero:N \topsep
- \skip_zero:N \l_@@_delta_below_skip
- }
- {
- \skip_set_eq:NN \topsep \l_@@_narrow_aboveskip_tl
- \skip_sub:Nn \l_@@_delta_below_skip \l_@@_narrow_aboveskip_tl
- }
- \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1
- { \addvspace { \baselineskip } }
- \int_gzero:N \g_@@_chap_par_prevgraf_int
+ \dim_set:Nn \itemindent { -\l_@@_outer_itemindent_dim }
+ \@@_setup_list_noindent:n { \c_zero_dim }
}
- \dim_set_eq:NN \leftmargin \l_@@_narrow_leftmargin_tl
- \dim_set_eq:NN \rightmargin \l_@@_narrow_rightmargin_tl
- \dim_set_eq:NN \listparindent \parindent
- \dim_set_eq:NN \itemindent \parindent
\skip_set_eq:NN \parsep \parskip
\skip_zero:N \partopsep
- \dim_zero:N \labelsep
+ \dim_compare:nNnTF \parskip > \l_@@_narrow_aboveskip_tl
+ { \skip_zero:N \topsep }
+ { \skip_set:Nn \topsep { \@@_skip_diff:NN \l_@@_narrow_aboveskip_tl \parskip } }
}
+ \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1
+ { \addvspace { \baselineskip } }
+ \int_gzero:N \g_@@_chap_par_prevgraf_int
\item
\relax
}
@@ -4038,8 +4113,11 @@
\cs_new_protected:Nn \@@_narrow_end:
{
\@@_calc_final_line_length:
- \skip_add:Nn \@topsepadd \l_@@_delta_below_skip
- \int_set_eq:NN \@endparpenalty \@lowpenalty
+ \dim_compare:nNnTF \@outerparskip > \l_@@_narrow_belowskip_tl
+ { \skip_zero:N \@topsepadd }
+ { \skip_set:Nn \@topsepadd { \@@_skip_diff:NN \l_@@_narrow_belowskip_tl \@outerparskip } }
+ \skip_gset_eq:NN \g_@@_prev_inner_below_skip \@topsepadd
+ \legacy_if_set_false:n { @noparlist }
\endlist
}
% \end{macrocode}
@@ -4153,9 +4231,25 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_poetry_chap:n}
+% \begin{macro}{\@@_poetry_ch:n}
% Position a chapter in a \env{poetry} environment.
% \begin{macrocode}
+\cs_new_protected:Nn \@@_poetry_ch:n
+ {
+ \bool_if:NTF \l_@@_chap_show_bool
+ {
+ \bool_if:NTF \l_@@_chap_drop_bool
+ { \@@_poetry_chap:n { #1 } }
+ { \@@_poetry_nodrop_chap:n { #1 } }
+ }
+ { \@@_poetry_nodrop_chap:n { #1 } }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_poetry_chap:n}
+% Position a drop chapter in a \env{poetry} environment.
+% \begin{macrocode}
\cs_new_protected:Nn \@@_poetry_chap:n
{
\@@_drop_chap_set_up:n { #1 }
@@ -4437,62 +4531,35 @@
}
\bool_set_true:N \l_@@_active_inner_bool
\tl_set:Nn \l_@@_currenvir_str { poetry }
- \mode_if_horizontal:T
- { \par }
+ \bool_gset_false:N \g_@@_poetry_midparachap_show_verse_bool
+ \DeclareDocumentCommand { \ch } { sm } { \@@_poetry_ch:n { ##2 } }
+ \cs_set_eq:NN \vs \@@_poetry_mode_vertical_verse:n
+ \cs_set_eq:NN \extraskip \@@_poetry_extra_skip:
+ \cs_set_eq:NN \selah \@@_selah_output:
+ \cs_set_protected_nopar:Npn \textright ##1
+ { \@@_poetry_text_right:nn { \l_@@_text_right_sep_tl } { ##1 } }
+ \legacy_if:nTF { @newlist }
+ { \dim_add:Nn \l_@@_outer_itemindent_dim \itemindent }
+ { \dim_zero:N \l_@@_outer_itemindent_dim }
\list { }
{
- \skip_set_eq:NN \l_@@_delta_below_skip \l_@@_poetry_belowskip_tl
- \bool_if:NTF \g_@@_start_bool
- {
- \skip_zero:N \topsep
- \skip_sub:Nn \topsep \parskip
- \skip_add:Nn \l_@@_delta_below_skip \parskip
- \bool_gset_false:N \g_@@_start_bool
- }
- {
- \dim_compare:nTF
- { \parskip >= \glueexpr \l_@@_poetry_aboveskip_tl > \c_zero_skip }
- {
- \skip_zero:N \topsep
- \skip_zero:N \l_@@_delta_below_skip
- }
- {
- \skip_set_eq:NN \topsep \l_@@_poetry_aboveskip_tl
- \skip_sub:Nn \l_@@_delta_below_skip \l_@@_poetry_aboveskip_tl
- }
- \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1
- { \addvspace { \baselineskip } }
- \int_gzero:N \g_@@_chap_par_prevgraf_int
- }
+ \dim_zero:N \labelsep
\dim_set_eq:NN \leftmargin \l_@@_poetry_leftmargin_tl
\dim_set_eq:NN \rightmargin \l_@@_poetry_rightmargin_tl
- \dim_set_eq:NN \itemindent \l_@@_poetry_indent_tl
+ \dim_set:Nn \itemindent { \l_@@_poetry_indent_tl - \l_@@_outer_itemindent_dim }
\dim_set_eq:NN \listparindent \l_@@_poetry_indent_tl
\skip_zero:N \parsep
\skip_zero:N \partopsep
- \dim_zero:N \labelsep
+ \dim_compare:nNnTF \parskip > { \l_@@_poetry_aboveskip_tl }
+ { \skip_zero:N \topsep }
+ { \skip_set:Nn \topsep { \@@_skip_diff:NN \l_@@_poetry_aboveskip_tl \parskip } }
+ \@@_setup_list_noindent:n { \l_@@_poetry_indent_tl }
}
+ \int_compare:nNnT \g_@@_chap_par_prevgraf_int = 1
+ { \addvspace { \baselineskip } }
+ \int_gzero:N \g_@@_chap_par_prevgraf_int
\raggedright
- \dim_set_eq:NN \listparindent \l_@@_poetry_indent_tl
\dim_set_eq:NN \parindent \l_@@_poetry_indent_tl
- \bool_gset_false:N \g_@@_poetry_midparachap_show_verse_bool
- \DeclareDocumentCommand { \ch } { sm }
- {
- \bool_if:NTF \l_@@_chap_show_bool
- {
- \bool_if:NTF \l_@@_chap_drop_bool
- { \@@_poetry_chap:n { ##2 } }
- { \@@_poetry_nodrop_chap:n { ##2 } }
- }
- { \@@_poetry_nodrop_chap:n { ##2 } }
- }
- \cs_set_eq:NN \vs \@@_poetry_mode_vertical_verse:n
- \cs_set_eq:NN \extraskip \@@_poetry_extra_skip:
- \cs_set_eq:NN \selah \@@_selah_output:
- \cs_set_protected_nopar:Npn \textright ##1
- {
- \@@_poetry_text_right:nn { \l_@@_text_right_sep_tl } { ##1 }
- }
\item
\relax
\cs_set_eq:NN \@@_tmp_para_end: \par
@@ -4509,8 +4576,11 @@
\cs_new_protected:Nn \@@_poetry_end:
{
\@@_calc_final_line_length:
- \skip_add:Nn \@topsepadd \l_@@_delta_below_skip
- \int_set_eq:NN \@endparpenalty \@lowpenalty
+ \dim_compare:nNnTF \@outerparskip > { \l_@@_poetry_belowskip_tl }
+ { \skip_zero:N \@topsepadd }
+ { \skip_set:Nn \@topsepadd { \@@_skip_diff:NN \l_@@_poetry_belowskip_tl \@outerparskip } }
+ \skip_gset_eq:NN \g_@@_prev_inner_below_skip \@topsepadd
+ \legacy_if_set_false:n { @noparlist }
\endlist
\bool_gset_true:N \g_@@_poetry_end_bool
\hook_gput_next_code:nn { para / begin }
@@ -4544,6 +4614,22 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\scripturestyle}
+% \begin{arguments}
+% \item \meta{|name|} of the style.
+% \item \meta{|options|} to set for the style.
+% \end{arguments}
+% Set key-value settings to be applied when using the \opt{style} option
+% with value \val{name}. The starred version appends the \val{options} to
+% any existing ones.
+% \begin{macrocode}
+\NewDocumentCommand { \scripturestyle } { s m m }
+ {
+ \@@_setup_style:nnn { #1 } { #2 } { #3 }
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\textscripture}
% \begin{arguments}
% \item \meta{|reference|} of quotation.
@@ -4553,7 +4639,7 @@
% Set an inline quotation. This is equivalent to calling the
% \env{scripture} environment with the \opt{inline} option set.
% \begin{macrocode}
-\NewDocumentCommand { \textscripture } { oo+m }
+\NewDocumentCommand { \textscripture } { o o +m }
{
\tl_if_novalue:nTF { #2 }
{
@@ -4575,7 +4661,7 @@
% \end{arguments}
% Format a scripture quotation with optional reference.
% \begin{macrocode}
-\NewDocumentEnvironment { scripture } { oo }
+\NewDocumentEnvironment { scripture } { o o }
{
\@@_begin:n { #2 }
% \end{macrocode}
@@ -4676,6 +4762,11 @@
\tl_set:Nn \l_@@_belowskip_tl { 0pt }
\tl_set:Nn \l_@@_leftmargin_tl { 0pt }
\tl_set:Nn \l_@@_rightmargin_tl { 0pt }
+ \cs_set_eq:NN \@@_ref_format:n \@@_inline_ref_format:n
+ \tl_set_eq:NN \l_@@_ref_sep_tl \l_@@_inline_ref_sep_tl
+ \cs_set_eq:NN \@@_version_format:n \@@_inline_version_format:n
+ \tl_set_eq:NN \l_@@_version_delim_tl \l_@@_inline_version_delim_tl
+ \bool_set_true:N \l_@@_compact_bool
}
\bool_if:NT \l_@@_compact_bool
{
@@ -4707,11 +4798,7 @@
}
\mode_leave_vertical:
}
- \peek_remove_spaces:n
- {
- \peek_meaning:NF \begin
- { \bool_gset_false:N \g_@@_start_bool }
- }
+ \ignorespaces
}
{
\bool_if:NT \l_@@_compact_bool
diff --git a/macros/latex/contrib/scripture/scripture.pdf b/macros/latex/contrib/scripture/scripture.pdf
index 6d1f35df3c..4dbb9323b1 100644
--- a/macros/latex/contrib/scripture/scripture.pdf
+++ b/macros/latex/contrib/scripture/scripture.pdf
Binary files differ