texlive[64910] Master/texmf-dist: scripture (2nov22)

commits+karl at tug.org commits+karl at tug.org
Wed Nov 2 23:07:44 CET 2022


Revision: 64910
          http://tug.org/svn/texlive?view=revision&revision=64910
Author:   karl
Date:     2022-11-02 23:07:44 +0100 (Wed, 02 Nov 2022)
Log Message:
-----------
scripture (2nov22)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/scripture/scripture.pdf
    trunk/Master/texmf-dist/source/latex/scripture/scripture.dtx
    trunk/Master/texmf-dist/tex/latex/scripture/scripture.sty

Modified: trunk/Master/texmf-dist/doc/latex/scripture/scripture.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/scripture/scripture.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/scripture/scripture.dtx	2022-11-02 22:07:21 UTC (rev 64909)
+++ trunk/Master/texmf-dist/source/latex/scripture/scripture.dtx	2022-11-02 22:07:44 UTC (rev 64910)
@@ -182,10 +182,11 @@
 %
 % \changes{v1.0}{2022/07/27}{First public release}
 % \changes{v1.1}{2022/08/27}{Bug fixes}
+% \changes{v1.2}{2022/11/02}{Bug fixes}
 %
 % \title{The \pkg{scripture} package}
 % \author{David Purton\thanks{Email: \url{dcpurton at marshwiggle.net}}}
-% \date{2022/08/27 v1.1}
+% \date{2022/11/02 v1.2}
 %
 % \maketitle
 %
@@ -241,6 +242,8 @@
 % fail and a reference will end up on the following page. Usually a little
 % 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.
 %  
 % \section{Documentation}
 %
@@ -252,7 +255,7 @@
 % \begin{scriptureexample}
 % \begin{verbatim}
 % \begin{scripture}[Isaiah 56:1--2][version=NIVUK]
-%   \ch{56}This is what the \textsc{Lord} says:
+%   \ch{56}This is what the \name{Lord} says:
 %   \begin{poetry}
 %     `Maintain justice
 %     and do what is right,
@@ -272,7 +275,7 @@
 % \tcblower
 % 
 % \begin{scripture}[Isaiah 56:1--2][version=NIVUK]
-%   \ch{56}This is what the \textsc{Lord} says:
+%   \ch{56}This is what the \name{Lord} says:
 %   \begin{poetry}
 %     `Maintain justice
 %     and do what is right,
@@ -315,7 +318,7 @@
 % \begin{scripture}[Exodus 20:1--2]
 %   \ch{20}And God spoke all these words:
 %   \begin{hanging}
-%     \noindent\vs{2}`I am the \textsc{Lord}
+%     \noindent\vs{2}`I am the \name{Lord}
 %     your God, who brought you out of Egypt,
 %     out of the land of slavery.
 %   \end{hanging}
@@ -330,7 +333,7 @@
 % \begin{scripture}[Exodus 20:1--2]
 %   \ch*{20}And God spoke all these words:
 %   \begin{hanging}
-%     \nohang\vs{2}`I am the \textsc{Lord} your
+%     \nohang\vs{2}`I am the \name{Lord} your
 %     God, who brought you out of Egypt, out of
 %     the land of slavery.
 %   \end{hanging}
@@ -346,7 +349,7 @@
 % \begin{scripture}[Exodus 20:1--2]
 %   \ch{20}And God spoke all these words:
 %   \begin{hanging}
-%     \noindent\vs{2}`I am the \textsc{Lord}
+%     \noindent\vs{2}`I am the \name{Lord}
 %     your God, who brought you out of Egypt,
 %     out of the land of slavery.
 %   \end{hanging}
@@ -361,7 +364,7 @@
 % \begin{scripture}[Exodus 20:1--2]
 %   \ch*{20}And God spoke all these words:
 %   \begin{hanging}
-%     \nohang\vs{2}`I am the \textsc{Lord} your
+%     \nohang\vs{2}`I am the \name{Lord} your
 %     God, who brought you out of Egypt, out of
 %     the land of slavery.
 %   \end{hanging}
@@ -401,6 +404,49 @@
 % \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}
+%     |\name|\marg{divine name}
+%     |\LORD|
+%     |\GOD|
+%   \end{syntax}
+%   Modern Bible translations frequently represent God's personal divine name
+%   using a small capitals typeface. This can be done using the \cs{name}
+%   function. The font and format can be set using the \opt{name/font} and
+%   \opt{name/format} options. The \cs{LORD} and \cs{GOD} macros equivalent to
+%   \cs{name}|{Lord}| and \cs{name}|{God}| respectively.
+%
+%   \textbf{Note:} Watch out that trailing spaces are not eaten by \cs{LORD}
+%   and \cs{GOD}. Using \cs{name} is safer and semantically better.
+% \end{function}
+%
+% \begin{scriptureexample}
+% \begin{verbatim}
+% \begin{scripture}[Genesis 15:1--2][version=ESV]
+%  \ch{15}After these things the word of the
+%  \name{Lord} came to Abram in a vision: “Fear not,
+%  Abram, I am your shield; your reward shall be
+%  very great.” \vs{2}But Abram said, “O Lord
+%  \name{God}, what will you give me, for I continue
+%  childless, and the heir of my house is Eliezer of
+%  Damascus?”
+% \end{scripture}
+% \end{verbatim}
+%
+% \tcblower
+%
+% \begin{scripture}[Genesis 15:1--2][version=ESV]
+%  \ch{15}After these things the word of the
+%  \name{Lord} came to Abram in a vision: “Fear not,
+%  Abram, I am your shield; your reward shall be
+%  very great.” \vs{2}But Abram said, “O Lord
+%  \name{God}, what will you give me, for I continue
+%  childless, and the heir of my house is Eliezer of
+%  Damascus?”
+% \end{scripture}
+% \end{scriptureexample}
+%
 % \begin{function}{\nohang}
 %   \begin{syntax}
 %     |\nohang|
@@ -444,6 +490,69 @@
 % \end{scripture}
 % \end{scriptureexample}
 %
+% \changes{v1.2}{2022/08/31}{Add red letter feature}
+% \begin{function}[added=2022-08-31]{\redletteron, \redletteroff}
+%   \begin{syntax}
+%     |\redletteron|
+%     |\redletteroff|
+%   \end{syntax}
+%   Use \cs{redletteron} and \cs{redletteroff} to mark the beginning and end
+%   of sections of text that should be attributed to Jesus speaking. Some
+%   attempt is made to ensure that the correct colour continues after an inner
+%   environment if \cs{redletteron} or \cs{redletteroff} occurs inside the
+%   inner environment. If you experience problems with unexpected colour, try
+%   to ensure that matching \cs{redletteron} and \cs{redletteroff} marks occur
+%   at the same group level. The colour of the text can be set using the
+%   \opt{redletter/colour} option. These commands only have an effect when the
+%   \opt{redletter} option is \val{true}.
+% \end{function}
+%
+% \begin{scriptureexample}[lefthand ratio=0.67]
+% \begin{verbatim}
+% \begin{scripture}[Matthew 21:16--17][redletter]
+%   \vs{16}`Do you hear what these children are saying?'
+%   they asked him.
+%
+%   \redletteron `Yes,' \redletteroff replied Jesus,
+%   \redletteron ‘have you
+%   never read,
+%   \begin{poetry}
+%     `\thinspace ``From the lips of children and infants
+%     you, Lord, have called forth your praise''?'
+%   \end{poetry}\redletteroff
+%
+%   \vs{17}And he left them and went out of the city to
+%   Bethany, where he spent the night.
+% \end{scripture}
+% \end{verbatim}
+%
+% \tcblower
+%
+% \begin{scripture}[Matthew 21:16--17][redletter]
+%   \vs{16}`Do you hear what these children are saying?'
+%   they asked him.
+%
+%   \redletteron `Yes,' \redletteroff replied Jesus,
+%   \redletteron ‘have you
+%   never read,
+%   \begin{poetry}
+%     `\thinspace ``From the lips of children and infants
+%     you, Lord, have called forth your praise''?'
+%   \end{poetry}\redletteroff
+%
+%   \vs{17}And he left them and went out of the city to
+%   Bethany, where he spent the night.
+% \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,
@@ -497,6 +606,39 @@
 %   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}
+%     |\textright|\marg{text}
+%   \end{syntax}
+%   This function inserts \meta{|text|} at the end of the current line or the
+%   end of the following line if there is insufficient room. The
+%   \opt{textright/sep} option controls the minimum allowed space before the
+%   \meta{|text|} to be right aligned.
+% \end{function}
+%
+% \begin{scriptureexample}
+% \begin{verbatim}
+% \begin{scripture}[Jeremiah 2:29]
+%   \begin{poetry}
+%     \vs{5}`Why do you bring charges against me?
+%     You have all rebelled against me,'
+%     \textright{declares the \name{Lord}.}
+%   \end{poetry}
+% \end{scripture}
+% \end{verbatim}
+%
+% \tcblower
+%
+% \begin{scripture}[Jeremiah 2:29]
+%   \begin{poetry}
+%     \vs{5}`Why do you bring charges against me?
+%     You have all rebelled against me,'
+%     \textright{declares the \name{Lord}.}
+%   \end{poetry}
+% \end{scripture}
+% \end{scriptureexample}
+%
 % \begin{function}{\vs}
 %   \begin{syntax}
 %     |\vs|\marg{verse number}
@@ -564,14 +706,15 @@
 %
 % \begin{scriptureexample}
 % \begin{verbatim}
-% \begin{scripture}[Jeremiah 2:29]
-%   \begin{poetry}[belowskip=0pt]
-%     \vs{5}`Why do you bring charges against me?
-%     You have all rebelled against me,'
+% \begin{scripture}[Isaiah 40:5]
+%   \begin{poetry}[belowskip = 0pt]
+%     \vs{5}And the glory of the \name{Lord}\ldots
+%     and all people will see it together.
 %   \end{poetry}
 %
-%   \begin{flushright}[aboveskip=0pt]
-%     declares the \textsc{Lord}.
+%   \begin{flushright}[aboveskip = 0pt]
+%     For the mouth of the \name{Lord} \\
+%     has spoken.’
 %   \end{flushright}
 % \end{scripture}
 % \end{verbatim}
@@ -578,14 +721,15 @@
 %
 % \tcblower
 % 
-% \begin{scripture}[Jeremiah 2:29]
-%   \begin{poetry}[belowskip=0pt]
-%     \vs{5}`Why do you bring charges against me?
-%     You have all rebelled against me,'
+% \begin{scripture}[Isaiah 40:5]
+%   \begin{poetry}[belowskip = 0pt]
+%     \vs{5}And the glory of the \name{Lord}\ldots
+%     and all people will see it together.
 %   \end{poetry}
 %
-%   \begin{flushright}[aboveskip=0pt]
-%     declares the \textsc{Lord}.
+%   \begin{flushright}[aboveskip = 0pt]
+%     For the mouth of the \name{Lord} \\
+%     has spoken.’
 %   \end{flushright}
 % \end{scripture}
 % \end{scriptureexample}
@@ -757,7 +901,7 @@
 % \begin{scripture}[Isaiah 1:2]
 %   \begin{poetry}
 %     \vs{2}Hear me, you heavens! Listen, earth!
-%     For the \textsc{Lord} has spoken:
+%     For the \name{Lord} has spoken:
 %
 %     `I reared children and brought them up,
 %     but they have rebelled against me.
@@ -770,7 +914,7 @@
 % \begin{scripture}[Isaiah 1:2]
 %   \begin{poetry}
 %     \vs{2}Hear me, you heavens! Listen, earth!
-%     For the \textsc{Lord} has spoken:
+%     For the \name{Lord} has spoken:
 %
 %     `I reared children and brought them up,
 %     but they have rebelled against me.
@@ -902,9 +1046,16 @@
 % \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
+%     aboveskip = \meta{skip} \hfill Default: 0pt
 %   \end{syntax}
 %   \meta{|skip|} inserted above the \env{scripture} environment.
 % \end{option}
@@ -911,85 +1062,24 @@
 %
 % \begin{option}{belowskip}
 %   \begin{syntax}
-%     |belowskip =| \meta{skip} \hfill Default: 0pt
+%     belowskip = \meta{skip} \hfill Default: 0pt
 %   \end{syntax}
 %   \meta{|skip|} inserted below the \env{scripture} environment.
 % \end{option}
 %
-% \changes{v1.1}{2022/08/15}{Add \opt{compact} option}
-% \begin{option}[added=2022-08-15]{compact}
+% \changes{v1.2}{2022/09/07}{Add \opt{chapter/colour} option}
+% \begin{option}[added=2022-09-07]{chapter/colour, chapter/color}
 %   \begin{syntax}
-%     |compact =| \meta{boolean} \hfill Default: false
+%     chapter/colour = \meta{colour expression} \hfill Default: .
 %   \end{syntax}
-%   This option removes all paragraph breaks along with any \cs{extraskip} in
-%   the quotation so the whole quotation is a single paragraph of running
-%   prose. This option implies \opt{chapter/nodrop} and all options relating
-%   to inner environments are ignored.
-%
-%   The value of \meta{|boolean|} is optional and assumed to be \val{true} if
-%   not present.
-%
-%   \textbf{Warning:} This option redefines \cs{par} to \cs{relax} inside the
-%   \env{scripture} environment. If you have anything other than expected
-%   macros and environments inside your \env{scripture} environment \TeX{}
-%   will likely get stuck in an infinite loop.
+%   The \pkg{l3color} \meta{|colour expression|} to be used for chapter
+%   numbers. By default the current colour is inherited. \opt{chapter/color}
+%   is an alias for \opt{chapter/colour}.
 % \end{option}
 %
-% \begin{scriptureexample}
-% \begin{verbatim}
-% \begin{scripture}[Jonah 1:17--2:2a][compact]
-%   \begin{midparachap}
-%     \vs{17}Now the \textsc{Lord} provided a huge
-%     fish to swallow Jonah, and Jonah was in the
-%     belly of the fish three days and three
-%     nights. \ch{2}From inside the fish Jonah
-%     prayed to the \textsc{Lord} his God. \vs{2}He
-%     said:
-%   \end{midparachap}
-%   \begin{poetry}
-%     `In my distress I called to the Lord,
-%     and he answered me.
-%   \end{poetry}
-% \end{scripture}
-% \end{verbatim}
-%
-% \tcblower
-%
-% \begin{scripture}[Jonah 1:17--2:2a][compact]
-%   \begin{midparachap}
-%     \vs{17}Now the \textsc{Lord} provided a huge
-%     fish to swallow Jonah, and Jonah was in the
-%     belly of the fish three days and three
-%     nights. \ch{2}From inside the fish Jonah
-%     prayed to the \textsc{Lord} his God. \vs{2}He
-%     said:
-%   \end{midparachap}
-%   \begin{poetry}
-%     `In my distress I called to the Lord,
-%     and he answered me.
-%   \end{poetry}
-% \end{scripture}
-% \end{scriptureexample}
-%
-% \begin{option}{leftmargin}
-%   \begin{syntax}
-%     |leftmargin =| \meta{dimen} \hfill Default: 0pt
-%   \end{syntax}
-%   \meta{|dimen|} used for the left margin of the \env{scripture}
-%   environment.
-% \end{option}
-%
-% \begin{option}{rightmargin}
-%   \begin{syntax}
-%     |rightmargin =| \meta{dimen} \hfill Default: 0pt
-%   \end{syntax}
-%   \meta{|dimen|} used for the right margin of the \env{scripture}
-%   environment.
-% \end{option}
-%
 % \begin{option}{chapter/drop}
 %   \begin{syntax}
-%     |chapter/drop =| \meta{boolean} \hfill Default: true
+%     chapter/drop = \meta{boolean} \hfill Default: true
 %   \end{syntax}
 %   Whether the chapter should be set as a drop letter taking up two
 %   lines or as a normal letter taking up one line. The value of
@@ -999,7 +1089,7 @@
 %
 % \begin{option}{chapter/font}
 %   \begin{syntax}
-%     |chapter/font =| \meta{font} \hfill Default: \cs{bfseries}
+%     chapter/font = \meta{font} \hfill Default: \cs{bfseries}
 %   \end{syntax}
 %   \meta{|font|} used for the \cs{ch} function.
 % \end{option}
@@ -1007,7 +1097,7 @@
 % \changes{v1.1}{2022/07/28}{Add \opt{chapter/format} option}
 % \begin{option}[added=2022-07-28]{chapter/format}
 %   \begin{syntax}
-%     |chapter/format =| \meta{macro} \hfill Default: \#1
+%     chapter/format = \meta{macro} \hfill Default: \#1
 %   \end{syntax}
 %   \meta{|macro|} used to format the \val{chapter} for a \env{scripture}
 %   quotation. |#1| contains the text of the \val{chapter}.
@@ -1016,7 +1106,7 @@
 % \changes{v1.1}{2022/08/15}{Add \opt{chapter/hide} option}
 % \begin{option}[added=2022-08-15]{chapter/hide}
 %   \begin{syntax}
-%     |chapter/hide =| \meta{boolean} \hfill Default: false
+%     chapter/hide = \meta{boolean} \hfill Default: false
 %   \end{syntax}
 %   Whether chapters should be shown or hidden. The value of \meta{|boolean|}
 %   is optional and assumed to be \val{true} if not present. This option is
@@ -1051,7 +1141,7 @@
 %
 % \begin{option}{chapter/nodrop}
 %   \begin{syntax}
-%     |chapter/nodrop =| \meta{boolean} \hfill Default: false
+%     chapter/nodrop = \meta{boolean} \hfill Default: false
 %   \end{syntax}
 %   Whether the chapter should be set as a drop letter taking up two lines or
 %   as a normal letter taking up one line. The value of \meta{|boolean|} is
@@ -1083,7 +1173,7 @@
 %
 % \begin{option}{chapter/sep}
 %   \begin{syntax}
-%     |chapter/sep =| \meta{dimen} \hfill Default: 0.5em
+%     chapter/sep = \meta{dimen} \hfill Default: 0.5em
 %   \end{syntax}
 %   \meta{|dimen|} used to separate a \cs{ch} from the following text.
 % \end{option}
@@ -1091,7 +1181,7 @@
 % \changes{v1.1}{2022/08/15}{Add \opt{chapter/show} option}
 % \begin{option}[added=2022-08-15]{chapter/show}
 %   \begin{syntax}
-%     |chapter/show =| \meta{boolean} \hfill Default: true
+%     chapter/show = \meta{boolean} \hfill Default: true
 %   \end{syntax}
 %   Whether chapters should be shown or hidden. The value of \meta{|boolean|}
 %   is optional and assumed to be \val{true} if not present. This option is
@@ -1098,9 +1188,74 @@
 %   the opposite of \opt{chapter/hide}.
 % \end{option}
 %
+% \changes{v1.2}{2022/08/31}{Add \opt{colour} option}
+% \begin{option}[added=2022-08-31]{colour, color}
+%   \begin{syntax}
+%     colour = \meta{colour expression} \hfill Default: .
+%   \end{syntax}
+%   The \pkg{l3color} \meta{|colour expression|} to be used for the
+%   \env{scripture} environment. By default the current colour is inherited.
+%   \opt{color} is an alias for \opt{colour}.
+% \end{option}
+%
+% \changes{v1.1}{2022/08/15}{Add \opt{compact} option}
+% \begin{option}[added=2022-08-15]{compact}
+%   \begin{syntax}
+%     compact = \meta{boolean} \hfill Default: false
+%   \end{syntax}
+%   This option removes all paragraph breaks along with any \cs{extraskip} in
+%   the quotation so the whole quotation is a single paragraph of running
+%   prose. This option implies \opt{chapter/nodrop} and all options relating
+%   to inner environments are ignored.
+%
+%   The value of \meta{|boolean|} is optional and assumed to be \val{true} if
+%   not present.
+%
+%   \textbf{Warning:} This option redefines \cs{par} to \cs{relax} inside the
+%   \env{scripture} environment. If you have anything other than expected
+%   macros and environments inside your \env{scripture} environment \TeX{}
+%   will likely get stuck in an infinite loop.
+% \end{option}
+%
+% \begin{scriptureexample}
+% \begin{verbatim}
+% \begin{scripture}[Jonah 1:17--2:2a][compact]
+%   \begin{midparachap}
+%     \vs{17}Now the \name{Lord} provided a huge
+%     fish to swallow Jonah, and Jonah was in the
+%     belly of the fish three days and three
+%     nights. \ch{2}From inside the fish Jonah
+%     prayed to the \name{Lord} his God. \vs{2}He
+%     said:
+%   \end{midparachap}
+%   \begin{poetry}
+%     `In my distress I called to the Lord,
+%     and he answered me.
+%   \end{poetry}
+% \end{scripture}
+% \end{verbatim}
+%
+% \tcblower
+%
+% \begin{scripture}[Jonah 1:17--2:2a][compact]
+%   \begin{midparachap}
+%     \vs{17}Now the \name{Lord} provided a huge
+%     fish to swallow Jonah, and Jonah was in the
+%     belly of the fish three days and three
+%     nights. \ch{2}From inside the fish Jonah
+%     prayed to the \name{Lord} his God. \vs{2}He
+%     said:
+%   \end{midparachap}
+%   \begin{poetry}
+%     `In my distress I called to the Lord,
+%     and he answered me.
+%   \end{poetry}
+% \end{scripture}
+% \end{scriptureexample}
+%
 % \begin{option}{extraskip}
 %   \begin{syntax}
-%     |extraskip =| \meta{skip} \hfill Default: \cs{medskipamount}
+%     extraskip = \meta{skip} \hfill Default: \cs{medskipamount}
 %   \end{syntax}
 %   \meta{|skip|} used for the \cs{extraskip} function.
 % \end{option}
@@ -1107,7 +1262,7 @@
 %
 % \begin{option}{font}
 %   \begin{syntax}
-%     |font =| \meta{font} \hfill Default: \emph{Empty}
+%     font = \meta{font} \hfill Default: \emph{Empty}
 %   \end{syntax}
 %   \meta{|font|} used for the \env{scripture} environment.
 % \end{option}
@@ -1114,7 +1269,7 @@
 %
 % \begin{option}{indent}
 %   \begin{syntax}
-%     |indent =| \meta{boolean} \hfill Default: true
+%     indent = \meta{boolean} \hfill Default: true
 %   \end{syntax}
 %   Whether to indent the first line of a \env{scripture} environment or not
 %   by \opt{parindent}. The value of \meta{|boolean|} is optional and assumed
@@ -1122,9 +1277,59 @@
 %   \opt{noindent}.
 % \end{option}
 %
+% \changes{v1.2}{2022/11/02}{Add \opt{language} option}
+% \begin{option}[added=2022-11-02]{language}
+%   \begin{syntax}
+%     language = \meta{language name} \hfill Default: \emph{Empty}
+%   \end{syntax}
+%   \pkg{babel} or \pkg{polyglossia} \meta{|language name|} to be used for the
+%   \env{scripture} environment. This calls
+%   \cs{selectlanguage}|{|\meta{|language name|}|}| at the start of the
+%   environment. Make sure you have \pkg{babel} or \pkg{polyglossia} loaded
+%   and correctly set up for your specified language. If unset the current
+%   active language is used.
+% \end{option}
+%
+% \changes{v1.2}{2022/11/02}{Add \opt{language/variant} option}
+% \begin{option}[added=2022-11-02]{language/variant}
+%   \begin{syntax}
+%     language/variant = \meta{language variant name} \hfill Default: \emph{Empty}
+%   \end{syntax}
+%   \pkg{polyglossia} \meta{|language variant name|} to be used along with the
+%   specified \opt{language} for the \env{scripture} environment. This inserts
+%   \cs{selectlanguage}|[|\meta{|language variant name|}|]{|\meta{language
+%   name}|}| at the start of the environment. Make sure you have
+%   \pkg{polyglossia} loaded and correctly set up for your specified language.
+% \end{option}
+%
+% \begin{option}{leftmargin}
+%   \begin{syntax}
+%     leftmargin = \meta{dimen} \hfill Default: 0pt
+%   \end{syntax}
+%   \meta{|dimen|} used for the left margin of the \env{scripture}
+%   environment.
+% \end{option}
+%
+% \changes{v1.2}{2022/09/01}{Add \opt{name/font} option}
+% \begin{option}[added=2022-09-01]{name/font}
+%   \begin{syntax}
+%     name/font = \meta{font} \hfill Default: \cs{scshape}
+%   \end{syntax}
+%   \meta{|font|} used for the \cs{name} function.
+% \end{option}
+%
+% \changes{v1.2}{2022/09/01}{Add \opt{name/format} option}
+% \begin{option}[added=2022-09-01]{name/format}
+%   \begin{syntax}
+%     name/format = \meta{macro} \hfill Default: \#1
+%   \end{syntax}
+%   \meta{|macro|} used to format the \val{divine name} using the \cs{name}
+%   function. |#1| contains the text of the argument to \cs{name}.
+% \end{option}
+%
 % \begin{option}{noindent}
 %   \begin{syntax}
-%     |noindent =| \meta{boolean} \hfill Default: false
+%     noindent = \meta{boolean} \hfill Default: false
 %   \end{syntax}
 %   Whether to indent the first line of a \env{scripture} environment or not
 %   by \opt{parindent}. The value of \meta{|boolean|} is optional and assumed
@@ -1154,7 +1359,7 @@
 %
 % \begin{option}{parindent}
 %   \begin{syntax}
-%     |parindent =| \meta{dimen} \hfill Default: \cs{parindent}
+%     parindent = \meta{dimen} \hfill Default: \cs{parindent}
 %   \end{syntax}
 %   \meta{|dimen|} to use when indenting the first line of a paragraph in the
 %   \env{scripture} environment.
@@ -1162,14 +1367,46 @@
 %
 % \begin{option}{parskip}
 %   \begin{syntax}
-%     |parskip =| \meta{skip} \hfill Default: \cs{parskip}
+%     parskip = \meta{skip} \hfill Default: \cs{parskip}
 %   \end{syntax}
 %   \meta{|skip|} to use between paragraphs in the \env{scripture} environment.
 % \end{option}
 %
+% \changes{v1.2}{2022/08/31}{Add \opt{redletter} option}
+% \begin{option}[added=2022-08-31]{redletter}
+%   \begin{syntax}
+%     redletter = \meta{boolean} \hfill Default: false
+%   \end{syntax}
+%   Whether to enable highlighting of Jesus' words in red. The value of
+%   \meta{|boolean|} is option and assumed to be \val{true} if not present.
+%   The text needs to be marked up with \cs{redletteron} and \cs{redletteroff}
+%   for this option to have any effect.
+% \end{option}
+%
+% \changes{v1.2}{2022/08/31}{Add \opt{redletter/colour} option}
+% \begin{option}[added=2022-08-31]{redletter/colour, redletter/color}
+%   \begin{syntax}
+%     redletter/colour = \meta{colour expression} \hfill Default: red!80!black
+%   \end{syntax}
+%   The \pkg{l3color} \meta{|colour expression|} to be used for the words of
+%   Jesus when the \opt{redletter} option is \val{true}. \cs{redletteron} and
+%   \cs{redletteroff} must be used to mark up the text. \opt{redletter/color}
+%   is an alias for \opt{redletter/colour}.
+% \end{option}
+%
+% \changes{v1.2}{2022/09/07}{Add \opt{reference/colour} option}
+% \begin{option}[added=2022-09-07]{reference/colour, reference/color}
+%   \begin{syntax}
+%     reference/colour = \meta{colour expression} \hfill Default: .
+%   \end{syntax}
+%   The \pkg{l3color} \meta{|colour expression|} to be used for the reference
+%   and version. By default the current colour is inherited.
+%   \opt{reference/color} is an alias for \opt{reference/colour}.
+% \end{option}
+%
 % \begin{option}{reference/delim}
 %   \begin{syntax}
-%     |reference/delim =| \meta{delim} \hfill Default: \cs{hfill}
+%     reference/delim = \meta{delim} \hfill Default: \cs{hfill}
 %   \end{syntax}
 %   \meta{|delim|} to use between the \env{scripture} quotation and its
 %   \val{reference}.
@@ -1177,7 +1414,7 @@
 %
 % \begin{option}{reference/font}
 %   \begin{syntax}
-%     |reference/font =| \meta{font} \hfill Default: \cs{bfseries}
+%     reference/font = \meta{font} \hfill Default: \cs{bfseries}
 %   \end{syntax}
 %   \meta{|font|} used when printing the \val{reference} for a \env{scripture}
 %   quotation.
@@ -1185,7 +1422,7 @@
 %
 % \begin{option}{reference/format}
 %   \begin{syntax}
-%     |reference/format =| \meta{macro} \hfill Default: \#1
+%     reference/format = \meta{macro} \hfill Default: \#1
 %   \end{syntax}
 %   \meta{|macro|} used to format the \val{reference} for a \env{scripture}
 %   quotation. |#1| contains the text of the \val{reference}.
@@ -1193,7 +1430,7 @@
 %
 % \begin{option}{reference/sep}
 %   \begin{syntax}
-%     |reference/sep =| \meta{dimen} \hfill Default: 2em
+%     reference/sep = \meta{dimen} \hfill Default: 2em
 %   \end{syntax}
 %   The minimum \meta{|dimen|} allowed between the end of a \env{scripture}
 %   quotation and its \val{reference} before the \val{reference} is pushed to
@@ -1200,9 +1437,17 @@
 %   the following line.
 % \end{option}
 %
+% \begin{option}{rightmargin}
+%   \begin{syntax}
+%     rightmargin = \meta{dimen} \hfill Default: 0pt
+%   \end{syntax}
+%   \meta{|dimen|} used for the right margin of the \env{scripture}
+%   environment.
+% \end{option}
+%
 % \begin{option}{selah/font}
 %   \begin{syntax}
-%     |selah/font =| \meta{font} \hfill Default: \cs{itshape}
+%     selah/font = \meta{font} \hfill Default: \cs{itshape}
 %   \end{syntax}
 %   \meta{|font|} used when printing \cs{selah} in a \env{poetry} environment.
 % \end{option}
@@ -1209,7 +1454,7 @@
 %
 % \begin{option}{selah/format}
 %   \begin{syntax}
-%     |selah/format =| \meta{macro} \hfill Default: \#1
+%     selah/format = \meta{macro} \hfill Default: \#1
 %   \end{syntax}
 %   \meta{|macro|} used to format the \cs{selah} in a \env{poetry}
 %   environment. |#1| contains the value of \opt{selah/text}.
@@ -1217,7 +1462,7 @@
 %
 % \begin{option}{selah/sep}
 %   \begin{syntax}
-%     |selah/sep =| \meta{dimen} \hfill Default: 1em
+%     selah/sep = \meta{dimen} \hfill Default: 1em
 %   \end{syntax}
 %   The minimum \meta{|dimen|} allowed between the end of a poetry line and
 %   \emph{Selah} before the \emph{Selah} is pushed to the following line.
@@ -1225,14 +1470,34 @@
 %
 % \begin{option}{selah/text}
 %   \begin{syntax}
-%     |selah/text =| \meta{text} \hfill Default: Selah
+%     selah/text = \meta{text} \hfill Default: Selah
 %   \end{syntax}
 %   \meta{|text|} used to for \cs{selah} in a \env{poetry} environment.
 % \end{option}
 %
+% \changes{v1.2}{2022/08/30}{Add \opt{textright/sep} option}
+% \begin{option}[added=2022-08-30]{textright/sep}
+%   \begin{syntax}
+%     textright/sep = \meta{dimen} \hfill Default: 1em
+%   \end{syntax}
+%   The minimum \meta{|dimen|} allowed between the end of a line and text
+%   aligned to the right with \cs{textright} before the right aligned text is
+%   pushed to the following line.
+% \end{option}
+%
+% \changes{v1.2}{2022/09/07}{Add \opt{verse/colour} option}
+% \begin{option}[added=2022-09-07]{verse/colour, verse/color}
+%   \begin{syntax}
+%     verse/colour = \meta{colour expression} \hfill Default: .
+%   \end{syntax}
+%   The \pkg{l3color} \meta{|colour expression|} to be used for verse numbers.
+%   By default the current colour is inherited. \opt{verse/color} is an alias
+%   for \opt{verse/colour}.
+% \end{option}
+%
 % \begin{option}{verse/font}
 %   \begin{syntax}
-%     |verse/font =| \meta{font} \hfill Default: \emph{Empty}
+%     verse/font = \meta{font} \hfill Default: \emph{Empty}
 %   \end{syntax}
 %   \meta{|font|} used for the \cs{vs} function.
 % \end{option}
@@ -1239,7 +1504,7 @@
 %
 % \begin{option}{verse/format}
 %   \begin{syntax}
-%     |verse/format =| \meta{macro} \hfill Default: \cs{textsuperscript}\{\#1\}
+%     verse/format = \meta{macro} \hfill Default: \cs{textsuperscript}\{\#1\}
 %   \end{syntax}
 %   \meta{|macro|} used to format the \cs{vs} function. |#1| contains the
 %   argument of \cs{vs}.
@@ -1248,7 +1513,7 @@
 % \changes{v1.1}{2022/08/15}{Add \opt{verse/hide} option}
 % \begin{option}[added=2022-08-15]{verse/hide}
 %   \begin{syntax}
-%     |verse/hide =| \meta{boolean} \hfill Default: false
+%     verse/hide = \meta{boolean} \hfill Default: false
 %   \end{syntax}
 %   Whether verses should be shown or hidden. The value of \meta{|boolean|} is
 %   optional and assumed to be \val{true} if not present. This option is the
@@ -1286,7 +1551,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.05 em
 %   \end{syntax}
 %   \meta{|dimen|} used to separate a \cs{vs} from the following text.
 % \end{option}
@@ -1294,7 +1559,7 @@
 % \changes{v1.1}{2022/08/15}{Add \opt{verse/show} option}
 % \begin{option}[added=2022-08-15]{verse/show}
 %   \begin{syntax}
-%     |verse/show =| \meta{boolean} \hfill Default: true
+%     verse/show = \meta{boolean} \hfill Default: true
 %   \end{syntax}
 %   Whether verses should be shown or hidden. The value of \meta{|boolean|}
 %   is optional and assumed to be \val{true} if not present. This option is
@@ -1303,7 +1568,7 @@
 %
 % \begin{option}{version}
 %   \begin{syntax}
-%     |version =| \meta{version} \hfill Default: \emph{Empty}
+%     version = \meta{version} \hfill Default: \emph{Empty}
 %   \end{syntax}
 %   \meta{|version|} added to the \val{reference} for a \env{scripture}
 %   quotation.
@@ -1311,7 +1576,7 @@
 %
 % \begin{option}{version/delim}
 %   \begin{syntax}
-%     |version/delim =| \meta{delim} \hfill Default: \{\ \}
+%     version/delim = \meta{delim} \hfill Default: \{\ \}
 %   \end{syntax}
 %   \meta{|delim|} to use between the \val{reference} and the \val{version} of a
 %   \env{scripture} quotation.
@@ -1319,7 +1584,7 @@
 %
 % \begin{option}{version/format}
 %   \begin{syntax}
-%     |version/format =| \meta{macro} \hfill Default: (\#1)
+%     version/format = \meta{macro} \hfill Default: (\#1)
 %   \end{syntax}
 %   \meta{|macro|} used to format the \val{version} for a \env{scripture}
 %   quotation. |#1| contains the text of the \val{version}.
@@ -1334,7 +1599,7 @@
 %
 % \begin{option}{center/aboveskip}
 %   \begin{syntax}
-%     |center/aboveskip =| \meta{skip} \hfill Default: \cs{medskipamount}
+%     center/aboveskip = \meta{skip} \hfill Default: \cs{medskipamount}
 %   \end{syntax}
 %   \meta{|skip|} inserted above the \env{center} environment.
 % \end{option}
@@ -1341,7 +1606,7 @@
 %
 % \begin{option}{center/belowskip}
 %   \begin{syntax}
-%     |center/belowskip =| \meta{skip} \hfill Default: \cs{medskipamount}
+%     center/belowskip = \meta{skip} \hfill Default: \cs{medskipamount}
 %   \end{syntax}
 %   \meta{|skip|} inserted below the \env{center} environment.
 % \end{option}
@@ -1348,7 +1613,7 @@
 %
 % \begin{option}{center/leftmargin}
 %   \begin{syntax}
-%     |center/leftmargin =| \meta{dimen} \hfill Default: 0pt
+%     center/leftmargin = \meta{dimen} \hfill Default: 0pt
 %   \end{syntax}
 %   \meta{|dimen|} used for the left margin of the \env{center} environment.
 % \end{option}
@@ -1355,7 +1620,7 @@
 %
 % \begin{option}{center/rightmargin}
 %   \begin{syntax}
-%     |center/rightmargin =| \meta{dimen} \hfill Default: 0pt
+%     center/rightmargin = \meta{dimen} \hfill Default: 0pt
 %   \end{syntax}
 %   \meta{|dimen|} used for the right margin of the \env{center} environment.
 % \end{option}
@@ -1369,7 +1634,7 @@
 %
 % \begin{option}{flushright/aboveskip}
 %   \begin{syntax}
-%     |flushright/aboveskip =| \meta{skip} \hfill Default: \cs{medskipamount}
+%     flushright/aboveskip = \meta{skip} \hfill Default: \cs{medskipamount}
 %   \end{syntax}
 %   \meta{|skip|} inserted above the \env{flushright} environment.
 % \end{option}
@@ -1376,7 +1641,7 @@
 %
 % \begin{option}{flushright/belowskip}
 %   \begin{syntax}
-%     |flushright/belowskip =| \meta{skip} \hfill Default: \cs{medskipamount}
+%     flushright/belowskip = \meta{skip} \hfill Default: \cs{medskipamount}
 %   \end{syntax}
 %   \meta{|skip|} inserted below the \env{flushright} environment.
 % \end{option}
@@ -1383,7 +1648,7 @@
 %
 % \begin{option}{flushright/leftmargin}
 %   \begin{syntax}
-%     |flushright/leftmargin =| \meta{dimen} \hfill Default: 0pt
+%     flushright/leftmargin = \meta{dimen} \hfill Default: 0pt
 %   \end{syntax}
 %   \meta{|dimen|} used for the left margin of the \env{flushright} environment.
 % \end{option}
@@ -1390,7 +1655,7 @@
 %
 % \begin{option}{flushright/rightmargin}
 %   \begin{syntax}
-%     |flushright/rightmargin =| \meta{dimen} \hfill Default: 0pt
+%     flushright/rightmargin = \meta{dimen} \hfill Default: 0pt
 %   \end{syntax}
 %   \meta{|dimen|} used for the right margin of the \env{flushright} environment.
 % \end{option}
@@ -1404,7 +1669,7 @@
 %
 % \begin{option}{hanging/aboveskip}
 %   \begin{syntax}
-%     |hanging/aboveskip =| \meta{skip} \hfill Default: \cs{medskipamount}
+%     hanging/aboveskip = \meta{skip} \hfill Default: \cs{medskipamount}
 %   \end{syntax}
 %   \meta{|skip|} inserted above the \env{hanging} environment.
 % \end{option}
@@ -1411,7 +1676,7 @@
 %
 % \begin{option}{hanging/belowskip}
 %   \begin{syntax}
-%     |hanging/belowskip =| \meta{skip} \hfill Default: \cs{medskipamount}
+%     hanging/belowskip = \meta{skip} \hfill Default: \cs{medskipamount}
 %   \end{syntax}
 %   \meta{|skip|} inserted below the \env{hanging} environment.
 % \end{option}
@@ -1418,7 +1683,7 @@
 %
 % \begin{option}{hanging/hang}
 %   \begin{syntax}
-%     |hanging/hang =| \meta{dimen} \hfill Default: 2em
+%     hanging/hang = \meta{dimen} \hfill Default: 2em
 %   \end{syntax}
 %   \meta{|dimen|} used for the indent of subsequent lines of the
 %   \env{hanging} environment.
@@ -1426,7 +1691,7 @@
 %
 % \begin{option}{hanging/leftmargin}
 %   \begin{syntax}
-%     |hanging/leftmargin =| \meta{dimen} \hfill Default: 1em
+%     hanging/leftmargin = \meta{dimen} \hfill Default: 1em
 %   \end{syntax}
 %   \meta{|dimen|} used for the left margin of the \env{hanging} environment.
 % \end{option}
@@ -1433,7 +1698,7 @@
 %
 % \begin{option}{hanging/rightmargin}
 %   \begin{syntax}
-%     |hanging/rightmargin =| \meta{dimen} \hfill Default: 1em
+%     hanging/rightmargin = \meta{dimen} \hfill Default: 1em
 %   \end{syntax}
 %   \meta{|dimen|} used for the right margin of the \env{hanging} environment.
 % \end{option}
@@ -1447,7 +1712,7 @@
 %
 % \begin{option}{midparachap/hideverse}
 %   \begin{syntax}
-%     |midparachap/hideverse =| \meta{boolean} \hfill Default: false
+%     midparachap/hideverse = \meta{boolean} \hfill Default: false
 %   \end{syntax}
 %   Whether a \cs{vs}|{1}| should automatically be inserted after a \cs{ch}
 %   when the \cs{ch} occurs mid-paragraph. This also affects \cs{ch} in
@@ -1501,7 +1766,7 @@
 %
 % \begin{option}{midparachap/showverse}
 %   \begin{syntax}
-%     |midparachap/showverse =| \meta{boolean} \hfill Default: true
+%     midparachap/showverse = \meta{boolean} \hfill Default: true
 %   \end{syntax}
 %   Whether a \cs{vs}|{1}| should automatically be inserted after a \cs{ch}
 %   when the \cs{ch} occurs mid-paragraph. This also affects \cs{ch} in
@@ -1520,7 +1785,7 @@
 %
 % \begin{option}{narrow/aboveskip}
 %   \begin{syntax}
-%     |narrow/aboveskip =| \meta{skip} \hfill Default: \cs{medskipamount}
+%     narrow/aboveskip = \meta{skip} \hfill Default: \cs{medskipamount}
 %   \end{syntax}
 %   \meta{|skip|} inserted above the \env{narrow} environment.
 % \end{option}
@@ -1527,7 +1792,7 @@
 %
 % \begin{option}{narrow/belowskip}
 %   \begin{syntax}
-%     |narrow/belowskip =| \meta{skip} \hfill Default: \cs{medskipamount}
+%     narrow/belowskip = \meta{skip} \hfill Default: \cs{medskipamount}
 %   \end{syntax}
 %   \meta{|skip|} inserted below the \env{narrow} environment.
 % \end{option}
@@ -1534,7 +1799,7 @@
 %
 % \begin{option}{narrow/leftmargin}
 %   \begin{syntax}
-%     |narrow/leftmargin =| \meta{dimen} \hfill Default: 1em
+%     narrow/leftmargin = \meta{dimen} \hfill Default: 1em
 %   \end{syntax}
 %   \meta{|dimen|} used for the left margin of the \env{narrow} environment.
 % \end{option}
@@ -1541,7 +1806,7 @@
 %
 % \begin{option}{narrow/rightmargin}
 %   \begin{syntax}
-%     |narrow/rightmargin =| \meta{dimen} \hfill Default: 1em
+%     narrow/rightmargin = \meta{dimen} \hfill Default: 1em
 %   \end{syntax}
 %   \meta{|dimen|} used for the right margin of the \env{narrow} environment.
 % \end{option}
@@ -1555,7 +1820,7 @@
 %
 % \begin{option}{poetry/aboveskip}
 %   \begin{syntax}
-%     |poetry/aboveskip =| \meta{skip} \hfill Default: \cs{medskipamount}
+%     poetry/aboveskip = \meta{skip} \hfill Default: \cs{medskipamount}
 %   \end{syntax}
 %   \meta{|skip|} inserted above the \env{poetry} environment.
 % \end{option}
@@ -1562,7 +1827,7 @@
 %
 % \begin{option}{poetry/belowskip}
 %   \begin{syntax}
-%     |poetry/belowskip =| \meta{skip} \hfill Default: \cs{medskipamount}
+%     poetry/belowskip = \meta{skip} \hfill Default: \cs{medskipamount}
 %   \end{syntax}
 %   \meta{|skip|} inserted below the \env{poetry} environment.
 % \end{option}
@@ -1569,7 +1834,7 @@
 %
 % \begin{option}{poetry/bigindent}
 %   \begin{syntax}
-%     |poetry/bigindent =| \meta{dimen} \hfill Default: 4em
+%     poetry/bigindent = \meta{dimen} \hfill Default: 4em
 %   \end{syntax}
 %   \meta{|dimen|} used for the indent subsequent lines of a line of poetry in
 %   a \env{poetry} environment if it needs to flow on to the following line.
@@ -1577,7 +1842,7 @@
 %
 % \begin{option}{poetry/indent}
 %   \begin{syntax}
-%     |poetry/indent =| \meta{dimen} \hfill Default: 1em
+%     poetry/indent = \meta{dimen} \hfill Default: 1em
 %   \end{syntax}
 %   \meta{|dimen|} used for the second half of a line of poetry in a
 %   \env{poetry} environment.
@@ -1585,7 +1850,7 @@
 %
 % \begin{option}{poetry/leftmargin}
 %   \begin{syntax}
-%     |poetry/leftmargin =| \meta{dimen} \hfill Default: 1em
+%     poetry/leftmargin = \meta{dimen} \hfill Default: 1em
 %   \end{syntax}
 %   \meta{|dimen|} used for the left margin of the \env{poetry} environment.
 % \end{option}
@@ -1592,7 +1857,7 @@
 %
 % \begin{option}{poetry/rightmargin}
 %   \begin{syntax}
-%     |poetry/rightmargin =| \meta{dimen} \hfill Default: 0pt
+%     poetry/rightmargin = \meta{dimen} \hfill Default: 0pt
 %   \end{syntax}
 %   \meta{|dimen|} used for the right margin of the \env{poetry} environment.
 % \end{option}
@@ -1600,7 +1865,7 @@
 % \changes{v1.1}{2022/07/31}{Add \opt{poetry/verse/left} option}
 % \begin{option}[added=2022-07-31]{poetry/verse/left}
 %   \begin{syntax}
-%     |poetry/verse/left =| \meta{boolean} \hfill Default: false
+%     poetry/verse/left = \meta{boolean} \hfill Default: false
 %   \end{syntax}
 %   Align verse numbers in \env{poetry} environments at the left margin of the
 %   \env{scripture} environment. This option is the opposite of
@@ -1654,7 +1919,7 @@
 % \changes{v1.1}{2022/07/31}{Add \opt{poetry/verse/right} option}
 % \begin{option}[added=2022-07-31]{poetry/verse/right}
 %   \begin{syntax}
-%     |poetry/verse/right =| \meta{boolean} \hfill Default: true
+%     poetry/verse/right = \meta{boolean} \hfill Default: true
 %   \end{syntax}
 %   Align verse numbers in \env{poetry} environments at the left margin of the
 %   poetry environment. The verse numbers overlap to the left. This option is
@@ -1664,7 +1929,7 @@
 % \changes{v1.1}{2022/07/31}{Add \opt{poetry/verse/sep} option}
 % \begin{option}[added=2022-07-31]{poetry/verse/sep}
 %   \begin{syntax}
-%     |poetry/verse/sep =| \meta{dimen} \hfill Default: 0.05 em
+%     poetry/verse/sep = \meta{dimen} \hfill Default: 0.05 em
 %   \end{syntax}
 %   \meta{|dimen|} used to separate a \cs{vs} from the following text in a
 %   \env{poetry} environment. This is only used for verses at the start of a
@@ -1683,10 +1948,9 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\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}
 %    \end{macrocode}
 %
 % \subsection{Messages}
@@ -1701,6 +1965,25 @@
     one~of~its~internal~environments,~which~is~not~supported. }
 %    \end{macrocode}
 %
+% Make sure \pkg{polyglossia} languages and variants are set up.
+%
+%    \begin{macrocode}
+\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. }
+%    \end{macrocode}
+%
+% Warn if a \opt{language} is requested and neither \pkg{babel} nor
+% \pkg{polyglossia} is loaded.
+%
+%    \begin{macrocode}
+\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. }
+%    \end{macrocode}
+%
 % \subsection{Options}
 %
 % Key-value settings for the \env{scripture} environment and its inner
@@ -1714,18 +1997,20 @@
     , 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
-    , leftmargin               .tl_set:N           = \l_@@_leftmargin_tl
-    , leftmargin               .value_required:n   = true
-    , leftmargin               .initial:n          = \c_zero_dim
-    , rightmargin              .tl_set:N           = \l_@@_rightmargin_tl
-    , rightmargin              .value_required:n   = true
-    , rightmargin              .initial:n          = \c_zero_dim
     , 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
@@ -1751,6 +2036,21 @@
     , indent                   .bool_set:N         = \l_@@_indent_bool
     , indent                   .default:n          = true
     , indent                   .initial:n          = true
+    , 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
@@ -1759,6 +2059,17 @@
     , 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 / 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 / delim        .tl_set:N           = \l_@@_ref_delim_tl
     , reference / delim        .value_required:n   = true
     , reference / delim        .initial:n          = \hfill
@@ -1771,6 +2082,9 @@
     , 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
@@ -1783,6 +2097,13 @@
     , 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 / font             .tl_set:N           = \l_@@_verse_font_tl
     , verse / font             .value_required:n   = true
     , verse / font             .initial:n          = 
@@ -1908,9 +2229,9 @@
     , poetry / verse / sep     .initial:n          = 0.05 em
   }
 %    \end{macrocode}
-% Process package options using \pkg{l3keys2e} package.
+% Process package options.
 %    \begin{macrocode}
-\ProcessKeysOptions { scripture }
+\ProcessKeyOptions
 %    \end{macrocode}
 %
 % \subsection{hooks}
@@ -1968,25 +2289,38 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_text_right:n}
+% \begin{macro}{\@@_text_right:nn}
 %   Align a word to the right and finish a paragraph, pushing to the next line
 %   if there is not space for the word.
 %    \begin{macrocode}
 \cs_new_protected:Nn \@@_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_@@_currenvir_str { flushright } }
+      { \str_if_eq_p:Vn \l_@@_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:
+        }
+      }
   }
 %    \end{macrocode}
 % \end{macro}
@@ -2007,6 +2341,8 @@
   {
     \group_begin:
     \l_@@_ref_font_tl
+    \str_if_eq:VnF \l_@@_ref_colour_tl { . }
+      { \exp_args:NV \color_select:n \l_@@_ref_colour_tl }
     \@@_ref_format:n { #1 }
 %    \end{macrocode}
 % Append a Bible version if it has been specified.
@@ -2055,6 +2391,104 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \subsubsection{Red lettering}
+%
+% \begin{macro}{\g_@@_red_letter_active_bool}
+%   Flag indicating if currently in a red letter block of text.
+%    \begin{macrocode}
+\bool_new:N \g_@@_red_letter_active_bool
+%    \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\@@_red_letter_on:}
+%   Mark the beginning of a section of text attributed to Jesus Christ.
+%    \begin{macrocode}
+\cs_new_protected:Nn \@@_red_letter_on:
+  {
+    \bool_if:NT \l_@@_red_letter_bool
+      {
+        \bool_gset_true:N \g_@@_red_letter_active_bool
+        \exp_args:NV \color_select:n \l_@@_red_letter_colour_tl
+        \str_if_eq:VnF \l_@@_currenvir_str { scripture }
+          {
+            \hook_gput_next_code:nn { env / \l_@@_currenvir_str / after }
+              {
+                \exp_args:NV \color_select:n \l_@@_red_letter_colour_tl
+              }
+          }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_red_letter_off:}
+%   Mark the beginning of a section of text attributed to Jesus Christ.
+%    \begin{macrocode}
+\cs_new_protected:Nn \@@_red_letter_off:
+  {
+    \bool_if:NT \l_@@_red_letter_bool
+      {
+        \color_select:n { scripture default colour }
+        \bool_gset_false:N \g_@@_red_letter_active_bool
+        \str_if_eq:VnF \l_@@_currenvir_str { scripture }
+          {
+            \hook_gput_next_code:nn { env / \l_@@_currenvir_str / after }
+              {
+                \color_select:n { scripture default colour }
+              }
+          }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Selecting language}
+%
+% \begin{macro}{\@@_select_language:}
+%   Select specified language if required.
+%    \begin{macrocode}
+\cs_new_protected:Nn \@@_select_language:
+  {
+    \tl_if_empty:NF \l_@@_language_tl
+      {
+        \@ifpackageloaded { babel }
+          {
+            \selectlanguage { \l_@@_language_tl }
+          }
+          {
+            \@ifpackageloaded { polyglossia }
+              {
+                \iflanguageloaded { \l_@@_language_tl }
+                  {
+                    \tl_if_empty:NTF \l_@@_language_variant_tl
+                      {
+                        \selectlanguage { \l_@@_language_tl }
+                      }
+                      {
+                        \selectlanguage
+                          [ variant = \l_@@_language_variant_tl ]
+                          { \l_@@_language_tl }
+                      }
+                  }
+                  {
+                    \msg_error:nnx
+                      { scripture }
+                      { language-error }
+                      { \l_@@_language_tl }
+                  }
+              }
+              {
+                \msg_warning:nnx
+                  { scripture }
+                  { language-waning }
+                  { \l_@@_language_tl }
+              }
+          }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
 % \subsubsection{Formatting and printing chapter numbers}
 %
 % \begin{macro}{\l_@@_chap_box, l_@@_chap_tmp_box}
@@ -2127,6 +2561,8 @@
           { \l_@@_chap_fontsize_dim }
           { \l_@@_chap_fontsize_dim }
           \selectfont
+        \str_if_eq:VnF \l_@@_chapter_colour_tl { . }
+          { \exp_args:NV \color_select:n \l_@@_chapter_colour_tl }
         \@@_chap_format:n { #1 }
       }
     \dim_set:Nn \l_@@_chap_width_dim
@@ -2187,8 +2623,10 @@
       {
         \hook_use:n { scripture / chap / before }
         \group_begin:
+        \str_if_eq:VnF \l_@@_chapter_colour_tl { . }
+          { \exp_args:NV \color_select:n \l_@@_chapter_colour_tl }
         \l_@@_chap_font_tl
-        #1
+        \@@_chap_format:n { #1 }
         \group_end:
         \skip_horizontal:N \l_@@_chap_sep_tl
         \hook_use:n { scripture / chap / after }
@@ -2257,8 +2695,12 @@
     \hook_use:n { scripture / verse / before }
     \bool_if:NT \l_@@_verse_show_bool
       {
+        \group_begin:
         \l_@@_verse_font_tl
+        \str_if_eq:VnF \l_@@_verse_colour_tl { . }
+          { \exp_args:NV \color_select:n \l_@@_verse_colour_tl }
         \@@_verse_format:n { #1 }
+        \group_end:
         \kern \l_@@_verse_sep_tl
       }
     \hook_use:n { scripture / verse / after }
@@ -2351,6 +2793,7 @@
       {
         \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
@@ -2394,7 +2837,28 @@
     \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:
     \cs_set_eq:NN \vs \@@_verse_output:n
+    \cs_set_protected_nopar:Npn \name ##1
+      {
+        \group_begin:
+        \l_@@_name_font_tl
+        \@@_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
+      {
+        \@@_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
@@ -2403,6 +2867,11 @@
       }
     \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 }
+      }
 %    \end{macrocode}
 % For left and right margins, use \cs{parshape} is already in a list,
 % otherwise use \cs{leftskip} and \cs{rightskip}
@@ -2453,6 +2922,7 @@
 % environments. This removes any unwanted \opt{belowskip} if present and
 % leaves the previously calculated line length of the final paragraph intact.
 %    \begin{macrocode}
+    \@@_red_letter_off:
     \mode_if_vertical:TF
       {
         \unskip
@@ -2482,10 +2952,10 @@
           }
       }
       { \parshape 1 ~ \@totalleftmargin ~ \linewidth }
-    \tl_if_novalue:nF { #1 }
-      {
-        \@@_reference:n { #1 }
-      }
+    \bool_lazy_or:nnF
+      { \tl_if_novalue_p:n { #1 } }
+      { \tl_if_empty_p:n { #1 } }
+      { \@@_reference:n { #1 } }
     \par
 %    \end{macrocode}
 % Restore right margin by resetting the \cs{parshape} if in a \LaTeX{} list
@@ -3243,7 +3713,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \begin{macro}{\@@_poetry_text_right:n}
+% \begin{macro}{\@@_poetry_text_right:nn}
 %   Align a word to the right and finish a paragraph, pushing to the next line
 %   if there is not space for the word.
 %    \begin{macrocode}
@@ -3436,7 +3906,9 @@
             \hook_use:n { scripture / chap / before }
             \group_begin:
             \l_@@_chap_font_tl
-            #1
+            \str_if_eq:VnF \l_@@_chapter_colour_tl { . }
+              { \exp_args:NV \color_select:n \l_@@_chapter_colour_tl }
+            \@@_chap_format:n { #1 }
             \group_end:
             \skip_horizontal:N \l_@@_chap_sep_tl
             \hook_use:n { scripture / chap / after }
@@ -3610,6 +4082,10 @@
     \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
@@ -3784,6 +4260,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

Modified: trunk/Master/texmf-dist/tex/latex/scripture/scripture.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/scripture/scripture.sty	2022-11-02 22:07:21 UTC (rev 64909)
+++ trunk/Master/texmf-dist/tex/latex/scripture/scripture.sty	2022-11-02 22:07:44 UTC (rev 64910)
@@ -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,19 +282,32 @@
   }
 \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
@@ -256,6 +314,8 @@
   {
     \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



More information about the tex-live-commits mailing list.