From f0e513312532c34b0e0612c5bc48ee6a3c780021 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Fri, 3 Aug 2018 16:23:39 +0900 Subject: fetchbibpes (3Aug) --- texmf-dist/doc/latex/fetchbibpes/README.md | 9 +- .../latex/fetchbibpes/examples/bibpes_replace.tex | 2 +- .../doc/latex/fetchbibpes/examples/bibpes_tst.pdf | Bin 209610 -> 73912 bytes .../doc/latex/fetchbibpes/examples/bibpes_tst.tex | 2 +- .../latex/fetchbibpes/examples/fetchversestxt.tex | 69 +++- .../fetchbibpes/examples/fetchversestxt_cobble.tex | 48 +++ texmf-dist/doc/latex/fetchbibpes/fetchbibpes.pdf | Bin 233867 -> 252788 bytes .../doc/latex/fetchbibpes/fetchbibpes_man.pdf | Bin 643826 -> 493219 bytes .../doc/latex/fetchbibpes/fetchbibpes_man.tex | 385 +++++++++++++++++---- .../source/latex/fetchbibpes/fetchbibpes.dtx | 293 ++++++++++++---- texmf-dist/tex/latex/fetchbibpes/fbpes.cfg | 26 +- texmf-dist/tex/latex/fetchbibpes/fetchbibpes.sty | 153 +++++--- texmf-dist/tex/latex/fetchbibpes/selfetch.def | 6 +- 13 files changed, 789 insertions(+), 204 deletions(-) create mode 100644 texmf-dist/doc/latex/fetchbibpes/examples/fetchversestxt_cobble.tex diff --git a/texmf-dist/doc/latex/fetchbibpes/README.md b/texmf-dist/doc/latex/fetchbibpes/README.md index c2ea1f90..ab138595 100644 --- a/texmf-dist/doc/latex/fetchbibpes/README.md +++ b/texmf-dist/doc/latex/fetchbibpes/README.md @@ -1,6 +1,6 @@ The fetchbibpes Bundle Author: D. P. Story -Dated: 2018/07/12 +Dated: 2018/07/30 This bundle provides two packages, bibpes and fetchbibpes. This pair of packages was motivated by a friend, who was preparing Bible studies lessons @@ -23,6 +23,13 @@ LaTeX. He wanted a `database' of Bible packages from which he could simply Unpack the distribution by latexing fetchbibpes.ins. +What's new (2018/07/30) Bug fixes. Added the cfg option for specifying a +custom contiguration file. New commands \showTranslAlways, \showTranslDecld, +\translFmt, \translTxtFmt, and \cobblevrs. All documented in the manual. +NOTE: The format for the CFG file has changes, you will need to update to +this new syntax; refer to Section 3.8 of the manual and to fbpes.cfg for an +example. + What's new (2018/07/12) Defined a new command \fetchversestxt; the command has the same arguments as \fetchverses, but it does not expand to typeset content. Rather, it defines two commands \versetxt and \passagetxt. These two diff --git a/texmf-dist/doc/latex/fetchbibpes/examples/bibpes_replace.tex b/texmf-dist/doc/latex/fetchbibpes/examples/bibpes_replace.tex index 7fd9f1d4..64a363f6 100644 --- a/texmf-dist/doc/latex/fetchbibpes/examples/bibpes_replace.tex +++ b/texmf-dist/doc/latex/fetchbibpes/examples/bibpes_replace.tex @@ -29,7 +29,7 @@ in the days of Herod the king, behold, there came wise men from the east to Jerusalem,\null \end{declareBVs} \end{verbatim} -Its used to define a Bible passage as seen in the DEF file. It is useful +It's used to define a Bible passage as seen in the DEF file. It is useful declaring a passage or two under discussion. The syntax for the argument of \cs{BV} is explained in the reference manual of \pkg{fetchbibpes}. Once declared, we can use it. diff --git a/texmf-dist/doc/latex/fetchbibpes/examples/bibpes_tst.pdf b/texmf-dist/doc/latex/fetchbibpes/examples/bibpes_tst.pdf index 8a63154d..c6ecb54b 100644 Binary files a/texmf-dist/doc/latex/fetchbibpes/examples/bibpes_tst.pdf and b/texmf-dist/doc/latex/fetchbibpes/examples/bibpes_tst.pdf differ diff --git a/texmf-dist/doc/latex/fetchbibpes/examples/bibpes_tst.tex b/texmf-dist/doc/latex/fetchbibpes/examples/bibpes_tst.tex index 1f8304ee..8b906f0d 100644 --- a/texmf-dist/doc/latex/fetchbibpes/examples/bibpes_tst.tex +++ b/texmf-dist/doc/latex/fetchbibpes/examples/bibpes_tst.tex @@ -28,7 +28,7 @@ This package defines two fetching commands, the syntax for these are, \begin{quote}\ttfamily \string\fetchverse[\ameta{opts}]\marg{\meta{book}\symbol{32}\meta{ch}:\meta{vrs}}\\[3pt] \string\fetchverses*[\ameta{opts}]\marg{\meta{book}\symbol{32}\meta{ch}:\meta{vrs}} or\\[3pt] - \string\fetchverses*[\ameta{opts}]\marg{\meta{book}\symbol{32}\meta{ch}:\meta{vrs\ensuremath{{}_1}}-\meta{vrs\ensuremath{{}_2}}} + \string\fetchverses*[\ameta{opts}]\marg{\meta{book}\symbol{32}\meta{ch}:\meta{vrs\ensuremath{{}_1}}-\upshape[\meta{vrs\ensuremath{{}_2}}\upshape]} \end{quote} The \texttt{*} parameter is optional, when present the book and verse references are shown, otherwise they are not. diff --git a/texmf-dist/doc/latex/fetchbibpes/examples/fetchversestxt.tex b/texmf-dist/doc/latex/fetchbibpes/examples/fetchversestxt.tex index ce99f0b3..d7c08a6a 100644 --- a/texmf-dist/doc/latex/fetchbibpes/examples/fetchversestxt.tex +++ b/texmf-dist/doc/latex/fetchbibpes/examples/fetchversestxt.tex @@ -1,10 +1,13 @@ \documentclass{article} \usepackage{pdfcomment} +\hypersetup{bookmarks=false} \usepackage[% useverses=none % useverses=verses ]{fetchbibpes} +\hypersetup{pdfpagemode=UseNone} + \def\cs#1{\texttt{\char`\\#1}} \let\pkg\textsf \let\env\texttt @@ -68,8 +71,22 @@ that is typeset. In the latter case, the \texttt{typeset} option is used as well as some fancy uses of the \texttt{replace} replace option to get the naughty single quotes and apostrophes to look right. +\showTranslAlways +\translTxtFmt{ (#1)} + +Before\fetchversestxt[showfirst]{1Co 1:1-2}\pdfmargincomment[author={\versetxt}]{\passagetxt} continuing the discussion of the \texttt{typeset} option, let us pause +to illustrate the \cs{showTranslAlways} and \cs{translTxtFmt}. Notice that +when quoting the default Bible (KJV) in the first sticky note above, the +transition note does not appear in the title heading of the sticky note, this +is because the \texttt{transl} key was not used. We expand +\cs{showTranslAlways} to always show the translation note (refer to all the +remaining sticky notes in this document). We also change the formatting for the transition notes +in the title bar of the sticky notes by executing \verb|\translTxtFmt{ (#1)}|. All subsequent comment notes +will reflect this change. We conclude this paragraph by inserting a sticky note in the margin that uses the default Bible (KJV). + + The rest of this article discusses the \texttt{typeset} option using\fetchversestxt[abbr=none,from=ISV]{1Ki 1:5} -\versetxt\space(ISV).\pdfmargincomment[author={\versetxt}]{\passagetxt} +\versetxt.\pdfmargincomment[author={\versetxt}]{\passagetxt} This passage contains double quotes (\texttt{"}) and apostrophes (\texttt{\char13}). \medskip\noindent @@ -81,7 +98,6 @@ as \cs{fetchverses}. \medskip\goodbreak\noindent \verb~\fetchversestxt[typeset,abbr=none,from*=ISV]{1Ki 1:5}\passagetxt~\\[3pt] \bDQ\eSQ\fetchversestxt[typeset,abbr=none,from*=ISV]{1Ki 1:5}\passagetxt -%\makeatletter\expandafter\@gobble\passagetxt\makeatother \medskip\noindent \verb~\fetchverses[abbr=none,from*=ISV]{1Ki 1:5}~\\[3pt] @@ -116,4 +132,53 @@ both forms yield the same results, but now let's take away the field.\fetchversestxt[abbr=none,from*=ISV]{1Ki 1:5} \pdfmargincomment[author={\versetxt}]{\passagetxt} + +\medskip\noindent +\textbf{The \texttt{typeset} and \texttt{typeset*} options with a value.} The +rest of this article discusses the \texttt{typeset} and \texttt{typeset*} +options. As a rule, if \cs{passagetxt} is to be passed to an annotation, the +\texttt{typeset*} option should be used if it has a value; if it does not +have a value, then there is no reason to use \texttt{typeset} or +\texttt{typeset*}, under normal circumstances. Here we use \texttt{typeset*} +for both \cs{fetchverses} and \cs{fetchversestxt}. We +use\fetchversestxt[typeset*={replace={ad-n-ahy-juh}{ad-n-\textbf{ahy}-j\textit{uh}}},abbr=none,from*=ISV,replace={Adonijah}{Adonijah +(ad-n-ahy-juh)}]{1Ki 1:5} \versetxt\space as our sample verse, and manipulate it +with the \texttt{replace} +option.\pdfmargincomment[author={\versetxt}]{\passagetxt} This passage +contains double quotes (\texttt{"}) and apostrophes (\texttt{\char13}). The ``raw'' passage is, +\begin{quote} +\verb~\fetchverses[abbr=none,from*=ISV]{1Ki 1:5}~\\[3pt] +\fetchverses[abbr=none,from*=ISV]{1Ki 1:5} +\end{quote} +Our goal with this passage is to correct the first apostrophe (Haggith`s son +should be Haggith's son), and to insert a phonetic spelling of Adonijah. This passage +will be typeset as well as inserted into a PDF annotation, so we must be sure not to +include any {\LaTeX} formatting commands. After hours of meditation, the following options +were taken: +\begin{fpquote}[rightmargin=0pt]\small +\verb~[typeset*={replace={ad-n-ahy-juh}{ad-n-\textbf{ahy}-j\textit{uh}}},~\\ +\verb~abbr=none,from*=ISV,replace={Adonijah}{Adonijah (ad-n-ahy-juh)}]~ +\end{fpquote} +When these options are for \cs{fetchversestxt}, the value of +\texttt{typeset*} is ignored; as a result, Adonijah is replaced by Adonijah +(ad-n-ahy-juh), see the comment note below. When these options are applied to +\cs{fetchverses}, the \texttt{replace} value is automatically modified to +read, +\begin{fpquote}[rightmargin=0pt] +\verb~replace={Adonijah}{Adonijah (ad-n-ahy-juh)}~\\ +\qquad\verb~{ad-n-ahy-juh}{ad-n-\textbf{ahy}-j\textit{uh}}}~ +\end{fpquote} +As a result, both versions of the passage a phonetic spelling of Adonijah, but the typeset version include changes of +font styles. + +\medskip +The final results of this set of argument is given below. +\begin{quote} +\bDQ\eSQ\fetchverses[typeset*= + {replace={ad-n-ahy-juh}{ad-n-\textbf{ahy}-j\textit{uh}}{decided,}{decided, ``I'm going to be king!'' So\gobbletoSo}}, + replace={Adonijah}{Adonijah (ad-n-ahy-juh)},abbr=none,from*=ISV]{1Ki 1:5}\fetchversestxt[typeset*= + {replace={ad-n-ahy-juh}{ad-n-\textbf{ahy}-j\textit{uh}}{decided,}{decided, ``I'm going to be king!'' So\gobbletoSo}}, + replace={Adonijah}{Adonijah (ad-n-ahy-juh)},abbr=none,from*=ISV]{1Ki 1:5}\pdfmargincomment[author={\versetxt}]{\passagetxt} +\end{quote} +Note the typeset version and the annotation version are exactly as designated! \end{document} diff --git a/texmf-dist/doc/latex/fetchbibpes/examples/fetchversestxt_cobble.tex b/texmf-dist/doc/latex/fetchbibpes/examples/fetchversestxt_cobble.tex new file mode 100644 index 00000000..09ba70ce --- /dev/null +++ b/texmf-dist/doc/latex/fetchbibpes/examples/fetchversestxt_cobble.tex @@ -0,0 +1,48 @@ +\documentclass{article} +\usepackage[ignorecfg, + useverses=none +]{fetchbibpes} + +\addtoBibles{YLT,ISV,NKJV} + + +\title{Cobbling together several passages} +\author{D. P. Story} + +\reversemarginpar + +\begin{declareBVs} +\BV(1Co 1:1 KJV) Paul, called to be an apostle of Jesus Christ through the will of God, and Sosthenes our brother,\null +\BV(1Co 1:2 KJV) Unto the church of God which is at Corinth, to them that are sanctified in Christ Jesus, + called to be saints, with all that in every place call upon the name of Jesus Christ our Lord, both theirs and ours:\null +\BV(1Co 1:3 KJV) Grace be unto you, and peace, from God our Father, and from the Lord Jesus Christ.\null +\BV(1Co 1:4 KJV) I thank my God always on your behalf, for the grace of God which is given you by Jesus Christ;\null +\BV(1Co 1:5 KJV) That in every thing ye are enriched by him, in all utterance, and in all knowledge;\null +% +\BV(1Ki 1:5 ISV) Meanwhile, about this time Haggith's son Adonijah began to seek a reputation for himself and decided, + "I'm going to be king!" So he prepared chariots, cavalry, and 50 soldiers to serve as a security detail to guard him.\null +% +\BV(Gen 1:1 YLT) In the beginning of God's preparing the heavens and the earth--\null +\BV(Gen 1:2 YLT) the earth hath existed waste and void, and darkness is on the face of the deep, + and the Spirit of God fluttering on the face of the waters,\null +\BV(Gen 1:3 YLT) and God saith, `Let light be;' and light is.\null +% +\BV(Joh 15:4 NKJV) Abide in Me, and I in you. As the branch cannot bear fruit of itself, + unless it abides in the vine, neither can you, unless you abide in Me.\null +\BV(Joh 15:5 NKJV) "I am the vine, you are the branches. He who abides in Me, + and I in him, bears much fruit; for without Me you can do nothing.\null +\end{declareBVs} + +\parindent0pt \parskip6pt + +\begin{document} + +\maketitle + +\fetchversestxt[typeset,abbr=none,from=ISV,showfirst]{1Ki 1:5}\cobblevrs\holdverses{(\versetxt)\space\passagetxt} +\fetchversestxt[typeset,showfirst]{1Co 1:1-2}\cobblevrs\holdverses{ (\versetxt)\space\passagetxt} +\fetchversestxt[typeset,abbr=none,from=ISV]{1Ki 1:5}\cobblevrs\holdverses{ (\versetxt)\space\passagetxt} +\fetchversestxt[typeset,abbr=none,from=NKJV,replace={"I am the}{I am the}]{Joh 15:4-5}\cobblevrs\holdverses{ (\versetxt)\space\passagetxt''} +\holdverses + +\end{document} diff --git a/texmf-dist/doc/latex/fetchbibpes/fetchbibpes.pdf b/texmf-dist/doc/latex/fetchbibpes/fetchbibpes.pdf index 6e41480b..b696fd54 100644 Binary files a/texmf-dist/doc/latex/fetchbibpes/fetchbibpes.pdf and b/texmf-dist/doc/latex/fetchbibpes/fetchbibpes.pdf differ diff --git a/texmf-dist/doc/latex/fetchbibpes/fetchbibpes_man.pdf b/texmf-dist/doc/latex/fetchbibpes/fetchbibpes_man.pdf index 2b1f4562..9e8d6a78 100644 Binary files a/texmf-dist/doc/latex/fetchbibpes/fetchbibpes_man.pdf and b/texmf-dist/doc/latex/fetchbibpes/fetchbibpes_man.pdf differ diff --git a/texmf-dist/doc/latex/fetchbibpes/fetchbibpes_man.tex b/texmf-dist/doc/latex/fetchbibpes/fetchbibpes_man.tex index 8fed63c2..25690bb4 100644 --- a/texmf-dist/doc/latex/fetchbibpes/fetchbibpes_man.tex +++ b/texmf-dist/doc/latex/fetchbibpes/fetchbibpes_man.tex @@ -32,8 +32,18 @@ \BV(Gal 1:16 NKJV) to reveal His Son in me, that I might preach Him among the Gentiles, I did not immediately confer with flesh and blood,\null \end{declareBVs} +\addtolength{\marginparwidth}{20pt} \makeatletter +\setcounter{secnumdepth}{4} +\setcounter{tocdepth}{5} +\makeatletter +\renewcommand*{\theparagraph}{\texorpdfstring{\protect\P\protect\ }{\textparagraph}} +\renewcommand{\paragraph} + {\renewcommand{\@seccntformat}[1]{\theparagraph}% + \@startsection{paragraph}{4}{0pt}{6pt}{-3pt}{\color{\aeb@subsubsectioncolor}\bfseries}} +\renewcommand*\l@paragraph{\@dottedtocline{4}{5.0em}{1em}} %{7.0em}{4.1em}} + \renewenvironment{quote}[1][] {\def\@rgi{#1}\ifx\@rgi\@empty \let\rghtm\@empty\else\def\rghtm{\rightmargin\leftmargin}\fi @@ -56,10 +66,6 @@ \urlstyle{tt} -%\def\tutpath{doc/tutorial} -%\def\tutpathi{tutorial} -%\def\expath{../examples} - \def\STRUT{\rule{0pt}{14pt}} @@ -72,7 +78,7 @@ email={dpstory@acrotex.net}, subject=Documentation for the fetchbibpes and bibpes packages, talksite={\url{www.acrotex.net}}, - version={2.4.5, 2018/07/12}, + version={2.4.9, 2018/07/30}, Keywords={LaTeX, e-sword, Bible passages, AcroTeX}, copyrightStatus=True, copyrightNotice={Copyright (C) \the\year, D. P. Story}, @@ -399,7 +405,7 @@ Output file: \texttt{mydefs/Gen1-KJV.def} \makebox[0pt][r]{\dots\dots\dots\dots\dots\dots\quad}\dots\dots\dots\dots\dots\dots \endgroup\par\medskip\noindent Passage references appear in the margins, while the passages themselves are -in the body of the document. When\marginpar{\raggedright\opt{build} verses +in the body of the document. When\marginpar{\small\raggedleft\opt{build}\\verses\\ \opt{!build}} the \texttt{build} option, shown in bold font above, is specified, \pkg{bibpes} is fully functional in the sense that the \EXT{TXT} file is read and the \EXT{DEF} file is created and saved. When \texttt{build} @@ -741,9 +747,9 @@ It is perhaps always better to use \cs{fetchverses} for single and multiple vers \item \fetchverse[abbr=long,roman]{1Co 1:1} \end{itemize} - \item[\texttt{from=\ameta{\upshape{KVJ|KVJ+|ISV}}}] The value of the - \texttt{from} key is the Bible translation to be used. For example, - \texttt{from=ISV}. + \item[\texttt{from=\ameta{\upshape{KVJ|KVJ+|ISV}}}]\label{item:from} The + value of the \texttt{from} key is the Bible translation to be used. For + example, \texttt{from=ISV}. \textbf{Example} \verb|\fetchverse[abbr=none,from=ISV]{Gen 1:1}| yields, \begin{quote} @@ -759,10 +765,12 @@ It is perhaps always better to use \cs{fetchverses} for single and multiple vers \verb|\fetchverse{Gen 1:1}| fetches Genesis 1:1 from the \texttt{KJV}, if defined. - If you want to add other Bibles use the \cs{addtoBibles} to declare - them. See \mlhyperref[\linktxtcolor{webgreen}]{s:suppfetch}{Section~\protect\ref*{s:suppfetch}} - for more information on this - command. + If you want to introduce other Bible translations into your document, use + the command \cs{addtoBibles} to declare them; see + \mlhyperref[\linktxtcolor{webgreen}]{s:suppfetch}{Section~\protect\ref*{s:suppfetch}} + for more information on \cs{addtoBibles}. To add Bible translations to all + documents you produce, `register' them in the configuration files; refer + to \hyperref[s:cfg]{Section~\ref*{s:cfg}} to read how to do this. \item[\texttt{alt=\ameta{word}}]\label{key:alt} The value \ameta{word} is a single word (containing no spaces). The \pkg{fetchbibpes} @@ -822,20 +830,57 @@ and an informative message is written to the log. The demo file \texttt{bibpes\_alt-star.tex} tests this feature. \item[\texttt{transl=\ameta{text}}] The \texttt{transl} key is an - annotation key that appends text (\ameta{text}) on the end of the - Bible reference, such as a translation abbreviation, - \texttt{transl=KJV}. - -\paragraph*{Examples} We annotate the translation version using `King James Version'. + annotation key that appends text (\ameta{text}) to the end of the + Bible reference, such as \texttt{transl=KJV}, to obtain the + \textit{translation note}. The \texttt{transl} internally defines a macro + that holds its value, but also defines a public command \cs{gtransl}\marginpar{\small\raggedleft\cs{gtransl} defined} that + expands to \ameta{text}. This command is redefined at the next use of the + \texttt{transl} key within \cs{fetchverses} or \cs{fetchversestxt}. + +\paragraph*{Examples} We set the translation note to `King James Version'. \begin{quote}\small \verb|\fetchverse[abbr=none,transl=King James Version]{Gen 1:1}|\\[3pt]\normalsize \fetchverse[abbr=none,transl=King James Version]{Gen 1:1} \end{quote} Normally, the version abbreviation is used as the \ameta{text}: -\begin{quote}\small +\begin{quote} \verb|\fetchverse[abbr=none,transl=KJV]{Gen 1:1}|\\[3pt]\normalsize \fetchverse[abbr=none,transl=KJV]{Gen 1:1} \end{quote} +The translation note does not appear unless the \texttt{transl} key is specified with a value. +In the example below, there is no \texttt{transl} key (and there is no \texttt{from} key so the +default Bible is used (\fbdefaultBible)). +\begin{quote} +\verb|\fetchverse[abbr=none]{Gen 1:1}|\\[3pt]\normalsize +\fetchverse[abbr=none,from=KJV]{Gen 1:1} +\end{quote} +To get the translation note to appear you can either specify a value for the +\texttt{transl} key, as we did above, or turn on the feature of always showing the translation +note. +\bVerb\takeMeasure{\string\showTranslAlways\quad\string\showTranslDecld}% +\begin{dCmd}[commandchars=!()]{\bxSize} +\showTranslAlways!quad\showTranslDecld +\end{dCmd} +\eVerb \cs{showTranslAlways} turns on the translation note,\footnote{If the +\texttt{transl} key is not specified, tt uses the value of the \texttt{from} +key; if the \texttt{from} key is not specified, the default Bible is used.} +while \cs{showTranslDecld} to the default behavior, that is, show the +translation note only when the \texttt{transl} key has a declared value. Thus, +\begin{quote} +\verb|\showTranslAlways|\\ +\verb|\fetchverse[abbr=none]{Gen 1:1}| expands to,\\[3pt] +\showTranslAlways +\fetchverse[abbr=none]{Gen 1:1} +\end{quote} +The Bible abbreviation is used (KJV), if the \texttt{transl} is present in the optional parameter +list, its value will be used instead. +\begin{quote} +\verb|\showTranslAlways|\\ +\verb|\fetchverse[abbr=none,transl=KJ]{Gen 1:1}| expands to,\\[3pt] +\showTranslAlways +\fetchverse[abbr=none,transl=KJ]{Gen 1:1} +\end{quote} +The sample file \texttt{fetchversestxt.tex} illustrates \cs{showTranslAlways}. \item[\texttt{from*=\ameta{version}}] The \texttt{from*} combines the actions of the options \texttt{from} and \texttt{transl} and is @@ -1235,12 +1280,53 @@ parse it correctly. The above example appears in \texttt{bibpes\_replaces.tex}. -\item[\texttt{typeset=\ameta{\upshape{true|false}}}] This option is used with \cs{fetchversestxt}; -if \texttt{true} (or if simply \texttt{typeset} is specified), the macros created by -\cs{fetchversestxt} are intended to be typeset into the document; the default for \cs{fetchversestxt} -is \texttt{typeset=false} while the default for \cs{fetchverses} is \texttt{typeset=true}. Putting -\texttt{typeset=false} within the optional argument of \cs{fetchverses} has no effect. Refer to the -subsection titled \Nameref{fvtxt}. +\item[\texttt{typeset=\ameta{opts}}]\label{item:typeset} This option was designed for + \cs{fetchversestxt}, but may be used with \cs{fetchverses} as + well.\footnote{This key is not used with \cs{fetchverse}.} Refer to the + subsection titled \mlNameref{fvtxt} for more information on the command. + \begin{itemize} + \item \textbf{For \cs{fetchverses}:} When \texttt{typeset} appears within + the optional argument of \cs{fetchverses} its value (\ameta{opts}) is + added \emph{to the end of the option list}. This may cause options + specified by \texttt{typeset} to overwrite the options that are + already declared. However, there is an important exception, that for + the \texttt{replace} key\marginpar{\small\raggedleft\texttt{replace} option special case}; in this case, the arguments of the + \texttt{replace} declared within \texttt{typeset} are appended to the + arguments of the \texttt{replace} declared in the option list of + \cs{fetchverses}. Thus, +\begin{Verbatim}[fontsize=\small,commandchars=!()] +\fetchverses[typeset={{brother}{\textbf{brother}},!ameta(other-opts)}, +(!qquad)replace={brother,}{brother.},...]{1Co 1:1} +!STRUT!normalfont(This is equivalent to) +!STRUT\fetchverses[replace={brother,}{brother.} +!qquad{brother}{\textbf{brother}},...,!ameta(other-opts)]{1Co 1:1} +\end{Verbatim} + + \item \textbf{For \cs{fetchversestxt}:} If the \texttt{typeset} key + appears (possibly with an empty value) within the option list of + \cs{fetchversestxt}, it declares that the two macros \cs{versestxt} and + \cs{passagetxt} (created by \cs{fetchversestxt}) are intended to be + typeset into the document; the \ameta{opts} value \emph{is ignored}. + The key itself effects the treatment of quotation marks and apostrophes; + when present, `smart quotes' are used and \cs{bDQ}, \cs{eDQ}, \cs{bSQ}, + and \cs{eSQ} have effect. See \hyperref[ProbsQuotes]{Section~\ref*{ProbsQuotes}} + for a discussion of these latter commands. + \end{itemize} + The purpose of \texttt{typeset} (as well as \texttt{typeset*}) is to + enable the document author to write one set of options for both + \cs{fetchverses} and \cs{fetchversestxt}. The value of \texttt{typeset} + provides additional formatting options not available through + \cs{fetchversestxt}. + +\item[\texttt{typeset*=\ameta{opts}}] This key has the same features as + \texttt{typeset} when specified within the option list of + \cs{fetchverses}. Within the option list of \cs{fetchversestxt}, however, + this key-value has no effect at all; \cs{fetchversestxt} has its normal + characteristics: no {\LaTeX} formatting or font changes are supported; + the `smart quotes' are not used; and the commands \cs{bDQ}, \cs{eDQ}, + \cs{bSQ}, and \cs{eSQ} are not obeyed. + + The section \Nameref{fvtxt} includes some discussion and examples of these last two keys. \end{description} \paragraph*{Predefined options using a `helper' command.}\label{para:PredefHelper} It can become @@ -1270,7 +1356,9 @@ The basic syntax for \pkg{fetchbibpes} is as follows: useverses={!ameta(list)}, deffolder=!ameta(path), useselverses, - usesr,ignorecfg + usesr, + ignorecfg, + cfg=!ameta(name) ]{fetchbibpes} \end{Verbatim} @@ -1334,13 +1422,21 @@ from a verse. See \hyperref[s:substr]{Section~\ref*{s:substr}} for details. \item[\opt{ignorecfg}] When this key is present (no value is required), the \EXT{CFG} file for this package (\texttt{fbpes.cfg}) is \emph{not loaded}. Refer to \hyperref[s:cfg]{Section~\ref*{s:cfg}} for more information on the \EXT{CFG} file. + +\item[\opt{cfg=\ameta{name}}] The value of this key specifies the base name + of the configuration file (\texttt{\ameta{name}.cfg}) to be used. If the + \opt{cfg} does not appear or has no value, the default configuration file + is used (\texttt{fbpes.cfg}). The configuration file is input only if the + \opt{ignorecfg} option \emph{does not appear} on the package option list. + An example of the default configuration file (\texttt{fbpes.cfg}) is + provided with this distribution. \end{description} \paragraph*{Demo file:} \texttt{bibpes\_tst.tex}. \subsection{Supporting commands for fetching verses}\label{s:suppfetch} -\subsubsection{Adding Bibles} +\subsubsection{Adding Bibles}\label{ss:addtoBibles} Suppose you want to fetch verses from the American Standard Version (ASV) and Young's Literal Translation (YLT), first download them (if not already on your system) using the \app{e-Sword} desktop application; second, use the @@ -1373,17 +1469,18 @@ You can set your own default Bible using the \cs{defaultBible} command. \begin{dCmd}[commandchars=!()]{\bxSize} \defaultBible{!ameta(transl)} \end{dCmd} -\eVerb where \ameta{transl} is the name of a Bible translation assigned -by the \app{e-Sword} application. The name \ameta{transl} must be a -recognized Bible translation: KJV, KJV+, ISV, or any Bible translation registered -by the \cs{addtoBibles} command. - - of the \texttt{from} -key of the fetch commands. Other than the ones initially defined -(\texttt{KJV}, \texttt{KJV+}, and \texttt{ISV}), Bible can be added on -with the \cs{addtoBibles} command, or by redefining the \texttt{from} -key, perhaps in the \EXT{CFG}; see \hyperref[s:cfg]{Section~\ref*{s:cfg}} -for more information on how to do this. +\eVerb where \ameta{transl} is the name of a Bible translation assigned by +the \app{e-Sword} application. The name \ameta{transl} must be a recognized +Bible translation: KJV, KJV+, ISV, or any Bible translation registered by the +\cs{addtoBibles} command. The command +\cs{fbdefaultBible}\marginpar{\small\raggedleft\cs{fbdefaultBible} defined} +holds the (current) default Bible abbreviation. + +Other than the ones initially defined (\texttt{KJV}, \texttt{KJV+}, and +\texttt{ISV}), a Bible translation can be added on with the \cs{addtoBibles} +command, or by adding in a new Bible translation in the \EXT{CFG}; +see \hyperref[s:cfg]{Section~\ref*{s:cfg}} for more information on how to do +this. \paragraph*{Example} Purchase, download and install \texttt{NKJV} (a premium Bible) and declare in a document: @@ -1456,7 +1553,7 @@ the \EXT{DEF} files. Thus, if we type \verb|\usePassage{Gen 1:1 KJV}|, we get, That is, you get the `raw' passage without any annotations (translation, book, chapter, verse, and so on). Only one passage (verse) may be retrieved this way. -\subsubsection{\texorpdfstring{\protect\cs{fetchversestxt}}{\textbackslash{fetchversestxt}}: +\subsubsection{\texorpdfstring{{\protect\mlcs{fetchversestxt}}}{\textbackslash{fetchversestxt}}: raw retrieval with options}\label{fvtxt} \def\myNote{type=text,name=Note,color=webyellow} @@ -1490,7 +1587,7 @@ options, any formatting options are ignored (I hope), otherwise, all options should work as described earlier. The application\fetchversestxt[showfirst]{Gen 1:1-}\annotpro[presets=\myNote, -margin,readonly,title={\versetxt},margintext={\hfill\versetxt},margprior=\hfill]{\passagetxt} my former-friend had in mind +margin,readonly,title={\versetxt},margintext={\hfill\versetxt},margprior=\hfill]{\passagetxt} my former friend had in mind was to pass the \cs{passagetxt} command to an annotation macro such as \cs{annotpro} (\pkg{annot\_pro} package) or \cs{pdfcomment} (\pkg{pdfcomment} package). What you see in the margin is \cs{annotpro}. \begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small] @@ -1498,25 +1595,170 @@ The application\fetchversestxt[showfirst]{Gen 1:1-}\annotpro[type=text, name=Note,color=webyellow,margin,readonly, title={\versetxt},margintext={\hfill\versetxt}, margprior=\hfill]{\passagetxt} -my former-friend had in mind ... +my former friend had in mind ... \end{Verbatim} Refer to the manual, \texttt{annotpro\_man.pdf} for the particulars of using \cs{annotpro} from the \pkg{annot\_pro} package. -\paragraph*{The \texttt{typeset} option.} The optional argument of \cs{fetchversestxt} accepts the -\texttt{typeset} option. Without the \opt{typeset} option, the expansion of -\cs{passagetxt} does not contain any {\LaTeX} styling or font changes; if the -\opt{typeset} option is taken, the \cs{passagetxt} expands to the same -passage as its non-txt counterpart. The accompanying demonstration file -\texttt{fetchversestxt.tex} extensively discusses the \opt{typeset} option. +\paragraph[The \texttt{typeset} option]{The \texttt{typeset} option.} +The \cs{fetchversestxt} command accepts \texttt{typeset} (see +page~\pageref{item:typeset} for a description) as an option. Without the +\opt{typeset} option, \cs{passagetxt} does not contain any {\LaTeX} styling +or font changes; if the \opt{typeset} option is taken, \cs{passagetxt} +expands to the same passage as its non-txt counterpart. The accompanying +demonstration file \texttt{fetchversestxt.tex} extensively discusses the +\opt{typeset} option. \newtopic\noindent -The demonstration file for this feature is \texttt{fetchversestxt.tex}. +The demonstration file for this feature is \texttt{fetchversestxt.tex}. It +includes several examples of the use of \texttt{typeset} and +\texttt{typeset*} with both commands \cs{fetchverses} and \cs{fetchversestxt}, with +and without a value for the key. + +\paragraph[Cobbling together verses]{Cobbling together verses.} In this paragraph the \cs{cobblevrs} command +is discussed and illustrated. +\bVerb\takeMeasure{\string\cobblevrs*\darg{\ameta{\cs{cmd}}\darg{\ameta{text}}}}% +\begin{dCmd}[commandchars=!()]{\bxSize} +\cobblevrs*{!ameta(\cmd)}{!ameta(text)} +\end{dCmd} +\endgroup\noindent \cs{cobblevrs} takes \ameta{text} and adds it to the end +of the text macro \ameta{\cs{cmd}}. If \ameta{\cs{cmd}} is undefined +initially, \cs{cobblevrs} defines it as to be empty; if \ameta{\cs{cmd}} is +already defined, \cs{cobblevrs} adds \ameta{text} to \ameta{\cs{cmd}}. If +\ameta{\cs{cmd}} is already defined (perhaps used previously by +\cs{cobblevrs}), to empty its contents before using again (with +\cs{cobblevrs}) use the star-version of the command. + +The \cs{cobblevrs} command was designed to be used with the commands \cs{versetxt} and \cs{passagetxt} generated +by \cs{fetchversetxt}, but can be use for any purpose. Example of intended usage: +\begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small,commandchars=!()] +\fetchversestxt[typeset,abbr=none]{Gen 1:1}\cobblevrs*\holdverses + {(\versetxt)\space\passagetxt} +\fetchversestxt[typeset,from*=ISV]{Gen 1:1}\cobblevrs\holdverses + { Now, the same quote from ISV: (\versetxt)\space\passagetxt} +\fetchversestxt[typeset,from*=YLT]{Gen 1:1}\cobblevrs\holdverses + { Again, but now from YLT: (\versetxt)\space\passagetxt}% +\holdverses % !normalfont(expand our cobbled verses) +\end{Verbatim} +The \cs{holdverses} macro then expands to the following paragraph: +\begin{fpquote} +\fetchversestxt[typeset,abbr=none]{Gen 1:1}\cobblevrs*\holdverses + {(\versetxt)\space\passagetxt} +\fetchversestxt[typeset,from*=ISV]{Gen 1:1}\cobblevrs\holdverses + { Now, the same quote from ISV: (\versetxt)\space\passagetxt} +\fetchversestxt[typeset,from*=YLT]{Gen 1:1}\cobblevrs\holdverses +{ Again, but now from YLT: (\versetxt)\space\passagetxt}\holdverses +\end{fpquote} +\cs{cobblevrs} is a tool that is available if ever needed. The demo file for this feature +is \texttt{fetchversestxt\_cobble.tex}. + +\subsection{Formatting the translation note} + +By ``translation note'', we mean the value of the \texttt{transl} key. By default, the note appears +as plain text following the Bible reference and a space. +\begin{fpquote}[] +\verb|\fetchverses*[from=ISV,transl=ISV]{Gen 1:1}|\\ +\fetchverses*[from=ISV,transl=ISV]{Gen 1:1} +\end{fpquote} + +\subsubsection{Formatting through the \texorpdfstring{\protect\texttt{transl}}{\textbackslash{transl}} key} + +In the next two paragraphs, we comment on formatting the translation note using the \texttt{transl} key. + +\paragraph[Using \texorpdfstring{\protect\cs{fetchverses}}{\textbackslash{fetchverses}}]{Using \texorpdfstring{\protect\cs{fetchverses}}{\textbackslash{fetchverses}}.} +The translation note may be formatted for \emph{individual passages} using the +\texttt{transl} key. +\emph{Simple textual formatting} is possible, such as +\begin{fpquote}[] +\verb|\fetchverses*[from=ISV,transl={- ISV}]{Gen 1:1}|\\ +\fetchverses*[from=ISV,transl={- ISV}]{Gen 1:1} +\end{fpquote} +You can change font styles as well. +\begin{fpquote}[] +\verb|\fetchverses*[from=ISV,transl=\textbf{ISV}]{Gen 1:1}|\\ +\fetchverses*[from=ISV,transl=\textbf{ISV}]{Gen 1:1} +\end{fpquote} + +\paragraph[Using \texorpdfstring{\protect\cs{fetchversestxt}}{\textbackslash{fetchversestxt}}]{Using \texorpdfstring{\protect\cs{fetchversestxt}}{\textbackslash{fetchversestxt}}.} +The command \cs{fetchversestxt} does not produce any typeset material, but defines to macros +\cs{versetxt} and \cs{passagetxt}. Simple changes to the translation note are no problem: +\begin{fpquote}[] +\verb|\fetchversestxt[from=ISV,transl={- ISV}]{Gen 1:1}|\\ +\fetchversestxt[from=ISV,transl={- ISV}]{Gen 1:1}\verb|\versetxt| now expands to \versetxt +\end{fpquote} +To individually change the font styling, we have to protect style change with \cs{protect}, +\begin{fpquote}[] +\verb|\fetchversestxt[from=ISV,|\\ +\null\qquad\verb|transl={- |\textbf{\texttt{\string\protect}}\verb|\textbf{ISV}}]{Gen 1:1}|\\ +\fetchversestxt[from=ISV,transl={- \protect\textbf{ISV}}]{Gen 1:1}\verb|\versetxt| expands to \versetxt +\end{fpquote} +Above, the \cs{protect} command is shown in bold font for emphasis. + +\subsubsection{Setting the default format} + +Another way to set the formatting of the translation note is by changing the default formatting. (The default is +plain text preceded by a space.) + +\paragraph{\texorpdfstring{\protect\cs{fetchverses}}{\textbackslash{fetchverses}}} + +As mentioned above, the default format is just plain text, though individual changes can be +made through the \texttt{transl} key. To change the default formatting for \cs{fetchverses} and \cs{fetchverse}, +use the \cs{translFmt} command. +\bVerb\takeMeasure{\string\translFmt\darg{\ameta{fmt-transl-\#1}}}% +\setlength{\dimen0}{\bxSize}\edef\temp{\the\dimen0}\setlength{\dimen0}{\linewidth-\temp}% +\def\1{\makebox[0pt][l]{\hspace{\temp}\enspace\textrm{(}\string\translFmt\darg{\string\space\#1}\textrm{)}}}% +\begin{dCmd}[commandchars=!()]{\bxSize} +\translFmt{!ameta(fmt-transl-#1)} +!1\translFmtDef +\end{dCmd} +\endgroup\noindent Within the argument of \cs{translFmt}, use \texttt{\#1} to symbolically represent the value of the \texttt{transl} key. The default +declaration for \cs{translFmt} is given to the right in parentheses. +For example, +\begin{fpquote}[] +\verb|\translFmt{ - \textbf{#1}}| (Note space after left brace)\\ +\verb|\fetchverses*[from*=ISV]{Gen 1:1}|\\ +\translFmt{ - \textbf{#1}}% +\fetchverses*[from*=ISV]{Gen 1:1} +\end{fpquote} +The presentation for the translation note becomes a hyphen followed by the +value of \texttt{transl} in bold font. This presentation of the translation +note will continue until you either leave the group where \cs{translFmt} was +used, or you expand \cs{translFmtDef} to return the presentation to its +package default, given above to the right in parentheses. + + +\paragraph[\texorpdfstring{\protect\cs{fetchversestxt}}{\textbackslash{fetchversestxt}}]{\texorpdfstring{\protect\cs{fetchversestxt}}{\textbackslash{fetchversestxt}}.} + +When using \cs{fetchversestxt}, change the default presentation style for the translation note using +\cs{translTxtFmt} and \cs{translTxtDef}. +\bVerb\takeMeasure{\string\translTxtFmt\darg{\ameta{fmt-transl-\#1}}}% +\setlength{\dimen0}{\bxSize}\edef\temp{\the\dimen0}\setlength{\dimen0}{\linewidth-\temp}% +\def\1{\makebox[0pt][l]{\hspace{\temp}\enspace\textrm{(}\string\translTxtFmt\darg{\string\space\#1}\textrm{)}}}% +\begin{dCmd}[commandchars=!()]{\bxSize} +\translTxtFmt{!ameta(fmt-transl-#1)} +!1\translTxtFmtDef +\end{dCmd} +\endgroup\noindent These declarations only effect the \cs{versetxt} command defined by \cs{fetchversestxt}. Thus, +\begin{fpquote}[] +\verb|\translTxtFmt{ - \textbf{#1}}| (Note space after left brace)\\ +\verb|\fetchversestxt[from*=ISV]{Gen 1:1}|\\ +\translTxtFmt{\space- \textbf{#1}}% +\fetchversestxt[from*=ISV]{Gen 1:1}\versetxt +\end{fpquote} + +When using \cs{fetchversestxt}, a common presentation style is given in the next example: +\begin{fpquote}[] +\verb|translTxtFmt{ (#1)}| (Note space after left brace)\\ +\verb|\fetchversestxt[from*=ISV]{Gen 1:1}|\\ +\translTxtFmt{ (#1)}% +\fetchversestxt[from*=ISV]{Gen 1:1}\verb|\versetxt| expands to \versetxt +\end{fpquote} +The sample file \texttt{fetchversestxt.tex} illustrates \cs{translTxtFmt}. \subsection{Setting various spaces} -\paragraph*{The space prior to the reference for -\texorpdfstring{\protect\opt{citeatend}}{citeatend}.} +\subsubsection{The space prior to the reference for +\texorpdfstring{\protect\opt{citeatend}}{citeatend}} When the option \texttt{citeatend=true}, the \cs{priorRefSpc} command sets the spacing between the passage and the reference. @@ -1543,8 +1785,7 @@ declaration. \priorRefSpc{\fbFitItIn}\afterBookSpc{\nobreak\ }\fetchverses*{Gen 1:1-2} \end{quote} - -\paragraph*{Setting the space after the book name}\leavevmode +\subsubsection{Setting the space after the book name}\leavevmode \bVerb\takeMeasure{\string\afterBookSpc\darg{\ameta{value}}\quad\normalfont(\texttt{\string\ })}% \begin{dCmd}[commandchars=~!@]{\bxSize} \afterBookSpc{~ameta!value@}~quad~normalfont(~ttfamily\~vissp~normalfont) @@ -1566,7 +1807,7 @@ change occurred within a \texttt{quote} environment. A declaration of \cmd{\afterBookSpc\darg{}} removes the space completely. There may be some application to this command. -\paragraph*{The space following the passage reference}\leavevmode +\subsubsection{The space following the passage reference}\leavevmode \bVerb\takeMeasure{\string\afterRef\darg{\ameta{value}}\quad\normalfont(\texttt{\string\@empty})}% \begin{dCmd}[commandchars=~!^]{\bxSize} \afterRef{~ameta!value^}~quad~normalfont(~ttfamily\@empty~normalfont) @@ -1583,7 +1824,7 @@ beginning of the passage use \cmd{\afterRef\darg{\darg{}}}; this latter declaration was used in the example of the \opt{priorref} key of the fetch commands. -\paragraph*{The space between the book and book number}\leavevmode +\subsubsection{The space between the book and book number}\leavevmode \bVerb\takeMeasure{\string\afterBookSpc\darg{\ameta{value}}\quad\normalfont(\texttt{\string\space})}% \begin{dCmd}[commandchars=~!@]{\bxSize} \afterBookSpc{~ameta!value@}~quad~normalfont(~ttfamily\space~normalfont) @@ -1735,36 +1976,32 @@ to \textsl{Strong's Concordance}. \subsection{The \EXT{CFG} file of the package}\label{s:cfg} Unless the option \marginpar{\small\raggedleft\opt{ignorecfg} option}\opt{ignorecfg} option -appears in the option list of \pkg{fectchbibpes}, the configuration file +appears in the option list of \pkg{fetchbibpes}, the configuration file \texttt{fbpes.cfg} is input at the end of the package. There is not much to `configure' in this package, however. The application that was in mind when this feature was created is the redefinition of the \opt{from} key of the fetch command options. +\bVerb\takeMeasure{\string\registerBibles\darg{\ameta{comma-delimited-list}}}% +\begin{dCmd}[commandchars=!()]{\bxSize} +\defaultBible{!ameta(transl)} +\registerBibles{!ameta(comma-delimited-list)} +\end{dCmd} +\endgroup\noindent The above is the suggest contents of the \texttt{fbpes.cfg}: (1) first establish +the default Bible, if different than the one already declared; (2) list the +Bible translations to be `registered'. The registered Bibles will be +recognized by the \texttt{from} key, without having to first pass them +through the \cs{addtoBibles} command (\Nameref{ss:addtoBibles}). -For example, you might have many more books than the minimal ones set up by this package, so +For example, you may routinely use many more books than the minimal ones set up by this package, so in your own \EXT{CFG} file you might define, \begin{Verbatim}[xleftmargin=\amtIndent,fontsize=\small] \defaultBible{NKJV} -\define@choicekey+{fbpes}{from}[\val\nr]% - {NKJV,KJV,KJV+,ISV,RV,YLT}[NKJV]{% - \ifcase\nr\relax - \def\fbpes@from{ NKJV}\or - \def\fbpes@from{ KJV}\or - \def\fbpes@from{ KJV+}\or - \def\fbpes@from{ ISV}\or - \def\fbpes@from{ RV}\or - \def\fbpes@from{ YLT}\fi -}{% - \if@ddtoBiblesUsed - \def\fbpes@from{ #1}\setkeys{bibadd}{addfrom=#1}\else - \PackageWarning{fetchbibpes}{Bad Choice of \val\MessageBreak - will use \fb@defaultBible\space instead}\def\fbpes@from{}\fi -} +\registerBibles{NKJV,KJV,KJV+,ISV,RV,YLT} \end{Verbatim} -The above code is a modification of \cs{define@choicekey} for the -\texttt{from} key (the key family is named \texttt{fbpes}) found in -\texttt{fetchbibpes.sty} (or \texttt{fetchbibpes.dtx}). +The \cs{registerBibles}\marginpar{\small\raggedleft\cs{registerBibles} +discussed} is a command not previously mentioned. Its argument is a +comma-delimited list of Bible translations recognized by \textsf{e-Sword}. A less complicated method that does not modify the definition of the \opt{from} key of the \texttt{fbpes} family is to simply use the diff --git a/texmf-dist/source/latex/fetchbibpes/fetchbibpes.dtx b/texmf-dist/source/latex/fetchbibpes/fetchbibpes.dtx index 980b6e2d..078144ee 100644 --- a/texmf-dist/source/latex/fetchbibpes/fetchbibpes.dtx +++ b/texmf-dist/source/latex/fetchbibpes/fetchbibpes.dtx @@ -16,7 +16,7 @@ % %\NeedsTeXFormat{LaTeX2e}[1997/12/01] %\ProvidesPackage{fetchbibpes} -% [2018/07/12 v2.4.5 fetchbibpes: Fetch Bible passages from DEF files (dps)] +% [2018/07/30 v2.4.9 fetchbibpes: Fetch Bible passages from DEF files (dps)] %<*driver> \documentclass{ltxdoc} \usepackage[colorlinks,hyperindex=false]{hyperref} @@ -128,7 +128,7 @@ %\begin{quote}\ttfamily %\cs{fetchverse}[\ameta{opts}]\darg{\ameta{book}{\visispace}\ameta{ch}:\ameta{vrs}}\\[3pt] %\cs{fetchverses*}[\ameta{opts}]\darg{\ameta{book}{\visispace}\ameta{ch}:\ameta{vrs}} or\\[3pt] -%\cs{fetchverses*}[\ameta{opts}]\darg{\ameta{book}{\visispace}\ameta{ch}:\ameta{vrs\SUB{1}}-\ameta{vrs\SUB{2}}} +%\cs{fetchverses*}[\ameta{opts}]\darg{\ameta{book}{\visispace}\ameta{ch}:\ameta{vrs\SUB{1}}-\upshape[\ameta{vrs\SUB{2}}\upshape]} %\end{quote} % where \ameta{opts} are defined options of the \texttt{fbpes} family; % \ameta{book} is either the three letter book abbreviation that @@ -136,15 +136,18 @@ % (as given in the \textbf{Alt\_Abbr} column of \hyperref[table:esabbr]{Table~\ref*{table:esabbr}}); % \ameta{ch}:\ameta{vrs} is a chapter-verse reference. % The \cs{fetchverse} command only fetches a single verse, while \cs{fetchverses} -% can fetch multiple verses (by the syntax \ameta{ch}:\ameta{vrs\SUB1}-\ameta{vrs\SUB2}). The run of verses +% can fetch multiple verses (by the syntax \ameta{ch}:\ameta{vrs\SUB1}-\ameta{vrs\SUB2}); when you specify +% no upper limit to the range (\ameta{ch}:\ameta{vrs\SUB1}-), all verses starting with \ameta{vrs\SUB1} will be +% included up to the first verse that is undefined (in the same chapter). The run of verses % must all be from the same chapter. The `\texttt{*}' parameter is optional, when % present the book and verse references are shown, otherwise they are not. We -% illustrate with \texttt{Gen\;1:1} and \texttt{Gen\;1:1-2}. +% illustrate with \texttt{Gen\;1:1}, \texttt{Gen\;1:1-2}, and \texttt{Gen\;1:1-}. % \begin{itemize} % \item \cs{fetchverse\darg{Gen\;1:1}}: \fetchverse{Gen 1:1} % \item \cs{fetchverses\darg{Gen\;1:1}}: \fetchverses{Gen 1:1} % \item \cs{fetchverses*\darg{Gen;1:1}}:\ \fetchverses*{Gen 1:1} % \item \cs{fetchverses\darg{Gen\;1:1-2}}: \fetchverses{Gen 1:1-2} +% \item \cs{fetchverses\darg{Gen\;1:1-}}: \fetchverses{Gen 1:1-} % \end{itemize} % %\begin{table}[htb] @@ -282,6 +285,17 @@ \newif\iffb@ignorecfg \fb@ignorecfgfalse \define@key{fetchbibpes.sty}{ignorecfg}[true]{\fb@ignorecfgtrue} % \end{macrocode} +% \leavevmode\IndexOpt{cfg}\hskip-\marginparsep\texttt{=\ameta{name}} +% We give the package user the option of having several configuration files, which can +% be specified through the \opt{cfg} option; here \ameta{name} is the base name of the +% configuration file (\texttt{\ameta{name}.cfg}). If \opt{cfg} is not specified in the +% package option list, \texttt{fbpes.cfg} is used for the configuration file, unless +% the \opt{ignorecfg} option is in effect. +% \changes{v2.4.9}{2018/07/30}{Added the \string\texttt{cfg} option} +% \begin{macrocode} +\define@key{fetchbibpes.sty}{cfg}[fbpes]{\def\fb@cfg@basename{#1}} +\def\fb@cfg@basename{fbpes} +% \end{macrocode} % We process the options for this package. % \begin{macrocode} \ProcessOptionsX @@ -308,7 +322,7 @@ % % \subsection{The \texorpdfstring{\protect\cs{BV}}{\textbackslash{BV}} command \textsl{et al.}} % -% \begin{macro}{\BV}\texttt{(\ameta{verse-ref})} +% \begin{macro}{\BV}\hskip-\marginparsep\texttt{(\ameta{verse-ref})\ameta{passage}\string\null}\\ % The Bible verses are stored in a separate file (DEF) or declared within the \env{declareBVs} environment. % (The companion package, \textsf{bibpes}, writes a DEF file.) In either case, a Bible verse is one of the % arguments of the \cs{BV} command, the syntax of which is given below. @@ -350,7 +364,7 @@ \newenvironment{declareBVs*}{}{} % \end{macrocode} % \end{environment} -% \begin{macro}{\usePassage} \texttt{\darg{\ameta{verse-ref}}} +% \begin{macro}{\usePassage}\hskip-\marginparsep\texttt{\darg{\ameta{verse-ref}}} % takes the raw \ameta{verse-ref} and expands to the associated passage: % |\usePassage{Gen 1:1 KJV}| should produce the referenced passage, provided this reference has been % defined. @@ -512,7 +526,7 @@ % of the Bible you are using the most. % \begin{macrocode} \newcommand{\defaultBible}[1]{\def\@rg{#1}\ifx\@rg\@empty - \else\def\fb@defaultBible{#1}\def\fbpes@from{ #1}\fi} + \else\gdef\fbdefaultBible{#1}\def\fbpes@from{ #1}\fi} \defaultBible{KJV} % \end{macrocode} % \end{macro} @@ -532,42 +546,47 @@ \global\@ddtoBiblesUsedtrue\fi \define@choicekey+{bibadd}{addfrom}[\val\nr]{#1}{} {\PackageWarning{fetchbibpes}{Bad Choice of \val\MessageBreak - will use \fb@defaultBible\space instead}% - \edef\fbpes@from{ \fb@defaultBible}}% + will use \fbdefaultBible\space instead}% + \edef\fbpes@from{ \fbdefaultBible}}% } \@onlypreamble\addtoBibles % \end{macrocode} % \end{macro} -% Now we define the \IndexKey{from}\texttt{from} key, it has only three values, -% \texttt{KJV}, \texttt{KJV+}, and \texttt{ISV}, but through \cs{addtoBibles}, -% it can be extended. -% \begin{macrocode} -\define@choicekey+{fbpes}{from}[\val\nr]% - {KJV,KJV+,ISV}[KJV]{% - \ifcase\nr\relax - \def\fbpes@from{ KJV}\or - \def\fbpes@from{ KJV+}\or - \def\fbpes@from{ ISV}\fi -}{% - \if@ddtoBiblesUsed -% \end{macrocode} % If \cs{addtoBibles} has been expanded in the preamble, we determine if the argument % \texttt{\#1} is in the new list of Bibles, if yes, OK; otherwise, we emit a warning % and default to KJV. % \begin{macrocode} - \def\fbpes@from{ #1}\setkeys{bibadd}{addfrom=#1}\else - \PackageWarning{fetchbibpes}{Bad Choice of \val\MessageBreak - will use \fb@defaultBible\space instead}% - \edef\fbpes@from{ \fb@defaultBible}\fi +\def\handleUnRegBibles#1{\edef\@rgi{#1}\if@ddtoBiblesUsed + \edef\fbpes@babbr{#1}\edef\x{\noexpand + \setkeys{bibadd}{addfrom=#1}}\x\else + \ifx\@rgi\@empty\edef\fbpes@babbr{\fbdefaultBible}\else + \PackageWarning{fetchbibpes}{Bad Choice of \val\MessageBreak + will use \fbdefaultBible\space instead}% + \edef\fbpes@babbr{\fbdefaultBible}\fi\fi + \edef\fbpes@from{ \fbpes@babbr}% } % \end{macrocode} +% Now we define the \IndexKey{from}\texttt{from} key, it has only three values, +% \texttt{KJV}, \texttt{KJV+}, and \texttt{ISV}, but through \cs{addtoBibles}, +% it can be extended. +% \begin{macrocode} +\def\fbSetFromChoiceKey#1{% + \define@choicekey+{fbpes}{from}[\val\nr]% + {#1}[]{\edef\fbpes@babbr{\val}\edef\fbpes@from{ \val}} + {\handleUnRegBibles{##1}}} +\def\registerBibles#1{\fbSetFromChoiceKey{#1}}% +\registerBibles{KJV,KJV+,ISV} +% \end{macrocode} %\paragraph{Example} |\fetchverse[abbr=none,from=ISV]{Gen 1:1}| yields, %\begin{quote}\fetchverse[abbr=none,from=ISV]{Gen 1:1}\end{quote} % The \IndexKey{transl}\texttt{transl} key is an annotation key, that appends % text on the end of the Bible reference, such as a translation: \texttt{transl=KJV}. +% \changes{v2.4.7}{2018/07/20}{Define a global command \string\cs{g@fbpes@transl}} +% \changes{v2.4.8}{2018/07/28}{Make \string\cs{g@fbpes@transl} public with \string\cs{gtransl}} % \begin{macrocode} \define@key{fbpes}{transl}[]{\def\fbpes@transl{#1}% - \ifx\fbpes@transl\@empty\else\edef\fbpes@transl{\space#1}\fi} + \gdef\g@fbpes@transl{#1}\gdef\gtransl{#1}% dps29 +} \let\fbpes@transl\@empty % \end{macrocode} % \paragraph*{Example} We annotate the translation version using `King James Version'. @@ -719,8 +738,14 @@ % and \ameta{repl} are strings, but they can be commands as well, if done correctly. % \changes{v2.0}{2016/09/17}{Introduced the \string\texttt{replace} option for \string\cs{fetchverse}} % \begin{macrocode} -\define@key{fbpes}{replace}[]{\fp@cntArgs#1\stop@rg - \def\fbpes@replace{#1}} +%\define@key{fbpes}{replace}[]{\fp@cntArgs#1\stop@rg +% \def\fbpes@replace{#1}} +\define@key{fbpes}{replace}[]{%\fp@cntArgs#1\stop@rg + \ifx\fbpes@replace\@empty\def\fbpes@replace{#1}\else % dps13 + \expandafter\def\expandafter\fbpes@replace + \expandafter{\fbpes@replace#1}\fi + \expandafter\fp@cntArgs\fbpes@replace\stop@rg +} \let\stop@rg\relax\def\st@p@arg{\stop@rg}% % \end{macrocode} % Count the number of arguments to see if there are an even number of them. @@ -925,14 +950,32 @@ \let\fbpes@localdefs\@empty % \end{macrocode} %See the demo file \texttt{bibpes\_replaces.tex} for an example.\par\medskip\noindent -% The\IndexKey{typeset}\space\texttt{typeset} key is used with \cs{fetchversestxt}. If true, +% \IndexKey{typeset}\hskip-\marginparsep\texttt{=\ameta{opts}}% +% The \texttt{typeset} key is used with \cs{fetchversestxt}. If true, % we assume the \cs{passagetxt} command is meant to be typeset and, as a result, the normal % behavior of \cs{fetchverses} is followed; if false, certain special definitions are activated % that allows \cs{passagetxt} to pass to another macro, such as \cs{pdfcomment}. This option is % ignored within the optional list of \cs{fetchverses}. -% \begin{macrocode} -\define@boolkey{fbpes}{typeset}[true]{} -\KV@fbpes@typesettrue +% \par\medskip\noindent Added a value to the key \texttt{typeset}, which was a boolean key. +% Now, it is a combination, both a Boolean and a regular key. +% \changes{v2.4.6}{2018/07/13}{Change \string\texttt{typeset} so it has a value} +% \begin{itemize} +% \item If \cs{if@versetxt} is true, the value (\ameta{opts}) of \texttt{typeset} is ignored +% \item If \cs{if@versetxt} is false, the value of \texttt{typeset} (\ameta{opts}/\penalty0\cs{fbpes@typeset}) is included +% at the end of the option list.% +% \end{itemize} +% \begin{macrocode} +\newif\ifKV@fbpes@typeset\KV@fbpes@typesettrue +\define@key{fbpes}{typeset}[]{\KV@fbpes@typesettrue + \def\fbpes@typeset{#1}}\let\fbpes@typeset\@empty +% \end{macrocode} +% \leavevmode\IndexOpt{typeset*}\hskip-\marginparsep\texttt{=\ameta{opts}}% +% The \texttt{typeset*} option is the same as \texttt{typeset}, but does +% not set the switch to \cs{KV@fbpes@typesettrue}. +% \changes{v2.4.6}{2018/07/13}{Added \string\texttt{typeset*}} +% \begin{macrocode} +\define@key{fbpes}{typeset*}[]{% + \def\fbpes@typeset{#1}}\let\fbpes@typeset\@empty % \end{macrocode} %\par\medskip\noindent %This ends the section on the key-values of the \cs{fetchverse} and \cs{fetchverses} commands. @@ -970,9 +1013,42 @@ %command may be used in the body of the document to change the style. %\changes{v1.7}{2016/04/11}{Expand the first token of \string\texttt{\#1} before passing to % \string\cs{setkeys}.} +%\changes{v2.4.7}{2018/07/20}{Added switch \string\cs{ifshowDefBible}} +% \begin{macrocode} +\newtoks\fetchtoks % dps13 +% \end{macrocode} +% The translation note is not shown unless the \texttt{transl} key has a specified value. We provide +% a method of showing the translation note, even if \texttt{transl} is not present. +% \DescribeMacro\showTranslAlways\cs{showTranslAlways} turns on the feature of showing the translation +% note; whereas \DescribeMacro\showTranslDecld\cs{showTranslDecld} reverts the system back to its +% default, show translation note only if \texttt{transl} has a value. +% \changes{v2.4.8}{2018/07/28}{Added \string\cs{showTranslAlways} and \string\cs{showTranslDecld}} +% \begin{macrocode} +\newif\ifshowDefBible \showDefBiblefalse +\def\showTranslAlways{\showDefBibletrue} +\let\AlwaysShowDefBible\showTranslAlways +\def\showTranslDecld{\showDefBiblefalse} +\let\NeverShowDefBible\showTranslDecld +\newif\if@versetxt\@versetxtfalse +\def\useBookStyle#1{\def\fp@SK{\setkeys{fbpes}}\expandafter + \fp@SK\expandafter{#1}\if@versetxt\else + \ifx\fbpes@typeset\@empty\else +% \end{macrocode} +% If \cs{fbpes@typeset} is nonempty and \cs{if@versetxt} is false, we combine +% any key-values passed to us through the \texttt{typeset} option. +% \begin{macrocode} + \fetchtoks={#1,}\edef\x{\the\fetchtoks}% dps13 + \fetchtoks=\expandafter\expandafter + \expandafter{\expandafter\x\fbpes@typeset}% + \let\fbpes@replace\@empty +% \end{macrocode} +% And, read again this new set of options. % \begin{macrocode} -\def\useBookStyle#1{% - \def\fp@SK{\setkeys{fbpes}}\expandafter\fp@SK\expandafter{#1}} + \edef\x{\the\fetchtoks}\expandafter + \fp@SK\expandafter{\x}% + \fi + \fi +} \useBookStyle{abbr,roman=false,from,transl} \def\ioiv#1#2#3#4{#1}\def\iioiv#1#2#3#4{\fbpes@case{#2}} \def\iiioiv#1#2#3#4{\fbpes@case{#3}}\def\ivoiv#1#2#3#4{\fbpes@case{#4}} @@ -1206,10 +1282,8 @@ % \begin{macrocode} \if@versetxt \ifKV@fbpes@typeset % dps -% \set@typeset@protect % dps \protected@edef\x{\noexpand\g@addto@macro\noexpand \passagetxt{\fb@insrtvn\fb@passage}}\x -% \set@display@protect \else \edef\x{\noexpand\g@addto@macro\noexpand \passagetxt{\fb@insrtvn\fb@passage}}\x @@ -1269,13 +1343,23 @@ % variables whose values are determined by the key-values and other formatting commands. % \begin{macrocode} \def\fb@fetchverse{% + \ifshowDefBible + \ifx\fbpes@transl\@empty + \ifx\fbpes@babbr\@empty % default bible + \edef\fbpes@transl{\fbdefaultBible}% dpsjul30 + \else + \edef\fbpes@transl{\fbpes@babbr}% + \fi + \fi % dps29 + \fi \ifbookexists \def\book@passage{\fbp@format\l@fbp@delim\expandafter\fb@fmtBook \expandafter{\bib@book}\fb@bksp\bib@passage - \fbpes@transl\r@fbp@delim}% + \fb@transl@fmt{\fbpes@transl}\r@fbp@delim}% dps29 \else \def\book@passage{\l@fbp@delim\fb@qq\bib@book\fb@qq - \fb@bksp\bib@passage\fbpes@transl\r@fbp@delim}% + \fb@bksp\bib@passage + \fb@transl@fmt{\fbpes@transl}\r@fbp@delim}% dps29 \fi \ifKV@fbpes@citeatend\else \fbpes@priorref{\ifKV@fbpes@nocite\else @@ -1322,12 +1406,15 @@ \fetchverses[#1]{#2}\egroup } % \end{macrocode} +% We \cs{let} \cs{fetchversetxt} to \cs{fetchversestxt} in case doc author fails type it correctly. +% \begin{macrocode} +\let\fetchversetxt\fetchversestxt +% \end{macrocode} % \end{macro} % We continue \cs{fetchverses} by getting the arguments and parsing them. % \begin{macrocode} \newcommand\fb@fetchversesi[2][]{\def\@rgi{#1}\def\passagespec{#2}% - \ifx\@rgi\@empty\else - \useBookStyle{#1}\ifx\fbpes@altstar\@empty\else + \ifx\@rgi\@empty\else\useBookStyle{#1}\ifx\fbpes@altstar\@empty\else \ifx\fbpes@alt\@empty\else\PackageWarning{fetchbibpes} {You have specified both alt* and alt,\MessageBreak removing the alt key}\fi\fi\fi @@ -1358,27 +1445,69 @@ \def\fb@insrtvn{\ifnum\@tempcnta=\fb@verseStart\relax \ifKV@fbpes@showfirst\verseFmt{\the\@tempcnta}\fi \else\space\verseFmt{\the\@tempcnta}\fi} +% \end{macrocode} +% \leavevmode\DescribeMacro{\translTxtFmt}\hskip-\marginparsep\texttt{\darg{\ameta{fmt-transl-\#1}}}\\ +% Defines an internal text macro with one argument (\texttt{\#1}), this argument is the translation text macro \cs{fbpes@transl}. +% Its expansion is delayed. This command affects \cs{feachversestxt}. The initial declaration +% is |\translTxtFmt{\space #1}|, but the document author can change is for whatever purposes. Return to this +% default declaration by expanding \DescribeMacro{\translTxtFmtDef}\cs{translTxtFmtDef}. The initial declaration +% and default is |\translTxtFmt{\space #1}|. +% \changes{v2.4.8}{2018/07/28}{Added \string\cs{translTxtFmt} and \string\cs{translTxtFmtDef}} +% \begin{macrocode} +\def\translTxtFmt#1{% + \def\fb@transl@txt@fmt##1{\ifx##1\@empty\else #1\fi}} % dps29 +\translTxtFmt{\space #1} % dps29 +\let\fb@transl@txt@fmt@def\fb@transl@txt@fmt +\def\translTxtFmtDef{\let\fb@transl@txt@fmt\fb@transl@txt@fmt@def} +% \end{macrocode} +% \leavevmode\DescribeMacro{\translTxt}\hskip-\marginparsep\texttt{\darg{\ameta{fmt-transl-\#1}}}\\ +% Similar to \cs{translTxtFmt}, but applies to the command \cs{fetchverses} rather than \cs{fetchversestxt}. Reset +% to the default definition by expanding \DescribeMacro\translFmtDef\cs{translFmtDef}. The initial declaration +% and default is |\translFmt{\space #1}|. +% \changes{v2.4.8}{2018/07/28}{Added \string\cs{translFmt} and \string\cs{translFmtDef}} +% \begin{macrocode} +\def\translFmt#1{% + \def\fb@transl@fmt##1{\ifx##1\@empty\else #1\fi}} % dps29 +\translFmt{\space #1} % dps29 +\let\fb@transl@fmt@def\fb@transl@fmt +\def\translFmtDef{\let\fb@transl@fmt\fb@transl@fmt@def} \def\fb@fetchversesii#1 #2\@nil{% + \ifshowDefBible + \ifx\fbpes@transl\@empty + \ifx\fbpes@babbr\@empty % default bible + \edef\fbpes@transl{\fbdefaultBible}% dpsjul30 + \else + \edef\fbpes@transl{\fbpes@babbr}% + \fi + \fi % dps29 + \fi \ifbookexists +% \end{macrocode} +% We get the book abbreviation early, needed to get the proper expansion +% for \cs{fetchversestext}. +% \changes{v2.4.9}{2018/07/30}{Expand book abbr early} +% \begin{macrocode} + \edef\expBkAbbrChoices{\@nameuse{bkfmt\bib@book}}% dpsjul30 + \def\selBkAbbr{\expandafter\fbpes@abbr\expBkAbbrChoices}% dpsjul30 \ifKV@fbpes@typeset % dps \def\book@passage{\fbp@format\l@fbp@delim\expandafter\fb@fmtBook \expandafter{\bib@book}\fb@bksp\bib@passage - \@nameuse{\passagespec}\fbpes@transl\r@fbp@delim}% + \@nameuse{\passagespec}\fb@transl@fmt{\fbpes@transl}% dps29 + \r@fbp@delim + }% % \end{macrocode} % When typeset is true, we need to define \cs{versetxt} as well. % \changes{v2.4.4}{2018/07/11}{Define \string\cs{versetxt} in all cases.} % \begin{macrocode} - \xdef\versetxt{\noexpand\fbpes@abbr - \@nameuse{bkfmt\bib@book}\fb@bksp\bib@passage - \fbpes@transl}% + \protected@xdef\versetxt{{\selBkAbbr\fb@bksp\bib@passage + \noexpand\fb@transl@txt@fmt{\fbpes@transl}% dps29 + }}% \else \if@versetxt - \edef\book@passage{%\fbp@format\l@fbp@delim - \noexpand\fbpes@abbr - \@nameuse{bkfmt\bib@book}\fb@bksp\bib@passage - \fbpes@transl + \protected@edef\book@passage{\selBkAbbr\fb@bksp\bib@passage + \noexpand\fb@transl@txt@fmt{\fbpes@transl}% dps29 }% - \xdef\versetxt{\book@passage}% + \protected@xdef\versetxt{\book@passage}% \fi % \if@versetxt %dps \fi % \ifKV@fbpes@typeset \else % \ifbookexits @@ -1467,7 +1596,7 @@ \@tempcnta\fb@verseEnd \else \ifKV@fbpes@typeset - \fb@insrtvn +% \fb@insrtvn \fb@insrtvn\fb@qq(\bib@ver)\fb@qq \else \edef\x{\noexpand\g@addto@macro\noexpand @@ -1539,6 +1668,45 @@ \edef\fbpes@alt{ \@rgi}\fi } % \end{macrocode} +% \begin{macro}{\cobblevrs} +% \hskip-\marginparsep\,\texttt{*(\ameta{\string\cmd})\darg{\ameta{text}}} +% For users of \cs{fetchversestxt}, \cs{cobblevrs} `cobbles' verses together. +% \cs{cobblevrs} takes \ameta{text} and adds it onto the end of the macro \ameta{\string\cmd}. +% The star-version first \cs{let}s \ameta{\string\cmd} to \cs{@empty}. If \ameta{\string\cmd} +% is undefined, it is first set to \cs{@empty}. +% \changes{v2.4.9}{2018/07/30}{Added \string\cs{cobblevrs}} +% +% This is a general purpose macro, not restricted to use by \cs{fetchversestxt}. For example, +%\begin{verbatim} +%\fetchversestxt[typeset,abbr=none,from*=KJV]{Gen 1:1}\cobblevrs*\holdverses +% {(\versetxt)\space\passagetxt} +%\fetchversestxt[typeset,abbr=none,from=ISV,transl=ISV]{Gen 1:1}\cobblevrs +%\holdverses{ Now, the same quote from ISV: (\versetxt)\space\passagetxt} +%\fetchversestxt[typeset,abbr=none,from*=YLT]{Gen 1:1}\cobblevrs\holdverses +%{ Again, but now from YLT: (\versetxt)\space\passagetxt}\holdverses +%\end{verbatim} +%yields +%\begin{fpquote} +%\fetchversestxt[typeset,abbr=none,from*=KJV]{Gen 1:1}\cobblevrs*\holdverses +% {(\versetxt)\space\passagetxt} +%\fetchversestxt[typeset,abbr=none,from=ISV,transl=ISV]{Gen 1:1}\cobblevrs\holdverses +% { Now, the same quote from ISV: (\versetxt)\space\passagetxt} +%\fetchversestxt[typeset,abbr=none,from*=YLT]{Gen 1:1}\cobblevrs\holdverses +%{ Again, but now from YLT: (\versetxt)\space\passagetxt}\holdverses +%\end{fpquote} +% \begin{macrocode} +\newcommand{\cobblevrs}{\@ifstar{\cobblevrs@i}{\cobblevrs@ii}} +\def\cobblevrs@i#1{\let#1\@empty\cobblevrs@ii{#1}} +\def\cobblevrs@ii#1#2{\ifx#1\undefined\let#1\@empty\fi + \bgroup + \toks0=\expandafter{#1}\toks2=\expandafter{#2}% + \set@typeset@protect + \protected@edef\fb@xtmp{\the\toks0 \the\toks2 }% + \protected@xdef#1{\fb@xtmp}% + \egroup +} +% \end{macrocode} +% \end{macro} % % \subsubsection{Formatting the verse numbers} We define three commands to % support the formatting of the verse numbers. @@ -1637,7 +1805,7 @@ % \end{macrocode} % \DescribeMacro{\letEach...\string\to} is a convenience command to \cs{let} several commands % to another command, usually \cs{relax}. For example, -% \changes{v2.0a}{2016/09/19}{Added \string\cs{letEach...\string\cs{to}}} +% \changes{v2.0a}{2016/09/19}{Added \string\cs{letEach...}\string\cs{to}} %\begin{verbatim} % \letEach\cmdi\cmdii\cmdiii\to\relax %\end{verbatim} @@ -2003,16 +2171,19 @@ {\string\selectedVersesFrom\space requires the\MessageBreak useselverses option. Gobbling up\MessageBreak your argument}} % \end{macrocode} -% \subsection{\texttt{fbpes.cfg}, the configuration file} +% \section{Input the configuration file} +% If \opt{ignorecfg} is not specified in the option list of \pkg{fetchbibpes}, a configuration +% file is input at this point. The name of the configuration is set by the value of the +% \opt{cfg} key; \texttt{fbpes.cfg} is input if \opt{cfg} is not specified. % \begin{macrocode} -\def\fb@loadcfg{\InputIfFileExists{fbpes.cfg} - {\PackageInfo{fetchbibpes}{Inputting fbpes.cfg}} - {\PackageInfo{fetchbibpes}{fbpes.cfg not found}}} \iffb@ignorecfg - \PackageInfo{fetchbibpes}{Ignoring CFG file} + \def\fb@loadcfg{\PackageInfo{fetchbibpes}{Ignoring CFG file}} \else - \AtEndOfPackage{\fb@loadcfg} + \def\fb@loadcfg{\InputIfFileExists{\fb@cfg@basename.cfg} + {\PackageInfo{fetchbibpes}{Inputting \fb@cfg@basename.cfg}} + {\PackageWarning{fetchbibpes}{\fb@cfg@basename.cfg not found}}} \fi +\AtEndOfPackage{\fb@loadcfg} % \end{macrocode} % \begin{macrocode} % @@ -2084,9 +2255,9 @@ \newif\iffb@fromused \fb@fromusedfalse \define@key{sel@verses}{from}{\fb@fromusedtrue \def\@argi{#1}\ifx\@argi\@empty - \edef\sel@verses@from{ \fb@defaultBible}\else + \edef\sel@verses@from{ \fbdefaultBible}\else \def\sel@verses@from{ #1}\fi} -\edef\sel@verses@from{ \fb@defaultBible}% +\edef\sel@verses@from{ \fbdefaultBible}% % \end{macrocode} % \IndexKey{alt} The \texttt{alt} allows you to specify an alternate translation % of the passage. @@ -2099,7 +2270,7 @@ \def\selectedVersesFrom#1{% \@tfor\@rg:=#1\do{% \let\sel@verses@alt\@empty - \edef\sel@verses@from{ \fb@defaultBible}% + \edef\sel@verses@from{ \fbdefaultBible}% \edef\setkeysExp{\noexpand\setkeys{sel@verses}{\@rg}}\setkeysExp % \end{macrocode} % In case the author uses the full names, we do an inverse lookup, as needed. diff --git a/texmf-dist/tex/latex/fetchbibpes/fbpes.cfg b/texmf-dist/tex/latex/fetchbibpes/fbpes.cfg index 37c124d5..be4172b0 100644 --- a/texmf-dist/tex/latex/fetchbibpes/fbpes.cfg +++ b/texmf-dist/tex/latex/fetchbibpes/fbpes.cfg @@ -1,28 +1,16 @@ % -% fbpes.cfg: Customize the from option from the fbpes family -% Below is a sample redefinition of \defaultBible and the from key of the -% fbpes family. Modify or delete as desired. +% fbpes.cfg: Creating a new set of registered Bible translations +% Below is a sample declarations for \defaultBible and \registerBibles. +% Modify or delete from the list as desired. % + \endinput \defaultBible{NKJV} -\define@choicekey+{fbpes}{from}[\val\nr]% - {NKJV,KJV,KJV+,ISV,RV,YLT}[NKJV]{% - \ifcase\nr\relax - \def\fbpes@from{ NKJV}\or - \def\fbpes@from{ KJV}\or - \def\fbpes@from{ KJV+}\or - \def\fbpes@from{ ISV}\or - \def\fbpes@from{ RV}\or - \def\fbpes@from{ YLT}\fi -}{% - \if@ddtoBiblesUsed - \def\fbpes@from{ #1}\setkeys{bibadd}{addfrom=#1}\else - \PackageWarning{fetchbibpes}{Bad Choice of \val\MessageBreak - will use \fb@defaultBible\space instead}\def\fbpes@from{}\fi -} +\registerBibles{NKJV,KJV,KJV+,ISV,RV,YLT} + Or, perhaps, a preferred method is -\renewcommand{\defaultBible}{NKJV} +\defaultBible{NKJV} \addtoBibles{NKJV,RV,YLT} diff --git a/texmf-dist/tex/latex/fetchbibpes/fetchbibpes.sty b/texmf-dist/tex/latex/fetchbibpes/fetchbibpes.sty index a17f1167..684bbab2 100644 --- a/texmf-dist/tex/latex/fetchbibpes/fetchbibpes.sty +++ b/texmf-dist/tex/latex/fetchbibpes/fetchbibpes.sty @@ -19,7 +19,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e}[1997/12/01] \ProvidesPackage{fetchbibpes} - [2018/07/12 v2.4.5 fetchbibpes: Fetch Bible passages from DEF files (dps)] + [2018/07/30 v2.4.9 fetchbibpes: Fetch Bible passages from DEF files (dps)] \RequirePackage{xkeyval} \def\csarg#1#2{\expandafter#1\csname#2\endcsname} \let\fb@Zero=0 \let\fb@One=1 \let\fb@Two=2 @@ -60,6 +60,8 @@ {fetchsubtr option detected, cannot find file fsubstr.def}} \newif\iffb@ignorecfg \fb@ignorecfgfalse \define@key{fetchbibpes.sty}{ignorecfg}[true]{\fb@ignorecfgtrue} +\define@key{fetchbibpes.sty}{cfg}[fbpes]{\def\fb@cfg@basename{#1}} +\def\fb@cfg@basename{fbpes} \ProcessOptionsX \let\fb@NO=n \let\fb@YES=y @@ -165,32 +167,35 @@ } \newif\if@ddtoBiblesUsed \@ddtoBiblesUsedfalse \newcommand{\defaultBible}[1]{\def\@rg{#1}\ifx\@rg\@empty - \else\def\fb@defaultBible{#1}\def\fbpes@from{ #1}\fi} + \else\gdef\fbdefaultBible{#1}\def\fbpes@from{ #1}\fi} \defaultBible{KJV} \newcommand\addtoBibles[1]{% \def\@rgi{#1}\ifx\@rgi\@empty\else \global\@ddtoBiblesUsedtrue\fi \define@choicekey+{bibadd}{addfrom}[\val\nr]{#1}{} {\PackageWarning{fetchbibpes}{Bad Choice of \val\MessageBreak - will use \fb@defaultBible\space instead}% - \edef\fbpes@from{ \fb@defaultBible}}% + will use \fbdefaultBible\space instead}% + \edef\fbpes@from{ \fbdefaultBible}}% } \@onlypreamble\addtoBibles -\define@choicekey+{fbpes}{from}[\val\nr]% - {KJV,KJV+,ISV}[KJV]{% - \ifcase\nr\relax - \def\fbpes@from{ KJV}\or - \def\fbpes@from{ KJV+}\or - \def\fbpes@from{ ISV}\fi -}{% - \if@ddtoBiblesUsed - \def\fbpes@from{ #1}\setkeys{bibadd}{addfrom=#1}\else - \PackageWarning{fetchbibpes}{Bad Choice of \val\MessageBreak - will use \fb@defaultBible\space instead}% - \edef\fbpes@from{ \fb@defaultBible}\fi +\def\handleUnRegBibles#1{\edef\@rgi{#1}\if@ddtoBiblesUsed + \edef\fbpes@babbr{#1}\edef\x{\noexpand + \setkeys{bibadd}{addfrom=#1}}\x\else + \ifx\@rgi\@empty\edef\fbpes@babbr{\fbdefaultBible}\else + \PackageWarning{fetchbibpes}{Bad Choice of \val\MessageBreak + will use \fbdefaultBible\space instead}% + \edef\fbpes@babbr{\fbdefaultBible}\fi\fi + \edef\fbpes@from{ \fbpes@babbr}% } +\def\fbSetFromChoiceKey#1{% + \define@choicekey+{fbpes}{from}[\val\nr]% + {#1}[]{\edef\fbpes@babbr{\val}\edef\fbpes@from{ \val}} + {\handleUnRegBibles{##1}}} +\def\registerBibles#1{\fbSetFromChoiceKey{#1}}% +\registerBibles{KJV,KJV+,ISV} \define@key{fbpes}{transl}[]{\def\fbpes@transl{#1}% - \ifx\fbpes@transl\@empty\else\edef\fbpes@transl{\space#1}\fi} + \gdef\g@fbpes@transl{#1}\gdef\gtransl{#1}% dps29 +} \let\fbpes@transl\@empty \define@key{fbpes}{from*}[]{\setkeys{fbpes}{from=#1,transl=#1}} \newif\iffbpes@altstar\fbpes@altstarfalse @@ -229,8 +234,12 @@ \def\LaTeXQuotesOn{\NotL@TeXQuotesfalse} \def\LaTeXQuotesOff{\NotL@TeXQuotestrue} \define@key{fbpes}{ltxquotes}[]{\NotL@TeXQuotesfalse} -\define@key{fbpes}{replace}[]{\fp@cntArgs#1\stop@rg - \def\fbpes@replace{#1}} +\define@key{fbpes}{replace}[]{%\fp@cntArgs#1\stop@rg + \ifx\fbpes@replace\@empty\def\fbpes@replace{#1}\else % dps13 + \expandafter\def\expandafter\fbpes@replace + \expandafter{\fbpes@replace#1}\fi + \expandafter\fp@cntArgs\fbpes@replace\stop@rg +} \let\stop@rg\relax\def\st@p@arg{\stop@rg}% \def\fp@cntArgs#1\stop@rg{\bgroup\@tempcnta\z@ \fp@cntArgs@i#1\stop@rg} @@ -299,15 +308,35 @@ \let\fbpes@priorref\relax \define@key{fbpes}{localdefs}[]{\def\fbpes@localdefs{#1}} \let\fbpes@localdefs\@empty -\define@boolkey{fbpes}{typeset}[true]{} -\KV@fbpes@typesettrue +\newif\ifKV@fbpes@typeset\KV@fbpes@typesettrue +\define@key{fbpes}{typeset}[]{\KV@fbpes@typesettrue + \def\fbpes@typeset{#1}}\let\fbpes@typeset\@empty +\define@key{fbpes}{typeset*}[]{% + \def\fbpes@typeset{#1}}\let\fbpes@typeset\@empty \long\def\priorRefSpc#1{\def\fbp@priorRefSpc{#1}} \def\fbp@priorRefSpc{\space} \def\fbFitItIn{\noindent\unskip\nobreak\hfill\penalty100 \hskip1em\hbox{}\nobreak\hfill}% \def\fbFillRght{\hfil\break\null\hfill} -\def\useBookStyle#1{% - \def\fp@SK{\setkeys{fbpes}}\expandafter\fp@SK\expandafter{#1}} +\newtoks\fetchtoks % dps13 +\newif\ifshowDefBible \showDefBiblefalse +\def\showTranslAlways{\showDefBibletrue} +\let\AlwaysShowDefBible\showTranslAlways +\def\showTranslDecld{\showDefBiblefalse} +\let\NeverShowDefBible\showTranslDecld +\newif\if@versetxt\@versetxtfalse +\def\useBookStyle#1{\def\fp@SK{\setkeys{fbpes}}\expandafter + \fp@SK\expandafter{#1}\if@versetxt\else + \ifx\fbpes@typeset\@empty\else + \fetchtoks={#1,}\edef\x{\the\fetchtoks}% dps13 + \fetchtoks=\expandafter\expandafter + \expandafter{\expandafter\x\fbpes@typeset}% + \let\fbpes@replace\@empty + \edef\x{\the\fetchtoks}\expandafter + \fp@SK\expandafter{\x}% + \fi + \fi +} \useBookStyle{abbr,roman=false,from,transl} \def\ioiv#1#2#3#4{#1}\def\iioiv#1#2#3#4{\fbpes@case{#2}} \def\iiioiv#1#2#3#4{\fbpes@case{#3}}\def\ivoiv#1#2#3#4{\fbpes@case{#4}} @@ -441,13 +470,23 @@ } \newif\if@versetxt\@versetxtfalse \def\fb@fetchverse{% + \ifshowDefBible + \ifx\fbpes@transl\@empty + \ifx\fbpes@babbr\@empty % default bible + \edef\fbpes@transl{\fbdefaultBible}% dpsjul30 + \else + \edef\fbpes@transl{\fbpes@babbr}% + \fi + \fi % dps29 + \fi \ifbookexists \def\book@passage{\fbp@format\l@fbp@delim\expandafter\fb@fmtBook \expandafter{\bib@book}\fb@bksp\bib@passage - \fbpes@transl\r@fbp@delim}% + \fb@transl@fmt{\fbpes@transl}\r@fbp@delim}% dps29 \else \def\book@passage{\l@fbp@delim\fb@qq\bib@book\fb@qq - \fb@bksp\bib@passage\fbpes@transl\r@fbp@delim}% + \fb@bksp\bib@passage + \fb@transl@fmt{\fbpes@transl}\r@fbp@delim}% dps29 \fi \ifKV@fbpes@citeatend\else \fbpes@priorref{\ifKV@fbpes@nocite\else @@ -462,9 +501,9 @@ \global\let\passagetxt\@empty \fetchverses[#1]{#2}\egroup } +\let\fetchversetxt\fetchversestxt \newcommand\fb@fetchversesi[2][]{\def\@rgi{#1}\def\passagespec{#2}% - \ifx\@rgi\@empty\else - \useBookStyle{#1}\ifx\fbpes@altstar\@empty\else + \ifx\@rgi\@empty\else\useBookStyle{#1}\ifx\fbpes@altstar\@empty\else \ifx\fbpes@alt\@empty\else\PackageWarning{fetchbibpes} {You have specified both alt* and alt,\MessageBreak removing the alt key}\fi\fi\fi @@ -478,23 +517,44 @@ \def\fb@insrtvn{\ifnum\@tempcnta=\fb@verseStart\relax \ifKV@fbpes@showfirst\verseFmt{\the\@tempcnta}\fi \else\space\verseFmt{\the\@tempcnta}\fi} +\def\translTxtFmt#1{% + \def\fb@transl@txt@fmt##1{\ifx##1\@empty\else #1\fi}} % dps29 +\translTxtFmt{\space #1} % dps29 +\let\fb@transl@txt@fmt@def\fb@transl@txt@fmt +\def\translTxtFmtDef{\let\fb@transl@txt@fmt\fb@transl@txt@fmt@def} +\def\translFmt#1{% + \def\fb@transl@fmt##1{\ifx##1\@empty\else #1\fi}} % dps29 +\translFmt{\space #1} % dps29 +\let\fb@transl@fmt@def\fb@transl@fmt +\def\translFmtDef{\let\fb@transl@fmt\fb@transl@fmt@def} \def\fb@fetchversesii#1 #2\@nil{% + \ifshowDefBible + \ifx\fbpes@transl\@empty + \ifx\fbpes@babbr\@empty % default bible + \edef\fbpes@transl{\fbdefaultBible}% dpsjul30 + \else + \edef\fbpes@transl{\fbpes@babbr}% + \fi + \fi % dps29 + \fi \ifbookexists + \edef\expBkAbbrChoices{\@nameuse{bkfmt\bib@book}}% dpsjul30 + \def\selBkAbbr{\expandafter\fbpes@abbr\expBkAbbrChoices}% dpsjul30 \ifKV@fbpes@typeset % dps \def\book@passage{\fbp@format\l@fbp@delim\expandafter\fb@fmtBook \expandafter{\bib@book}\fb@bksp\bib@passage - \@nameuse{\passagespec}\fbpes@transl\r@fbp@delim}% - \xdef\versetxt{\noexpand\fbpes@abbr - \@nameuse{bkfmt\bib@book}\fb@bksp\bib@passage - \fbpes@transl}% + \@nameuse{\passagespec}\fb@transl@fmt{\fbpes@transl}% dps29 + \r@fbp@delim + }% + \protected@xdef\versetxt{{\selBkAbbr\fb@bksp\bib@passage + \noexpand\fb@transl@txt@fmt{\fbpes@transl}% dps29 + }}% \else \if@versetxt - \edef\book@passage{%\fbp@format\l@fbp@delim - \noexpand\fbpes@abbr - \@nameuse{bkfmt\bib@book}\fb@bksp\bib@passage - \fbpes@transl + \protected@edef\book@passage{\selBkAbbr\fb@bksp\bib@passage + \noexpand\fb@transl@txt@fmt{\fbpes@transl}% dps29 }% - \xdef\versetxt{\book@passage}% + \protected@xdef\versetxt{\book@passage}% \fi % \if@versetxt %dps \fi % \ifKV@fbpes@typeset \else % \ifbookexits @@ -550,7 +610,6 @@ \@tempcnta\fb@verseEnd \else \ifKV@fbpes@typeset - \fb@insrtvn \fb@insrtvn\fb@qq(\bib@ver)\fb@qq \else \edef\x{\noexpand\g@addto@macro\noexpand @@ -602,6 +661,16 @@ \ifx\@rgi\@empty\let\fbpes@alt\@empty\else \edef\fbpes@alt{ \@rgi}\fi } +\newcommand{\cobblevrs}{\@ifstar{\cobblevrs@i}{\cobblevrs@ii}} +\def\cobblevrs@i#1{\let#1\@empty\cobblevrs@ii{#1}} +\def\cobblevrs@ii#1#2{\ifx#1\undefined\let#1\@empty\fi + \bgroup + \toks0=\expandafter{#1}\toks2=\expandafter{#2}% + \set@typeset@protect + \protected@edef\fb@xtmp{\the\toks0 \the\toks2 }% + \protected@xdef#1{\fb@xtmp}% + \egroup +} \newcommand{\verseFmtDef}[1]{\ensuremath{{}^{\fb@sc{#1}}}} \newcommand{\verseFmt}[1]{\verseFmtDef{#1}} \newcommand{\verseFmtReset}{\def\verseFmt##1{\verseFmtDef{##1}}} @@ -804,14 +873,14 @@ \def\selectedVersesFrom#1{\PackageWarning{fetchbibpes} {\string\selectedVersesFrom\space requires the\MessageBreak useselverses option. Gobbling up\MessageBreak your argument}} -\def\fb@loadcfg{\InputIfFileExists{fbpes.cfg} - {\PackageInfo{fetchbibpes}{Inputting fbpes.cfg}} - {\PackageInfo{fetchbibpes}{fbpes.cfg not found}}} \iffb@ignorecfg - \PackageInfo{fetchbibpes}{Ignoring CFG file} + \def\fb@loadcfg{\PackageInfo{fetchbibpes}{Ignoring CFG file}} \else - \AtEndOfPackage{\fb@loadcfg} + \def\fb@loadcfg{\InputIfFileExists{\fb@cfg@basename.cfg} + {\PackageInfo{fetchbibpes}{Inputting \fb@cfg@basename.cfg}} + {\PackageWarning{fetchbibpes}{\fb@cfg@basename.cfg not found}}} \fi +\AtEndOfPackage{\fb@loadcfg} \AtBeginDocument{\useverseslist} \endinput %% diff --git a/texmf-dist/tex/latex/fetchbibpes/selfetch.def b/texmf-dist/tex/latex/fetchbibpes/selfetch.def index 388479e5..52b6c27e 100644 --- a/texmf-dist/tex/latex/fetchbibpes/selfetch.def +++ b/texmf-dist/tex/latex/fetchbibpes/selfetch.def @@ -30,15 +30,15 @@ \newif\iffb@fromused \fb@fromusedfalse \define@key{sel@verses}{from}{\fb@fromusedtrue \def\@argi{#1}\ifx\@argi\@empty - \edef\sel@verses@from{ \fb@defaultBible}\else + \edef\sel@verses@from{ \fbdefaultBible}\else \def\sel@verses@from{ #1}\fi} -\edef\sel@verses@from{ \fb@defaultBible}% +\edef\sel@verses@from{ \fbdefaultBible}% \define@key{sel@verses}{alt}{\def\sel@verses@alt{ #1}} \let\sel@verses@alt\@empty \def\selectedVersesFrom#1{% \@tfor\@rg:=#1\do{% \let\sel@verses@alt\@empty - \edef\sel@verses@from{ \fb@defaultBible}% + \edef\sel@verses@from{ \fbdefaultBible}% \edef\setkeysExp{\noexpand\setkeys{sel@verses}{\@rg}}\setkeysExp \expandafter\fb@doInvLUAsNeeded\bib@book\@nil \ifx\bib@passage\@empty\else -- cgit v1.2.3