9

I'm attempting to typeset a Bible for my mom and I'm running into a few problems and I was hoping someone here could help.

First I'll start with the easy question. I'm currently using two columns and adding a line to separate them in the center like this:

\documentclass[twoside,twocolumn]{book}
\setlength{\columnseprule}{0.5pt}

After I use \maketitle it inserts a blank page (since it doesn't want to start new content on a verso page) but the column separation line still shows up. How do I get the \columnseprule and \headrule to not show up on this blank page? It doesn't occur on any other blank pages in the document.

Now the hard question... In the header I want the format to be < Book Name > < Chapter # >:< Verse # > where the Chapter and Verse numbers are the first chapter/verse that appears on the page (even [verso] page) or the last to appear on the page (odd [recto] page). I've almost gotten the odd page style to work but it isn't working quite right and I'm not sure why. I have pictures to show my problem, unfortunately since this is my first time contributing to this website I don't have enough reputation to post pictures.

In general it seems to work OK. Most pages are shown correctly but occasionally the verse number displayed will be off by one, either one before or one after it should be. I suspect it has something to do with when LaTex decides to place a page break but I don't know how to account for that.

And I don't have the first clue how to start the even (verso) page style.

I'm trying to make my code very configurable so it is pretty complicated but I'll try to post the applicable parts here. [If you copy and paste this it wont compile due to the custom commands I've written for everything... sorry.] Descriptions for the main commands are below. Thanks for your help!

\newcommand{\jnumChapters}{0}

\newcommand{\jnumVerses}{0}

\newcommand{\jChapter}[1]{
\ifthenelse{#1=1}{\renewcommand{\jnumChapters}{#1}}
{\renewcommand{\jnumChapters}{#1}\par\bigskip\lettrine{{\textcolor{special}{#1}}}{}}}

\newcommand{\jverse}[3]{\ifthenelse{\boolean{ParaFormat}}
{\ifthenelse{#1=1}
{\noindent\jverseFormat{#1}{#3}}
{#2{\jChapterNumFormat{#1}} {\jverseFormat{#1}{#3}}}}
{\ifthenelse{#1=1}
{\noindent\jverseFormat{#1}{#3}\smallskip\newline}
{\noindent {\jChapterNumFormat{#1}} #2{\jverseFormat{#1}{#3}}\par\smallskip}}\renewcommand{\jnumVerses}{#1}}

\pagestyle{fancy}
\fancyhf{}
\fancyhead[RO]{{\chaplabel} {\jnumChapters}:{\jnumVerses}}

\jChapter{< Chapter# >} formats the chapter numbers for each chapter. I format the first chapter number of each book differently than all the others (thus the \ifthenelse statement).

\jverse{< Verse# >}{< Paragraph Indicator >}{< Verse Text >} Formats each verse individually. The Paragraph Indicator just lets me know if that verse needs to start a new paragraph if the text is not going to be formatted in verse-by-verse format.


EDIT #1 11:16am EST, 8/24/2013:

Thanks Mico, adding \setlength{\columnseprule}{0pt} before \maketitle worked. I had been trying it afterwords.

This is as minimal as I could make it to show in general what I'm attempting to do. Problem is in order to show the page numbering problem I'd have to input about 5 pages of verses and that would make this post even more ridiculously long. I'd be happy to post/email the Genesis.tex file that has all those versus if someone has a suggestion as to where I should post it.

My reasoning for making custom commands was to give me the unfettered ability to modify and customize. I could still use \section or \paragraph by embedding them inside \jverse or \jChapter but this gives me the option of going other routes. It may be that using the already defined LaTex commands is better and in that case I'll just clean up the code later.

Thanks again!

\documentclass[twoside,twocolumn,letterpaper]{book}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\usepackage{lettrine}
\usepackage{fancyhdr}

\newcommand{\jChapter}[1]{\par\bigskip\lettrine{{\textcolor{red}{#1}}}{}\renewcommand{\jnumChapters}{#1}}

\newcommand{\jverseFormat}[1]{#1}
\newcommand{\jChapterNumFormat}[1]{\textcolor{cyan}{\textbf{#1}}}

\newcommand{\jverse}[3]{\noindent{\jChapterNumFormat{#1}} #2{\jverseFormat{#3}}\par\smallskip\renewcommand{\jnumVerses}{#1}}

\newcommand{\jBracketWord}[1]{\emph{#1}}

\newcommand{\jParaSymbol}[0]{{}}

\raggedright

\setlength{\columnseprule}{0.5pt}

\pagestyle{fancy}
\fancyhf{}
\fancyhead[RO]{{\chaplabel} {\jnumChapters}:{\jnumVerses}}
\renewcommand{\headrulewidth}{0pt}
\setlength{\headwidth}{\textwidth}
\addtolength{\headwidth}{\marginparsep}
\addtolength{\headwidth}{\marginparwidth}

\newcommand{\chaplabel}{}
\newcommand{\jnumChapters}{0}
\newcommand{\jnumVerses}{0}

\begin{document}

\frontmatter

\title{The Holy Bible}
\date{}
\author{}
\setlength{\columnseprule}{0pt}
\maketitle
%\tableofcontents
\mainmatter

\part*{The Old Testament}

\renewcommand{\jnumChapters}{0}
\chapter{Genesis}
\renewcommand{\chaplabel}{Genesis}
\jChapter{1}
\jverse{1}{}{In the beginning God created the heaven and the earth.}
\jverse{2}{}{And the earth was without form, and void; and darkness \jBracketWord{was} upon the face of the deep. And the Spirit of God moved upon the face of the waters.}
%\input{./Genesis.tex}
\end{document}

Now that I have 10 rep I can post a picture. Numbers not working, even though last verse ends on page.

  • To address just your "easy" question: You might try setting \setlength{\columnseprule}{0pt} before \maketitle and \setlength{\columnseprule}{0.5pt} immediately thereafter. That way, no column separator should show up on the verso page that follows the title page. – Mico Aug 24 '13 at 6:36
  • The description of your custom macros seem to be a reimplementation of what LaTeX is alredy able to do, i.e. to format the chapter number you alredy have \thechapter and so on. Please provide a MWE (Minimal working example). So one can see the thought process behind your control sequences and the source of your problem. (For verses you could probabilly use the built in paragraph command and redefine it depending on your needs.) – Ruben Aug 24 '13 at 10:26
6

As I wrote in a comment I would use different approach in general. So, even though your own anwer is working, I add this solution for completeness:

\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{The Holy Bible}
\date{}
\author{}

\begin{document}
\frontmatter
\maketitle
\tableofcontents

\mainmatter
\part*{The Old Testament}
  \setlength{\columnseprule}{.5pt}
\book{Genesis}
\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}

\begin{biblechapter}
\verse \lipsum[7]
\verse \lipsum[8]
\verse \lipsum[9]
\end{biblechapter}

\begin{biblechapter}
\verse \lipsum[10]
\verse \lipsum[11]
\verse \lipsum[12]
\end{biblechapter}

\begin{biblechapter}
\verse \lipsum[13]
\verse \lipsum[14]
\verse \lipsum[15]
\end{biblechapter}
\end{document}

biblw

  • Very nice solution. I need to do a document with a similar logic but it isn't exactly a Bible. I need to make verses like in yur solution but also at least 3 sublevels of verses. Since the book titles are vey long in some cases, could you help me or suggest me how to achieve it? – Aradnix Dec 24 '16 at 8:03
  • Hey @Aradnix, you can add a follow-up question on its own. I think it is neither adequate nor possible to help you here via the comment section. By referring to my solution, resp. me by using the @ char, i.e. "(at)Ruben", i.e. "Like in the solution by (at)Ruben ..." you make sure that I will be notified. Most likely I will be able to answer the question tomorrow. – Ruben Dec 24 '16 at 10:57
  • I posted a new question here I hope you can read it and answer me how to improve your solution. – Aradnix Dec 29 '16 at 16:50
  • 1
    @Ruben: The fixltx2e package isn't needed any longer since April 2015. – user31729 Feb 26 '17 at 22:57
2

Turns out the answer was much easier than I was making it. The \markboth{}{}, \leftmark, and \rightmark commands take care of the headings formatting issues I was having. Thanks to Mico for answering my second question. Here is the MWE fixed to work properly.

\documentclass[twoside,twocolumn,letterpaper]{book}
\usepackage[usenames,dvipsnames,svgnames,table]{xcolor}
\usepackage{lettrine}
\usepackage{fancyhdr}
\usepackage{fixltx2e}

\newcommand{\jChapter}[1]{\par\bigskip\lettrine{{\textcolor{red}{#1}}}{}\markboth{\chaplabel\ #1:1}{\chaplabel\ #1:1}\renewcommand{\jnumChapters}{#1}}

\newcommand{\jverseFormat}[1]{#1}
\newcommand{\jChapterNumFormat}[1]{\textcolor{cyan}{\textbf{#1}}}

\newcommand{\jverse}[3]{\noindent{\jChapterNumFormat{#1}\markboth{\chaplabel\ \jnumChapters :#1}{\chaplabel\ \jnumChapters :#1}} #2{\jverseFormat{#3}}\par\smallskip\renewcommand{\jnumVerses}{#1}}

\newcommand{\jBracketWord}[1]{\emph{#1}}

\newcommand{\jParaSymbol}[0]{{}}

\raggedright

\setlength{\columnseprule}{0.0pt}

\pagestyle{fancy}
\fancyhf{}
\fancyhead[RO]{\leftmark}
\fancyhead[LE]{\rightmark}
\renewcommand{\headrulewidth}{0pt}
\setlength{\headwidth}{\textwidth}
\addtolength{\headwidth}{\marginparsep}
\addtolength{\headwidth}{\marginparwidth}

\newcommand{\chaplabel}{}
\newcommand{\jnumChapters}{0}
\newcommand{\jnumVerses}{0}

\begin{document}

\frontmatter

\title{The Holy Bible}
\date{}
\author{}
\setlength{\columnseprule}{0pt}
\maketitle

%\tableofcontents
\mainmatter

\part*{The Old Testament}
\setlength{\columnseprule}{0.0pt}
\renewcommand{\jnumChapters}{0}
\chapter{Genesis}
\renewcommand{\chaplabel}{Genesis}
\jChapter{1}
\jverse{1}{}{In the beginning God created the heaven and the earth.}
\jverse{2}{}{And the earth was without form, and void; and darkness \jBracketWord{was} upon the face of the deep. And the Spirit of God moved upon the face of the waters.}
%\input{./Genesis.tex}
\end{document}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.