From e3bca9fe45e86806e2d00853c2187216e59a9fa9 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 28 Feb 2012 00:41:55 +0000 Subject: bibleref-lds 1.0 (27feb12) git-svn-id: svn://tug.org/texlive/trunk@25526 c570f23f-e606-0410-a88d-b1316a301751 --- .../source/latex/bibleref-lds/bibleref-lds.dtx | 937 +++++++++++++++++++++ 1 file changed, 937 insertions(+) create mode 100644 Master/texmf-dist/source/latex/bibleref-lds/bibleref-lds.dtx (limited to 'Master/texmf-dist/source/latex/bibleref-lds/bibleref-lds.dtx') diff --git a/Master/texmf-dist/source/latex/bibleref-lds/bibleref-lds.dtx b/Master/texmf-dist/source/latex/bibleref-lds/bibleref-lds.dtx new file mode 100644 index 00000000000..c88107a408e --- /dev/null +++ b/Master/texmf-dist/source/latex/bibleref-lds/bibleref-lds.dtx @@ -0,0 +1,937 @@ +% \iffalse meta-comment +% +% Copyright 2012 Chad Parry +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% \fi +% +% \iffalse +% +% +%\NeedsTeXFormat{LaTeX2e} +%\ProvidesPackage{bibleref-lds}[2012/02/26 v1.0 LDS Bible reference style] +% +%\RequirePackage{bibleref-mouth}[2012/02/26] +%\RequirePackage{ifthen} +%\RequirePackage{hyperref} +% +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{bibleref-lds} +\usepackage{afterpage} +\usepackage{longtable} +\usepackage[protrusion]{microtype} +\usepackage{hyperref} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\frenchspacing +\sloppy +\begin{document} +\DocInput{bibleref-lds.dtx} +\end{document} +% +% \fi +% +% \CheckSum{421} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \changes{v1.0}{2012/02/26}{Initial version} +% +% \GetFileInfo{bibleref-lds.sty} +% +% \title{ +% The \textsf{bibleref-lds} package% +% \thanks{This document corresponds to \textsf{bibleref-mouth}~\fileversion, dated~\filedate.} +% } +% \author{Chad Parry \\ \href{mailto:spam@chad.parry.org}{\nolinkurl{spam@chad.parry.org}}} +% +% \maketitle +% +% \begin{abstract} +% The \textsf{bibleref-lds} package is an extension of the \textsf{bibleref-mouth} package that supports references for the scriptures of The Church of Jesus Christ of Latter-day Saints (LDS). +% To write a reference, the document should use the command \verb|\bibleref|\marg{reference}, exactly as with the stock \textsf{bibleref-mouth} package. +% \end{abstract} +% +% \StopEventually{ +% \PrintIndex +% } +% +% \let\origverbatim\verbatim +% \let\origendverbatim\endverbatim +% \renewenvironment{verbatim}{% +% \origverbatim% +% \microtypesetup{protrusion=false}% +% }{% +% \origendverbatim% +% } +% \newcommand*{\callback}{\meta{\textbackslash{}callback}} +% +% \section{Usage} +% +% The usage is identical to that of the \textsf{bibleref-mouth} package, and so readers should first familiarize themselves with that documentation. +% For example, a hypertext reference like the following can be produced by the command below: +% \bibleref{2 Ne 9:28-29}. +% +% \begin{verbatim} +%\bibleref{2 Ne 9:28-29} +% \end{verbatim} +% +% This package supports the canonical LDS scriptures, as listed in Table~\ref{books}. +% It also adds new aliases for some Bible books, as listed in Table~\ref{biblebooks}. +% The ``short abbreviation'' in the table is the abbreviation used on the thumb index of many editions. +% The table uses boldface for books that are changed from the existing \textsf{bibleref-mouth} abbreviation. +% Numbered books can be specified with Arabic or Roman numerals. +% Abbreviations may have an optional trailing period. +% All spaces are optional. +% For example, it is equally acceptable to say +% \verb|IINephi|, +% \verb|IINe.|, +% \verb|IINe|, +% \verb|2Nephi|, +% \verb|2Ne.|, +% \verb|2Ne|, +% \verb|II Nephi|, +% \verb|II Ne.|, +% \verb|II Ne|, +% \verb|2 Nephi|, +% \verb|2 Ne.|, or +% \verb|2 Ne|. +% +% This package defines two new styles: \texttt{lds} and \texttt{lds.org}. +% The former uses the standard abbreviations for books according to the practice in the LDS church. +% The latter uses the same abbreviations, and additionally creates a link to the scriptures on the official LDS website. +% The \texttt{lds.org} style is set as the current style, although it can be overridden by a user. +% Users can customize the link text using the \hyperlink{provideldsdotorgstyle}{\cs{provideldsdotorgstyle}} command. +% +% This package also renames one Bible book from ``Song of Songs'' to ``Song of Solomon.'' +% +% \makeatletter +% \brl@foreachbook@abbrv{\providebiblebook{abbrvname}}{.}{}{ }{\&}{\brm@number@arabicspace} +% \brl@foreachbook@thumb{\providebiblebook{thumbname}}{.}{}{ }{\&}{\brm@number@arabicspace} +% \newcommand{\bookrow}[2]{#2 & \brm@bookname{abbrvname}{#1} & \brm@bookname{thumbname}{#1}\\} +% \begin{table}[tbh] +% \caption{Supported Books}\label{books} +% \begin{center} +% \begin{tabular}{lp{0.33\textwidth}p{0.33\textwidth}} +% \bfseries Book & \bfseries Standard Abbreviation & \bfseries Short Abbreviation\\ +% \brl@foreachbook@full{\bookrow}{ }{-}{}{\brm@number@arabicspace} +% \end{tabular} +% \end{center} +% \end{table} +% \makeatother +% +% \makeatletter +% \brm@foreachbook@altabbrv{\providebiblebook{altabbrvasciiname}}{.}{\ }{\brm@number@arabicspaceascii}{\brm@number@arabicspaceascii} +% \brm@foreachbook@altabbrv{\providebiblebook{ldsabbrvasciiname}}{.}{\ }{\brm@number@arabicspaceascii}{\brm@number@arabicspaceascii} +% \brl@foreachbook@bible@abbrv{\providebiblebook{ldsabbrvasciiname}}{.}{\brm@number@arabicspaceascii} +% \brm@foreachbook@altabbrv{\providebiblebook{ldsabbrvname}}{.}{\ }{\brm@number@arabicspace}{\brm@number@arabicspace} +% \brl@foreachbook@bible@abbrv{\providebiblebook{ldsabbrvname}}{.}{\brm@number@arabicspace} +% \brm@foreachbook@altabbrv{\providebiblebook{ldsthumbasciiname}}{.}{\ }{\brm@number@arabicspaceascii}{\brm@number@arabicspaceascii} +% \brl@foreachbook@bible@thumb{\providebiblebook{ldsthumbasciiname}}{.}{\ }{\brm@number@arabicspaceascii}{\brm@number@arabicspaceascii} +% \brm@foreachbook@altabbrv{\providebiblebook{ldsthumbname}}{.}{\ }{\brm@number@arabicspace}{\brm@number@arabicspace} +% \brl@foreachbook@bible@thumb{\providebiblebook{ldsthumbname}}{.}{\ }{\brm@number@arabicspace}{\brm@number@arabicspace} +% \newcommand*{\comparebooks}[2]{\brm@ifsamestr{#1}{#2}{}{\bfseries}} +% \newcommand{\biblebookrow}[2]{\brm@ifnameexists{\brm@bookref{lds.org}{#1}}{\brm@bookname{fullname}{#1} & \comparebooks{\brm@bookname{altabbrvasciiname}{#1}}{\brm@bookname{ldsabbrvasciiname}{#1}}\brm@bookname{ldsabbrvname}{#1} & \comparebooks{\brm@bookname{altabbrvasciiname}{#1}}{\brm@bookname{ldsthumbasciiname}{#1}}\brm@bookname{ldsthumbname}{#1}\\}{}} +% \afterpage{ +% \clearpage +% \begin{center} +% \begin{longtable}{p{0.34\textwidth}p{0.33\textwidth}p{0.33\textwidth}} +% \caption{Additional Abbreviations}\label{biblebooks}\\ +% \bfseries Book & \bfseries Standard Abbreviation & \bfseries Short Abbreviation\\ +% \endfirsthead +% \caption{Additional Abbreviations (continued)}\\ +% \bfseries Book & \bfseries Standard Abbreviation & \bfseries Short Abbreviation\\ +% \endhead +% \brm@foreachbook@full{\biblebookrow}{}{}{}{}{}{}{}{} +% \end{longtable} +% \end{center} +% \newpage +% } +% \makeatother +% +% \section{Implementation} +% +% All the internal macros have a name beginning with \verb|brl@|, which stands for \textsf{bibleref-lds}, so as to avoid polluting the global namespace. +% +% \subsection{Book Names} +% +% \begin{macro}{\brl@foreachbook@full} +% The full book names are accessible through \verb|\brl@foreachbook@full|\-\marg{callback}\-\marg{space}\-\marg{dash}\-\marg{bookof}\-\marg{booknumberstyle} +% The callback argument is expected to have the signature \callback\-\marg{book}\marg{bookname}. +% The number style argument is expected to be a function with the signature \callback\marg{number}. +% \begin{macrocode} +\newcommand*{\brl@foreachbook@full}[5]{% + #1{INephi}{#5{1}#4Nephi}% + #1{IINephi}{#5{2}#4Nephi}% + #1{Jacob}{#4Jacob}% + #1{Enos}{#4Enos}% + #1{Jarom}{#4Jarom}% + #1{Omni}{#4Omni}% + #1{WordsofMormon}{Words#2of#2Mormon}% + #1{Mosiah}{#4Mosiah}% + #1{Alma}{#4Alma}% + #1{Helaman}{#4Helaman}% + #1{IIINephi}{#5{3}#4Nephi}% + #1{IVNephi}{#5{4}#4Nephi}% + #1{Mormon}{#4Mormon}% + #1{Ether}{#4Ether}% + #1{Moroni}{#4Moroni}% + #1{DoctrineandCovenants}{Doctrine#2and#2Covenants}% + #1{OfficialDeclaration}{Official#2Declaration}% + #1{Moses}{#4Moses}% + #1{Abraham}{#4Abraham}% + #1{JosephSmith-Matthew}{Joseph#2Smith#3Matthew}% + #1{JosephSmith-History}{Joseph#2Smith#3History}% + #1{ArticlesofFaith}{Articles#2of#2Faith}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\brl@foreachbook@abbrv} +% The abbreviated book names are accessible through \verb|\brl@foreachbook@abbrv|\-\marg{callback}\-\marg{standardperiod}\-\marg{optionalperiod}\-\marg{space}\-\marg{ampersand}\-\marg{booknumberstyle} +% The optional period argument is for books that are normally written without a period, but which could reasonably have an alias defined which does use a period. +% The callback argument is expected to have the signature \callback\-\marg{book}\marg{bookname}. +% The number style argument is expected to be a function with the signature \callback\marg{number}. +% \begin{macrocode} +\newcommand*{\brl@foreachbook@abbrv}[6]{% + #1{INephi}{#6{1}Ne#2}% + #1{IINephi}{#6{2}Ne#2}% + #1{Jacob}{Jacob}% + #1{Enos}{Enos}% + #1{Jarom}{Jarom}% + #1{Omni}{Omni}% + #1{WordsofMormon}{W#3#4of#4M#3}% + #1{Mosiah}{Mosiah}% + #1{Alma}{Alma}% + #1{Helaman}{Hel#2}% + #1{IIINephi}{#6{3}Ne#2}% + #1{IVNephi}{#6{4}Ne#2}% + #1{Mormon}{Morm#2}% + #1{Ether}{Ether}% + #1{Moroni}{Moro#2}% + #1{DoctrineandCovenants}{D#3#5C#3}% + #1{OfficialDeclaration}{O#3D#3}% + #1{Moses}{Moses}% + #1{Abraham}{Abr#2}% + #1{JosephSmith-Matthew}{J#3S#3-M#3}% + #1{JosephSmith-History}{J#3S#3-H#3}% + #1{ArticlesofFaith}{A#3#4of#4F#3}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\brl@foreachbook@thumb} +% The shorter abbreviated book names are accessible through \verb|\brl@foreachbook@thumb|\-\marg{callback}\-\marg{period}\-\marg{space}\-\marg{ampersand}\-\marg{booknumberstyle} +% These are the abbreviations that are used on the thumb index of many editions. +% The optional period argument is for books that are normally written without a period, but which could reasonably have an alias defined which does use a period. +% The callback argument is expected to have the signature \callback\-\marg{book}\marg{bookname}. +% The number style argument is expected to be a function with the signature \callback\marg{number}. +% \begin{macrocode} +\newcommand*{\brl@foreachbook@thumb}[6]{% + #1{INephi}{#6{1}Ne#2}% + #1{IINephi}{#6{2}Ne#2}% + #1{Jacob}{Jac#2}% + #1{Enos}{Eno#2}% + #1{Jarom}{Jar#2}% + #1{Omni}{Omn#2}% + #1{WordsofMormon}{W#3#4Mn#3}% + #1{Mosiah}{Msh#2}% + #1{Alma}{Alma}% + #1{Helaman}{Hel#2}% + #1{IIINephi}{#6{3}Ne#2}% + #1{IVNephi}{#6{4}Ne#2}% + #1{Mormon}{Mor#2}% + #1{Ether}{Eth#2}% + #1{Moroni}{Mni#2}% + #1{DoctrineandCovenants}{D#3#5C#3}% + #1{OfficialDeclaration}{O#3D#3}% + #1{Moses}{Mos#2}% + #1{Abraham}{Abr#2}% + #1{JosephSmith-Matthew}{J#3S#3-M#3}% + #1{JosephSmith-History}{J#3S#3-H#3}% + #1{ArticlesofFaith}{A#3#4of#4F#3}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\brl@foreachbook@bible@abbrv} +% The modified Bible book abbrevations are accessible through \verb|\brl@foreachbook@bible@abbrv|\-\marg{callback}\-\marg{period}\-\marg{epistlenumberstyle} +% These are the standard abbreviations that are used in official LDS publications, but that are different from the popularly accepted abbreviations in the \textsf{bibleref-mouth} package. +% The callback argument is expected to have the signature \callback\-\marg{book}\marg{bookname}. +% The number style argument is expected to be a function with the signature \callback\marg{number}. +% \begin{macrocode} +\newcommand*{\brl@foreachbook@bible@abbrv}[3]{% + #1{Exodus}{Ex#2}% + #1{Esther}{Esth#2}% + #1{Ecclesiastes}{Eccl#2}% + #1{SongofSongs}{Song#2}% + #1{Hosea}{Hosea}% + #1{Obadiah}{Obad#2}% + #1{Micah}{Micah}% + #1{Nahum}{Nahum}% + #1{Philippians}{Philip#2}% + #1{IThessalonians}{#3{1}Thes#2}% + #1{IIThessalonians}{#3{2}Thes#2}% + #1{Titus}{Titus}% + #1{James}{James}% + #1{IJohn}{#3{1}Jn#2}% + #1{IIJohn}{#3{2}Jn#2}% + #1{IIIJohn}{#3{3}Jn#2}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\brl@foreachbook@bible@thumb} +% Some modified short Bible book abbrevations are accessible through \verb|\brl@foreachbook@bible@thumb|\-\marg{callback}\-\marg{period}\-\marg{space}\-\marg{booknumberstyle}\-\marg{epistlenumberstyle} +% These are the abbreviations that are used on the thumb index of many editions, and that are different from the popularly accepted abbreviations in the \textsf{bibleref-mouth} package. +% The callback argument is expected to have the signature \callback\-\marg{book}\marg{bookname}. +% The two number style arguments are expected to be functions with the signature \callback\marg{number}. +% \begin{macrocode} +\newcommand*{\brl@foreachbook@bible@thumb}[5]{% + #1{Exodus}{Exo#2}% + #1{Deuteronomy}{Deu#2}% + #1{Joshua}{Jos#2}% + #1{Judges}{Jdg#2}% + #1{Ruth}{Rth#2}% + #1{Ezra}{Ezr#2}% + #1{Esther}{Est#2}% + #1{Psalms}{Psm#2}% + #1{Proverbs}{Pro#2}% + #1{Ecclesiastes}{Ecl#2}% + #1{SongofSongs}{S#2#3S#2}% + #1{Ezekiel}{Ezk#2}% + #1{Joel}{Jol#2}% + #1{Amos}{Amo#2}% + #1{Obadiah}{Oba#2}% + #1{Jonah}{Jna#2}% + #1{Zephaniah}{Zph#2}% + #1{Zechariah}{Zch#2}% + #1{Matthew}{Mat#2}% + #1{Mark}{Mrk#2}% + #1{Luke}{Luk#2}% + #1{John}{Jhn#2}% + #1{Philippians}{Phl#2}% + #1{IThessalonians}{#5{1}Ths#2}% + #1{IIThessalonians}{#5{2}Ths#2}% + #1{Philemon}{Phm#2}% + #1{IJohn}{#5{1}Jhn#2}% + #1{IIJohn}{#5{2}Jhn#2}% + #1{IIIJohn}{#5{3}Jhn#2}% +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Book Aliases} +% +% Various book aliases are provided for all the book names, including versions of the full names, the abbreviated names, and the short abbreviated names. +% The book numbers can be done with either Arabic or Roman numerals. +% The abbreviations are supported both with and without periods. +% An ampersand can be represented as either \verb|&| or \verb|and|. +% \begin{macrocode} +\brl@foreachbook@full{\providebiblebookalias}{}{-}{}% + {\brm@number@upperromanascii} +\brl@foreachbook@full{\providebiblebookalias}{}{-}{}% + {\brm@number@arabic} +\brl@foreachbook@abbrv{\providebiblebookalias}{}{}{}{&}% + {\brm@number@upperromanascii} +\brl@foreachbook@abbrv{\providebiblebookalias}{}{}{}{&}% + {\brm@number@arabic} +\brl@foreachbook@abbrv{\providebiblebookalias}{.}{.}{}{&}% + {\brm@number@upperromanascii} +\brl@foreachbook@abbrv{\providebiblebookalias}{.}{.}{}{&}% + {\brm@number@arabic} +\brl@foreachbook@abbrv{\providebiblebookalias}{}{}{}{and}% + {\brm@number@upperromanascii} +\brl@foreachbook@thumb{\providebiblebookalias}{}{}{}{&}% + {\brm@number@upperromanascii} +\brl@foreachbook@thumb{\providebiblebookalias}{}{}{}{&}% + {\brm@number@arabic} +\brl@foreachbook@thumb{\providebiblebookalias}{.}{.}{}{&}% + {\brm@number@upperromanascii} +\brl@foreachbook@thumb{\providebiblebookalias}{.}{.}{}{&}% + {\brm@number@arabic} +\brl@foreachbook@thumb{\providebiblebookalias}{}{}{}{and}% + {\brm@number@upperromanascii} +\brl@foreachbook@bible@abbrv{\providebiblebookalias}{}% + {\brm@number@upperromanascii} +\brl@foreachbook@bible@abbrv{\providebiblebookalias}{}% + {\brm@number@arabic} +\brl@foreachbook@bible@abbrv{\providebiblebookalias}{.}% + {\brm@number@upperromanascii} +\brl@foreachbook@bible@abbrv{\providebiblebookalias}{.}% + {\brm@number@arabic} +\brl@foreachbook@bible@thumb{\providebiblebookalias}{}{}% + {\brm@number@upperromanascii}{\brm@number@upperromanascii} +\brl@foreachbook@bible@thumb{\providebiblebookalias}{}{}% + {\brm@number@arabic}{\brm@number@arabic} +\brl@foreachbook@bible@thumb{\providebiblebookalias}{.}{}% + {\brm@number@upperromanascii}{\brm@number@upperromanascii} +\brl@foreachbook@bible@thumb{\providebiblebookalias}{.}{}% + {\brm@number@arabic}{\brm@number@arabic} +% \end{macrocode} +% +% \subsection{Formatted Book Names} +% +% Several different forms of book names are created by default. +% These commands define the callback as \verb|\providebiblebook{|\meta{stylename}\verb|}|, which creates a version of each book name in the given style. +% The LDS book names are added to the existing styles that are defined in the \textsf{bibleref-mouth} package. +% \begin{macrocode} +\brl@foreachbook@full{\providebiblebook{fullname}}{\ }{---}{}% + {\brm@number@arabicspace} +\brl@foreachbook@abbrv{\providebiblebook{jerusalem}}{}{}{\ }{\&}% + {\brm@number@arabicspace} +\brl@foreachbook@abbrv{\providebiblebook{anglosaxon}}{.}{}{\ }{\&}% + {\brm@number@upperromanspace} +\brl@foreachbook@abbrv{\providebiblebook{JEH}}{.}{}{\ }{\&}% + {\brm@number@arabicspace} +\brl@foreachbook@full{\providebiblebook{MHRA}}{\ }{---}{}% + {\brm@number@scromanspace} +\brl@foreachbook@abbrv{\providebiblebook{NTG}}{}{}{\ }{\&}% + {\brm@number@arabicspace} +\brl@foreachbook@abbrv{\providebiblebook{MLA}}{.}{}{\ }{\&}% + {\brm@number@arabicspace} +\brl@foreachbook@abbrv{\providebiblebook{chicago}}{.}{}{\ }{\&}% + {\brm@number@arabicspace} +% \end{macrocode} +% +% \subsection{Renamed Book} +% +% The book commonly called ``Song of Songs'' is known in LDS publications as ``Song of Solomon.'' +% That name is overridden for the existing styles that use it in the \textsf{bibleref-mouth} package. +% \begin{macrocode} +\providebiblebook{fullname}{SongofSongs}{Song of Solomon} +\providebiblebook{text}{SongofSongs}{Song of Solomon} +% \end{macrocode} +% +% \subsection{LDS Style} +% +% The style of book names used in LDS publications is similar to the existing styles but not identical to any of them, so a new format is defined here. +% \begin{macrocode} +\brl@foreachbook@abbrv{\providebiblebook{lds}}% + {.}{}{\ }{\&}{\brm@number@arabicspace} +\brm@foreachbook@altabbrv{\providebiblebook{lds}}% + {.}{\ }{\brm@number@arabicspace}{\brm@number@arabicspace} +\brl@foreachbook@bible@abbrv{\providebiblebook{lds}}% + {.}{\brm@number@arabicspace} +% \end{macrocode} +% +% The style of references used in LDS publications is similar to the existing styles but not identical to any of them, so a new one is defined here. +% \begin{macrocode} +\providebiblestyle{lds}{\standardbiblestyle{lds}% + {\ }{:}{; }{; }{, }{--}% + {\brm@number@arabic}{\brm@number@arabic}% + {#1}{#2}{#3}} +% \end{macrocode} +% +% \subsection{Text Style} +% +% This style outputs a textual description of the reference. +% It overrides the corresponding style in the \textsf{bibleref-mouth} package, and adds support for LDS scriptures. +% The main difference is that not all LDS books are organized into chapters. +% +% \emph{This style depends on the non-expandable text style in the \textsf{bibleref-mouth} package, so it may not be used in an expandable context.} +% +% \begin{macro}{\brl@formatchapter} +% This style normally outputs a chapter with a ``chapter'' label. +% However, there are a few exceptions. +% The Doctrine and Covenants is divided into sections. +% The Offical Declaraions and the Articles of Faith also do not have chapters. +% \begin{macrocode} +\newcommand*{\brl@formatchapter}[1]{% + \brm@ifsamestr{\thebook{#1}}{DoctrineandCovenants}{% + section \brm@number@stomach@text{\thechapter{#1}}% + }{% + \brm@ifsamestr{\thebook{#1}}{OfficialDeclaration}{% + \Numberstringnum{\thechapter{#1}}% + }{% + \brm@ifsamestr{\thebook{#1}}{ArticlesofFaith}{% + }{% + chapter \brm@number@stomach@text{\thechapter{#1}}% + }% + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\brl@formatverse} +% This style normally outputs a verse with a ``verse'' label. +% However, there is one exception. +% The Articles of Faith are composed articles. +% \begin{macrocode} +\newcommand*{\brl@formatverse}[1]{% + \brm@ifsamestr{\thebook{#1}}{ArticlesofFaith}{% + article \brm@number@stomach@text{\theverse{#1}}% + }{% + verse \brm@number@stomach@text{\theverse{#1}}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\brl@bkchsep} +% A book is normally separated from a chapter by a comma. +% However, there are a couple exceptions. +% The Official Declarations use a dash. +% The Articles of Faith don't have chapters, so they don't need a separator. +% \begin{macrocode} +\newcommand*{\brl@bkchsep}[1]{% + \brm@ifsamestr{\thebook{#1}}{OfficialDeclaration}{% + ---% + }{% + \brm@ifsamestr{\thebook{#1}}{ArticlesofFaith}{% + }{% + ,\ % + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\brl@chvsep} +% A chapter is normally separated from a verse by a space. +% However, there is one exception. +% The Articles of Faith don't have a chapter, and so they use a comma, similar to the way other books have a book separator. +% \begin{macrocode} +\newcommand*{\brl@chvsep}[1]{% + \brm@ifsamestr{\thebook{#1}}{ArticlesofFaith}{% + ,\ % + }{% + \ % + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\brl@text@filter} +% A filter for standard formats is \verb|\brl@text@filter|\-\marg{lastpassage}\marg{passage}\-\marg{infixseparators}\-\marg{prefixes}\-\marg{formatters}\-\marg{delegate}. +% It makes sure that the correct separators are used, which depend on the book name. +% \begin{macrocode} +\newcommand*{\brl@text@filter}[6]{% + #6% + {#1}% + {#2}% + {\brm@packseparators{\brl@bkchsep{#2}}{\brl@chvsep{#2}}}% + {#4}% + {#5}% +} +% \end{macrocode} +% \end{macro} +% +% The style of book names needs to be extended to support LDS books. +% \begin{macrocode} +\brl@foreachbook@full{\providebiblebook{text}}{\ }{---}{Book of }% + {\brm@number@stomach@ordspace} +% \end{macrocode} +% +% The style of references uses the helpers in this section to format correct text descriptions of LDS references. +% No separators are given, because they would be overridden in \cs{brl@text@filter} anyway. +% \begin{macrocode} +\providebiblestyle{text}{% + \brm@standard@filtered% + {}% + {\brm@packpassage{,\ and\ }{,\ and\ }{,\ and\ }}% + {\brm@packpassage{\ to\ }{\ to\ }{\ to\ }}% + {\brm@packpassage% + {\thebookname{text}}% + {\brl@formatchapter}% + {\brl@formatverse}}% + {\brl@text@filter}% + {#1}{#2}{#3}% +} +% \end{macrocode} +% +% \subsection{Linked Style} +% +% This section defines a style that links to \url{http://www.lds.org/scriptures}. +% +% First all the books must be associated with a valid URL path component. +% \begin{macrocode} +\providebiblebook{lds.org}{Genesis}{gen} +\providebiblebook{lds.org}{Exodus}{ex} +\providebiblebook{lds.org}{Leviticus}{lev} +\providebiblebook{lds.org}{Numbers}{num} +\providebiblebook{lds.org}{Deuteronomy}{deut} +\providebiblebook{lds.org}{Joshua}{josh} +\providebiblebook{lds.org}{Judges}{judg} +\providebiblebook{lds.org}{Ruth}{ruth} +\providebiblebook{lds.org}{ISamuel}{1\_sam} +\providebiblebook{lds.org}{IISamuel}{2\_sam} +\providebiblebook{lds.org}{IKings}{1\_kgs} +\providebiblebook{lds.org}{IIKings}{2\_kgs} +\providebiblebook{lds.org}{IChronicles}{1\_chr} +\providebiblebook{lds.org}{IIChronicles}{2\_chr} +\providebiblebook{lds.org}{Ezra}{ezra} +\providebiblebook{lds.org}{Nehemiah}{neh} +\providebiblebook{lds.org}{Esther}{esth} +\providebiblebook{lds.org}{Job}{job} +\providebiblebook{lds.org}{Psalms}{ps} +\providebiblebook{lds.org}{Proverbs}{prov} +\providebiblebook{lds.org}{Ecclesiastes}{eccl} +\providebiblebook{lds.org}{SongofSongs}{song} +\providebiblebook{lds.org}{Isaiah}{isa} +\providebiblebook{lds.org}{Jeremiah}{jer} +\providebiblebook{lds.org}{Lamentations}{lam} +\providebiblebook{lds.org}{Ezekiel}{ezek} +\providebiblebook{lds.org}{Daniel}{dan} +\providebiblebook{lds.org}{Hosea}{hosea} +\providebiblebook{lds.org}{Joel}{joel} +\providebiblebook{lds.org}{Amos}{amos} +\providebiblebook{lds.org}{Obadiah}{obad} +\providebiblebook{lds.org}{Jonah}{jonah} +\providebiblebook{lds.org}{Micah}{micah} +\providebiblebook{lds.org}{Nahum}{nahum} +\providebiblebook{lds.org}{Habakkuk}{hab} +\providebiblebook{lds.org}{Zephaniah}{zeph} +\providebiblebook{lds.org}{Haggai}{hag} +\providebiblebook{lds.org}{Zechariah}{zech} +\providebiblebook{lds.org}{Malachi}{mal} +\providebiblebook{lds.org}{Matthew}{matt} +\providebiblebook{lds.org}{Mark}{mark} +\providebiblebook{lds.org}{Luke}{luke} +\providebiblebook{lds.org}{John}{john} +\providebiblebook{lds.org}{Acts}{acts} +\providebiblebook{lds.org}{Romans}{rom} +\providebiblebook{lds.org}{ICorinthians}{1\_cor} +\providebiblebook{lds.org}{IICorinthians}{2\_cor} +\providebiblebook{lds.org}{Galatians}{gal} +\providebiblebook{lds.org}{Ephesians}{eph} +\providebiblebook{lds.org}{Philippians}{philip} +\providebiblebook{lds.org}{Colossians}{col} +\providebiblebook{lds.org}{IThessalonians}{1\_thes} +\providebiblebook{lds.org}{IIThessalonians}{2\_thes} +\providebiblebook{lds.org}{ITimothy}{1\_tim} +\providebiblebook{lds.org}{IITimothy}{2\_tim} +\providebiblebook{lds.org}{Titus}{titus} +\providebiblebook{lds.org}{Philemon}{philem} +\providebiblebook{lds.org}{Hebrews}{heb} +\providebiblebook{lds.org}{James}{james} +\providebiblebook{lds.org}{IPeter}{1\_pet} +\providebiblebook{lds.org}{IIPeter}{2\_pet} +\providebiblebook{lds.org}{IJohn}{1\_jn} +\providebiblebook{lds.org}{IIJohn}{2\_jn} +\providebiblebook{lds.org}{IIIJohn}{3\_jn} +\providebiblebook{lds.org}{Jude}{jude} +\providebiblebook{lds.org}{Revelation}{rev} +\providebiblebook{lds.org}{INephi}{1\_ne} +\providebiblebook{lds.org}{IINephi}{2\_ne} +\providebiblebook{lds.org}{Jacob}{jacob} +\providebiblebook{lds.org}{Enos}{enos} +\providebiblebook{lds.org}{Jarom}{jarom} +\providebiblebook{lds.org}{Omni}{omni} +\providebiblebook{lds.org}{WordsofMormon}{w\_of\_m} +\providebiblebook{lds.org}{Mosiah}{mosiah} +\providebiblebook{lds.org}{Alma}{alma} +\providebiblebook{lds.org}{Helaman}{hel} +\providebiblebook{lds.org}{IIINephi}{3\_ne} +\providebiblebook{lds.org}{IVNephi}{4\_ne} +\providebiblebook{lds.org}{Mormon}{morm} +\providebiblebook{lds.org}{Ether}{ether} +\providebiblebook{lds.org}{Moroni}{moro} +\providebiblebook{lds.org}{DoctrineandCovenants}{dc} +\providebiblebook{lds.org}{OfficialDeclaration}{od} +\providebiblebook{lds.org}{Moses}{moses} +\providebiblebook{lds.org}{Abraham}{abr} +\providebiblebook{lds.org}{JosephSmith-Matthew}{js\_m} +\providebiblebook{lds.org}{JosephSmith-History}{js\_h} +\providebiblebook{lds.org}{ArticlesofFaith}{a\_of\_f} +% \end{macrocode} +% +% This style emits a URL that points to \url{http://scriptures.lds.org/}. +% There is a newer URL at \url{http://lds.org/scriptures/}, but with the older URL the anchors are placed better. +% The older URL will redirect to the newer URL. +% \begin{macrocode} +\providebiblestyle{lds.org-url}{% + http://scriptures.lds.org/% + \thebookname{lds.org}{#1}/% + \ifhaschapter{#1}{% + \thechapter{#1}/% + \ifhasverse{#1}{% + \theverse{#1}% + }{% + }% + }{% + }% + \brl@ldsdotorgurl@passage{#1}{#2}{-}% + #3{ + \brl@ldsdotorgurl@list{\ifhasbook{#2}{#2}{#1}}% + }{% + }% + \ifhasverse{#1}{% + \#\theverse{#1}% + }{% + }% +} +% \end{macrocode} +% +% \begin{macro}{\brl@ldsdotorgurl@passage} +% A single portion of the URL for a passage is generated by \verb|\brl@ldsdotorgurl@passage|\-\marg{lastpassage}\-\marg{passage}\-\marg{separator}. +% \begin{macrocode} +\newcommand*{\brl@ldsdotorgurl@passage}[3]{% + \ifhasbook{#2}{% + \ifsamebook{#1}{#2}{% + \ifsamechapter{#1}{#2}{% + \ifsameverse{#1}{#2}{% + }{% + #3\theverse{#2}% + }% + }{% + \brm@error{Links cannot span chapters}% + }% + }{% + \brm@error{Links cannot span books}% + }% + }{% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\brl@ldsdotorgurl@list} +% A portion of the URL for lists of verses is generated by \verb|\brl@ldsdotorgurl@passage|\-\marg{lastpassage}\-\marg{beginpassage}\-\marg{endpassage}\-\marg{list}. +% \begin{macrocode} +\newcommand*{\brl@ldsdotorgurl@list}[4]{% + \brl@ldsdotorgurl@passage{#1}{#2}{,}% + \brl@ldsdotorgurl@passage{#2}{#3}{-}% + #4{ + \brl@ldsdotorgurl@list{\ifhasbook{#3}{#3}{#2}}% + }{% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\provideldsdotorgstyle} +% \hypertarget{provideldsdotorgstyle}{} +% Different users might wish to define links for a variety of styles. +% For example, a user might wish to have either full text or abbreviated text being linked. +% To provide this flexibility, this command will define a new link style. +% There are more than nine parameters that are needed, and \TeX only allows nine parameters to any one command. +% The workaround is to consume the first nine arguments in this command and then consume the rest of the arguments in \cs{brl@ldsdotorg@consumeargs}. +% The signature, including all parameters, is \verb|\provideldsdotorgstyle|\-\marg{stylename}\-\marg{bookstyle}\-\marg{bkchsep}\marg{chvsep}\-\marg{bksep}\marg{chsep}\marg{vsep}\-\marg{rangesep}\-\marg{chapterstyle}\-\marg{versestyle}. +% The user first gives the name for this new style, and then the name for the style of book names, and then the formatting for the link text. +% +% This command is not able to take an arbitrary style name to use as the link text, like \cs{providebiblegatewaystyle} can, because the link text needs to be divided into multiple links for each chapter. +% Links to the LDS website cannot span chapter boundaries. +% \begin{macrocode} +\newcommand*{\provideldsdotorgstyle}[8]{% + \brl@ldsdotorg@consumeargs{#1}{#2}% + {\brm@packseparators{#3}{#4}}% + {\brm@packpassage{#5}{#6}{#7}}% + {\brm@packpassage{#8}{#8}{#8}}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\brl@ldsdotorg@consumeargs} +% This command helps collect arguments by consuming five arguments from \cs{provideldsdotorgstyle} and two remaining arguments for the number formatters. +% It's signature is \verb|\brl@ldsdotorg@consumeargs|\-\marg{stylename}\-\marg{bookstyle}\-\marg{infixseparators}\-\marg{listseparators}\-\marg{rangeseparators}\-\marg{chapterstyle}\-\marg{versestyle}. +% \begin{macrocode} +\newcommand*{\brl@ldsdotorg@consumeargs}[7]{% + \brl@ldsdotorg@providestyle{#1}{#3}{#4}{#5}% + {\brm@packpassage{\thebookname{#2}}% + {\brm@formatchapter{#6}}% + {\brm@formatverse{#7}}}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\brl@ldsdotorg@providestyle} +% The actual link style is created by the \verb|\brl@ldsdotorg@providestyle|\-\marg{stylename}\-\marg{infixseparators}\-\marg{listseparators}\-\marg{rangeseparators}\-\marg{formatters} command. +% \begin{macrocode} +\newcommand*{\brl@ldsdotorg@providestyle}[5]{% + \providebiblestyle{#1}{% + \brl@ldsdotorg@style{#2}{#3}{#4}{#5}{##1}{##2}{##3}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\brl@ldsdotorg@style} +% The link style is generated by the \verb|\brl@ldsdotorg@style|\-\marg{infixseparators}\-\marg{listseparators}\-\marg{rangeseparators}\-\marg{formatters}\-\marg{beginpassage}\-\marg{endpassage}\-\marg{list} command. +% \begin{macrocode} +\newcommand*{\brl@ldsdotorg@style}[7]{% + \brl@ldsdotorg@range% + {\brm@packpassage{}{}{}}% + {#5}{#6}{#1}% + {\brm@packpassage{}{}{}}% + {#3}{#4}% + #7{% + \brl@ldsdotorg@list{#1}{#2}{#3}{#4}{\ifhasbook{#6}{#6}{#5}}% + }{% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\brl@ldsdotorg@list} +% Additional references in a list are generated by the \verb|\brl@ldsdotorg@list|\-\marg{infixseparators}\-\marg{listseparators}\-\marg{rangeseparators}\-\marg{formatters}\-\marg{lastpassage}\-\marg{beginpassage}\-\marg{endpassage}\-\marg{list} command. +% \begin{macrocode} +\newcommand*{\brl@ldsdotorg@list}[8]{% + \brl@ldsdotorg@range{#5}{#6}{#7}{#1}{#2}{#3}{#4}% + #8{% + \brl@ldsdotorg@list{#1}{#2}{#3}{#4}{\ifhasbook{#7}{#7}{#6}}% + }{% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\brl@number@empty} +% In order to output only the punctuation for a passage, there must be a way to suppress the output of the chapter and verse numbers. +% A special number formatter for this is \verb|\brl@number@empty|\-\marg{number}. +% It always outputs the empty string. +% \begin{macrocode} +\newcommand*{\brl@number@empty}[1]{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\brl@ldsdotorg@range} +% Ranges of references are generated by the \verb|\brl@ldsdotorg@range|\-\marg{lastpassage}\-\marg{beginpassage}\-\marg{endpassage}\-\marg{infixseparators}\-\marg{listseparators}\-\marg{rangeseparators}\-\marg{formatters} command. +% It decides which punctuation would be necessary and then delegates to \cs{brl@ldsdotorg@href}. +% The punctuation is not straightforward, because sometimes a reference must be split into multiple separate links. +% Also, in between the links, there might be some punctuation that does not link anywhere. +% This can be done using the regular \cs{brm@standard@passage} helper. +% Sometimes the helper is invoked with no punctuation, so it outputs only a formatted passage. +% Sometimes it is invoked with empty number formatters and only punctuation, so it outputs only the delimiters around a passage. +% \begin{macrocode} +\newcommand*{\brl@ldsdotorg@range}[7]{% + \brl@ldsdotorg@href{#2}{#3}{% + \brm@standard@passage{#1}{#2}% + {\brm@packpassage{}{}{}}% + {#5}% + {\brm@packpassage% + {\brl@number@empty}% + {\brl@number@empty}% + {\brl@number@empty}}% + }{% + \brm@standard@passage{#1}{#2}{#4}% + {\brm@packpassage{}{}{}}% + {#7}% + }{% + \brm@standard@passage{#2}{#3}% + {\brm@packpassage{}{}{}}% + {#6}% + {\brm@packpassage% + {\brl@number@empty}% + {\brl@number@empty}% + {\brl@number@empty}}% + }{% + \brm@standard@passage{#2}{#3}{#4}{\brm@packpassage{}{}{}}{#7}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\brl@ldsdotorg@href} +% A single range of references that has been checked by \cs{brl@ldsdotorg@range} is processed further by \verb|\brl@ldsdotorg@href|\-\marg{beginpassage}\-\marg{endpassage}\-\marg{prefix}\-\marg{formattedbeginpassage}\-\marg{rangeseparator}\-\marg{formattedendpassage}. +% \begin{macrocode} +\newcommand*{\brl@ldsdotorg@href}[6]{% + \ifsamebook{#1}{#2}{% + \ifsamechapter{#1}{#2}{% + \brl@ldsdotorg@samechapter{#1}{#2}{#3}{#4}{#5}{#6}% + }{% + \brl@ldsdotorg@spanchapter{#1}{#2}{#3}{#4}{#5}{#6}% + }% + }{% + \brl@ldsdotorg@spanchapter{#1}{#2}{#3}{#4}{#5}{#6}% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\brl@ldsdotorg@samechapter} +% If a reference is to a range of verses within one chapter, then the link is generated by \verb|\brl@ldsdotorg@samechapter|\-\marg{beginpassage}\-\marg{endpassage}\-\marg{prefix}\-\marg{formattedbeginpassage}\-\marg{rangeseparator}\-\marg{formattedendpassage}. +% \begin{macrocode} +\newcommand*{\brl@ldsdotorg@samechapter}[6]{% + #3% + \href{% + \brm@delegatestyle{lds.org-url}{#1}{#2}{\brm@nillist}% + }{% + #4#5#6% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\brl@ldsdotorg@spanchapter} +% If a reference is to a range of verses that are not within one chapter, then the links are generated by \verb|\brl@ldsdotorg@spanchapter|\-\marg{beginpassage}\-\marg{endpassage}\-\marg{prefix}\-\marg{formattedbeginpassage}\-\marg{rangeseparator}\-\marg{formattedendpassage}. +% The begin and end of the range have to be separate links because a single link cannot span chapters. +% \begin{macrocode} +\newcommand*{\brl@ldsdotorg@spanchapter}[6]{% + #3% + \href{% + \brm@delegatestyle{lds.org-url}{#1}% + {\brm@packpassage{}{}{}}% + {\brm@nillist}% + }{% + #4% + }% + #5% + \ifhasbook{#2}{% + \href{% + \brm@delegatestyle{lds.org-url}{#2}% + {\brm@packpassage{}{}{}}% + {\brm@nillist}% + }{% + #6% + }% + }{% + }% +} +% \end{macrocode} +% \end{macro} +% +% This style uses the standard LDS abbreviations and has links to the official LDS website. +% This is the default style if it has not been overridden by the user. +% \begin{macrocode} +\provideldsdotorgstyle{lds.org}{lds}% + {\ }{:}{; }{; }{, }{--}% + {\brm@number@arabic}{\brm@number@arabic} +% \end{macrocode} +% +% This style uses the full names of books and has links to the offical LDS website. +% A user can choose this style with the following command. +% +% \begin{verbatim} +%\setbiblestyle{lds.org-fullname} +% \end{verbatim} +% +% \begin{macrocode} +\provideldsdotorgstyle{lds.org-fullname}{fullname}% + {\ }{:}{; }{;}{,}{--}% + {\brm@number@arabic}{\brm@number@arabic} +% \end{macrocode} +% +% \subsection{Default Style} +% +% The default style for documents that don't override it is the one that outputs the full name of the books. +% \begin{macrocode} +\setbiblestyle{lds.org} +% \end{macrocode} +% \Finale +\endinput -- cgit v1.2.3