Bibleref-xidx : 旧约和新约部分

Bibleref-xidx : 旧约和新约部分

我计划使用它bibleref-xidx来生成圣经索引,其中的经文作为章节的子项目出现:

\documentclass{memoir}
\usepackage{etoolbox,indextools,bibleref-xidx}
\usepackage[hidelinks]{hyperref}

\makeindex[title=Person Names Index]
\makeindex[title=Scriptural Index,name=scr,columns=1]
\renewcommand{\biblerefindex}{\index[scr]}

\begin{document}

John Doe\index{Doe}

\ibibleverse{Mk}(1:11)
\ibibleverse{Mk}(1:34)
\ibibleverse{Mk}(3:7)

\ibibleverse{Ex}(3:14)

\printindex
\printindex[scr]
\end{document}

在此处输入图片描述

除此之外,我想将索引细分为两个部分,分别针对旧约和新约。

我尝试过使用\biblerefcategory{Old Testament}\biblerefcategory{New Testament},以及

\biblerefmap{Exodus}{1@Old Testament!01}
\biblerefmap{Mark}{2@New Testament!01}

但这两种方法似乎不兼容bibleref-xidx(它们适用于bibleref,但诗句不再是章节的子项目......)。

有什么可能的解决方法吗?

答案1

我找到了一个解决方案。以下是概念证明:

\documentclass{memoir}
\usepackage{bibleref-xidx}
\usepackage{indextools}

\makeindex[title=Old Testament,name=ot,columns=1]
\makeindex[title=New Testament,name=nt,columns=1]

\newtoggle{AT}
% Switch to toggle for each book
\makeatletter
\pretocmd{\br@Ex}{\toggletrue{AT}}{}{}
\pretocmd{\br@Mk}{\togglefalse{AT}}{}{}
% etc
\makeatother
% Creates two indexes
\renewcommand*{\biblerefindex}{\iftoggle{AT}{\index[ot]}{\index[nt]}}

\setindexbooktitle{Ex}{Book of Exodus}
\setindexbooktitle{Mk}{Gospel according to Mark}

\biblerefstyle{jerusalem}


\begin{document}

\ibibleverse{Ex}(1:2)
\ibibleverse{Mk}(4:7)
\ibibleverse{Ex}(5:22)
\ibibleverse{Mk}(9:12)

\printindex[ot]
\printindex[nt]

\end{document}

也许有人对此感兴趣和/或可以判断该方法是否足够可靠。

答案2

我发现我以前的方法与\ibiblechvs命令不兼容,因为它不调用\br@<Book>宏。

因此,另一种方法是绘制圣经书籍图,然后插入\@bible@verse编号测试(假设旧约书籍编号为 1-46,新约书籍编号为 47ss)。

\documentclass{memoir}
\usepackage{bibleref,indextools}

%%% Sorting map %%%
\biblerefmap{Gn}{001}
\biblerefmap{Ex}{002}
% ...
\biblerefmap{Mt}{047}
\biblerefmap{Mk}{048}
% ...

\makeatletter
\renewcommand*{\@bible@verse}[1]{%
  \bbl@ifunset{bbl@active@\string:}%
    {}%
    {\shorthandoff:}%
  \@ifundefined{br@#1}%
  {%
    \PackageError{bibleref}{Unknown book '#1'}{}%
  }%
  {%
  %%% Test for Old Testament/New Testament %%%
    \ifnum47>0\csname @bibleref@map@#1\endcsname\relax%
    \renewcommand{\biblerefindex}{\index[at]}%
    \else%
    \renewcommand{\biblerefindex}{\index[nt]}%
    \fi%
    %%%%%%
    \@bv@idxsort{\csname br@#1\endcsname}%
    \def\@bv@chidxsort{}%
    \BRbooktitlestyle{\csname br@#1\endcsname}%
    \let\@bv@org@bookof\BRbookof
    \let\@bv@org@booknumberstyle\BRbooknumberstyle
    \let\@bv@org@epistletothe\BRepistletothe
    \let\@bv@org@epistlenumberstyle\BRepistlenumberstyle
    \def\BRbookof{\string\BRbookof\space}%
    \def\BRbooknumberstyle{\string\BRbooknumberstyle\space}%
    \def\BRepistletothe{\string\BRepistletothe\space}%
    \def\BRepistlenumberstyle{\string\BRepistlenumberstyle\space}%
    \@ifundefined{bri@#1}%
    {%
      \protected@edef\@bv@mainidxentry{%
         \protect\BRbooktitlestyle{\csname br@#1\endcsname}}%
    }%
    {%
      \protected@edef\@bv@mainidxentry{%
         \protect\BRbooktitlestyle{\csname bri@#1\endcsname}}%
    }%
    \let\BRbookof\@bv@org@bookof
    \let\BRbooknumberstyle\@bv@org@booknumberstyle
    \let\BRepistletothe\@bv@org@epistletothe
    \let\BRepistlenumberstyle\@bv@org@epistlenumberstyle
  }%
  \new@ifnextchar(%
    {\BRbkchsep\@bibleverse}%
    {\@end@@bibleverse}%
}
\makeatother

\makeindex[title=Antiguo Testamento,name=at]
\makeindex[title=Nuevo Testamento,name=nt]
\indexsetup{level=\section*,noclearpage}

\biblerefstyle{jerusalem}

\begin{document}

\ibibleverse{Gn}(4:12)
\ibibleverse{Mt}(3:7)
\ibiblechvs{Ex}(6:3)

\chapter*{Índice bíblico}
\printindex[at]
\printindex[nt]
\end{document}

相关内容