![如何设置具有多级经文的圣经风格文档?](https://linux22.com/image/346536/%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%E5%85%B7%E6%9C%89%E5%A4%9A%E7%BA%A7%E7%BB%8F%E6%96%87%E7%9A%84%E5%9C%A3%E7%BB%8F%E9%A3%8E%E6%A0%BC%E6%96%87%E6%A1%A3%EF%BC%9F%20.png)
首先,我想祝大家圣诞快乐,我写这封信是为了解决以下疑问。
我很久以前就尝试过在LaTeX
具有类似圣经结构的文档中撰写文章,基本上能够撰写分成编号诗句的段落。
我不认为我是第一个或唯一一个有这种担忧的人,在网上搜索了一下,我发现这个问题它帮助我构建了我想要做的测试。我特别指的是@Ruben 提出的解决方案。
我在测试中发现了一些需要改进的细节:
添加一个简称选项,因为
\book
我处理的书籍标题很长,页面标题放不下。为诗句添加至少 2 个子级别,其计数器引用
verse
,我认为最后一个级别可以使用包中的编号列表来解决enumitem
。在某些情况下我需要使用部分,但我不确定它们的编号是否会与其中一个诗句发生冲突,或者它们是否可以彼此独立。
我的 MWE(取自我上面提到的答案):
\documentclass[twoside,twocolumn,letterpaper,11pt]{book}
\usepackage[T1]{fontenc}
\usepackage{ebgaramond}
\usepackage{lipsum}
\usepackage{fixltx2e}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\usepackage{lettrine}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[RO,LE]{\rightmark}
\renewcommand{\headrulewidth}{.5pt}
\setlength{\headwidth}{\textwidth}
\setlength{\headheight}{15pt}
\setlength{\headsep}{0pt}
\setlength{\columnseprule}{0pt}
\clubpenalty10000
\widowpenalty10000
\makeatletter
\newcommand\versenumcolor{red}
\newcommand\chapnumcolor{red}
\renewcommand\paragraph{%
\@startsection{paragraph}{4}{\z@}%
{.25ex \@plus.25ex \@minus.1ex}%
{-.5em}%
{\normalfont\normalsize\bfseries\color{\versenumcolor}}}%
\newlength{\biblechapskip}
\setlength{\biblechapskip}{1em plus .33em minus .2em}
\newcounter{biblechapter}
\newcounter{bibleverse}[biblechapter]
\renewcommand\chaptername{Book}
\let\ltx@chapter=\chapter
\let\ltx@paragraph=\paragraph
\newcommand{\book}[1]{%
\gdef\currbook{#1}
\ltx@chapter{#1}}
\newcount\biblechap@svdopt
\newenvironment{biblechapter}[1][\thebiblechapter]
{\biblechap@svdopt=#1
\ifnum\c@biblechapter=\biblechap@svdopt\else
\advance\biblechap@svdopt by -1\fi
\setcounter{biblechapter}{\the\biblechap@svdopt}
\refstepcounter{biblechapter}
\lettrine{\color{\chapnumcolor}\lower-6pt\hbox{\thebiblechapter}}{}\ignorespaces}
{\vspace{\biblechapskip}}
\renewcommand{\verse}[1][\thebibleverse]{%
\refstepcounter{bibleverse}
\markright{{\scshape\currbook} \thebiblechapter:\thebibleverse}
\ifnum\c@bibleverse=1\else
\ltx@paragraph*{#1}\fi}%
\makeatother
\title{A new document based on the Bible}
\date{}
\author{Me}
\begin{document}
\frontmatter
\maketitle
\tableofcontents
\mainmatter
\book{First book with a very long title that does not fit in the header.}
\begin{biblechapter}
\verse In the beginning God created the heaven and the earth.
\verse And the earth was without form, and void; and darkness was upon the face of the deep. And the Spirit of God moved upon the face of the waters.
\verse \lipsum[3]
\end{biblechapter}
\begin{biblechapter}
\verse \lipsum[4]
\verse \lipsum[5]
\verse \lipsum[6]
\end{biblechapter}
\end{document}
我知道主要部分在\makeatletter
和\makeatother
命令中,但是有些代码选项我不太清楚。我查了一下如何使用该\newcounter
命令,但我不清楚如何将它与其他命令联系起来。他们能帮我吗?
答案1
看看“changectr”包。它能做一些有趣的事情,比如限制对个别章节或部分的计数,或者允许你在整个过程中有一个编号序列。
因此,对于你的情况,你\counterwithin{verse}{chapter}
应该\counterwithin{chapter}{book}
每次chapter
计数器增加时,它都会从verse 1
圣经的风格开始。
我使用相同的想法对counterwithout{section}{chapter}
整本书的各个章节进行编号,就像在一些旧文本中看到的那样。