% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode}{hyperref}
\PassOptionsToPackage{hyphens}{url}
\PassOptionsToPackage{dvipsnames,svgnames,x11names}{xcolor}
\documentclass[
  12pt,
  openany]{book}
\usepackage{xcolor}
\usepackage[margin=1in]{geometry}
\usepackage{amsmath,amssymb}
\setcounter{secnumdepth}{5}
\usepackage{iftex}
\ifPDFTeX
  \usepackage[T1]{fontenc}
  \usepackage[utf8]{inputenc}
  \usepackage{textcomp} % provide euro and other symbols
\else % if luatex or xetex
  \usepackage{unicode-math} % this also loads fontspec
  \defaultfontfeatures{Scale=MatchLowercase}
  \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
\fi
\usepackage{lmodern}
\ifPDFTeX\else
  % xetex/luatex font selection
  \setmainfont[]{Noto Serif}
  \setsansfont[]{Noto Sans}
  \setmonofont[]{Noto Sans Mono}
\fi
% Use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\IfFileExists{microtype.sty}{% use microtype if available
  \usepackage[]{microtype}
  \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\makeatletter
\@ifundefined{KOMAClassName}{% if non-KOMA class
  \IfFileExists{parskip.sty}{%
    \usepackage{parskip}
  }{% else
    \setlength{\parindent}{0pt}
    \setlength{\parskip}{6pt plus 2pt minus 1pt}}
}{% if KOMA class
  \KOMAoptions{parskip=half}}
\makeatother
\usepackage{graphicx}
\makeatletter
\newsavebox\pandoc@box
\newcommand*\pandocbounded[1]{% scales image to fit in text height/width
  \sbox\pandoc@box{#1}%
  \Gscale@div\@tempa{\textheight}{\dimexpr\ht\pandoc@box+\dp\pandoc@box\relax}%
  \Gscale@div\@tempb{\linewidth}{\wd\pandoc@box}%
  \ifdim\@tempb\p@<\@tempa\p@\let\@tempa\@tempb\fi% select the smaller of both
  \ifdim\@tempa\p@<\p@\scalebox{\@tempa}{\usebox\pandoc@box}%
  \else\usebox{\pandoc@box}%
  \fi%
}
% Set default figure placement to htbp
\def\fps@figure{htbp}
\makeatother
% definitions for citeproc citations
\NewDocumentCommand\citeproctext{}{}
\NewDocumentCommand\citeproc{mm}{%
  \begingroup\def\citeproctext{#2}\cite{#1}\endgroup}
\makeatletter
 % allow citations to break across lines
 \let\@cite@ofmt\@firstofone
 % avoid brackets around text for \cite:
 \def\@biblabel#1{}
 \def\@cite#1#2{{#1\if@tempswa , #2\fi}}
\makeatother
\newlength{\cslhangindent}
\setlength{\cslhangindent}{1.5em}
\newlength{\csllabelwidth}
\setlength{\csllabelwidth}{3em}
\newenvironment{CSLReferences}[2] % #1 hanging-indent, #2 entry-spacing
 {\begin{list}{}{%
  \setlength{\itemindent}{0pt}
  \setlength{\leftmargin}{0pt}
  \setlength{\parsep}{0pt}
  % turn on hanging indent if param 1 is 1
  \ifodd #1
   \setlength{\leftmargin}{\cslhangindent}
   \setlength{\itemindent}{-1\cslhangindent}
  \fi
  % set entry spacing
  \setlength{\itemsep}{#2\baselineskip}}}
 {\end{list}}
\usepackage{calc}
\newcommand{\CSLBlock}[1]{\hfill\break\parbox[t]{\linewidth}{\strut\ignorespaces#1\strut}}
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{\strut#1\strut}}
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{\strut#1\strut}}
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\usepackage{etoolbox}
\usepackage[most]{tcolorbox}
\usepackage{graphicx}
\usepackage{xparse}
\tcbuselibrary{breakable}

% --- Disable floating figures globally ---
\usepackage{float}
\let\origfigure\figure
\let\endorigfigure\endfigure
\renewenvironment{figure}[1][H]{\origfigure[H]}{\endorigfigure}

% --- Colors ---
\usepackage{xcolor}
\definecolor{speculativeback}{RGB}{247,232,255}  % #f7e8ff
\definecolor{speculativeframe}{RGB}{139,43,226}  % #8b2be2

% --- Left-align all Pandoc tables ---
\usepackage{longtable}
\usepackage{etoolbox}
\makeatletter
\patchcmd\longtable{\par}{\par\raggedright}{}{}
\setlength{\LTleft}{0pt}
\setlength{\LTright}{0pt}
\makeatother

% Enable index generation
\usepackage{makeidx}
\makeindex


% Helper to show a blank title if empty
\newcommand{\blanktitle}{\mbox{}}

% =========================================================
% Concept Boxes
% =========================================================
\newtcolorbox{infobox}[1][Information]{%
  title=\ifstrempty{#1}{\blanktitle}{#1},
  colback=blue!3!white,
  colframe=blue!50!black,
  colbacktitle=blue!10!white,
  fonttitle=\bfseries,
  coltitle=black,
  enhanced, sharp corners, breakable,
  after=\par\vspace{6pt}
}

\newtcolorbox{proposedbox}[1][Proposed Concept]{%
  title=\ifstrempty{#1}{\blanktitle}{#1},
  colback=blue!5!white,
  colframe=blue!75!black,
  colbacktitle=blue!15!white,
  fonttitle=\bfseries,
  coltitle=black,
  enhanced, sharp corners, breakable,
  after=\par\vspace{6pt}
}

\newtcolorbox{establishedbox}[1][Established Concept]{%
  title=\ifstrempty{#1}{\blanktitle}{#1},
  colback=green!5!white,
  colframe=green!75!black,
  colbacktitle=green!15!white,
  fonttitle=\bfseries,
  coltitle=black,
  enhanced, sharp corners, breakable,
  after=\par\vspace{6pt}
}

\newtcolorbox{speculativebox}[1][Speculative Concept]{%
  title=\ifstrempty{#1}{\blanktitle}{#1},
  colback=speculativeback,
  colframe=speculativeframe,
  colbacktitle=speculativeback!80!white, % lighter variant for title bar
  fonttitle=\bfseries,
  coltitle=black,
  enhanced, sharp corners, breakable,
  after=\par\vspace{6pt}
}


\newtcolorbox{cautionbox}[1][Caution]{%
  title=\ifstrempty{#1}{\blanktitle}{#1},
  colback=orange!5!white,
  colframe=orange!75!black,
  colbacktitle=orange!15!white,
  fonttitle=\bfseries,
  coltitle=black,
  enhanced, sharp corners, breakable,
  after=\par\vspace{6pt}
}

\newtcolorbox{warningbox}[1][Warning]{%
  title=\ifstrempty{#1}{\blanktitle}{#1},
  colback=orange!5!white,
  colframe=orange!75!black,
  colbacktitle=orange!15!white,
  fonttitle=\bfseries,
  coltitle=black,
  enhanced, sharp corners, breakable,
  after=\par\vspace{6pt}
}

\newtcolorbox{dangerbox}[1][Danger]{%
  title=\ifstrempty{#1}{\blanktitle}{#1},
  colback=red!5!white,
  colframe=red!75!black,
  colbacktitle=red!15!white,
  fonttitle=\bfseries,
  coltitle=black,
  enhanced, sharp corners, breakable,
  after=\par\vspace{6pt}
}

\usepackage{xurl}

\usepackage{fancyhdr}
\setlength{\headheight}{15pt}

% --- Chapter-opening pages (plain style) ---
\fancypagestyle{plain}{%
  \fancyhf{}%
  \fancyhead[C]{\leftmark}      % Chapter title
  \cfoot{Basic Book Builder: A Pandoc template for building books and articles}   % Book title
  \rfoot{\thepage}              % Page number
  \renewcommand{\headrulewidth}{0pt}
  \renewcommand{\footrulewidth}{0pt}
}

% --- Normal running pages ---
\pagestyle{fancy}
\fancyhf{}

% Header
\fancyhead[C]{\leftmark}        % Chapter title (centered)

% Footer
\cfoot{Basic Book Builder: A Pandoc template for building books and articles}     % Book title
\rfoot{\thepage}                % Page number

% Line rules
\renewcommand{\headrulewidth}{0pt}   % rule under header
\renewcommand{\footrulewidth}{0pt}     % no rule above footer
\usepackage{bookmark}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\urlstyle{same}
\hypersetup{
  colorlinks=true,
  linkcolor={blue},
  filecolor={Maroon},
  citecolor={Blue},
  urlcolor={Blue},
  pdfcreator={LaTeX via pandoc}}

\author{}
\date{}

\begin{document}
\frontmatter

% -------------------------
% 1. Title Page
% -------------------------
\begin{titlepage}
\centering

\vspace*{2cm}

{\Huge\bfseries Basic Book Builder \par}
\vspace{0.4cm}
{\Large A Pandoc template for building books and articles \par}

\vspace{1.2cm}
\includegraphics[width=0.5\textwidth]{lib/img/UAF-ACEP.png}

\vfill

\end{titlepage}

% -------------------------
% 2. COPYRIGHT / META PAGE
% -------------------------
\newpage
\thispagestyle{empty}

{\Large\bfseries Basic Book Builder \par}
\vspace{0.2cm}
{\normalsize\textit{A Pandoc template for building books and articles}\par}
\vspace{0.4cm}

\renewcommand{\arraystretch}{1.3} % row spacing
\setlength{\tabcolsep}{8pt}       % column padding
\begin{tabular}{@{}p{0.28\textwidth}p{0.65\textwidth}@{}}
\textbf{Author:}       & John Haverlack \\
\textbf{Version:}      & 1.1.0 \\
\textbf{Date:}         & 2026-02-04 \\
\textbf{ISBN:}         & UNSPECIFIED \\
\textbf{DOI:}          & UNSPECIFIED \\
\textbf{Maturity:}       & BETA \\
\end{tabular}

\vspace{0.5cm}

\textbf{Copyright} © 2026 Alaska Center for Energy and Power

\vspace{0.5cm}

% ----- Licensing Section -----
\section*{Licensing}

\subsection*{Open Source Edition (PDF and HTML)}
Licensed under the Creative Commons Attribution-NoDerivatives 4.0 International License.

\begin{itemize}
  \item License: \href{https://creativecommons.org/licenses/by-nd/4.0/}{CC BY-ND 4.0}
\end{itemize}

% \subsection*{Commercial Edition (ebook and print)}
% All Rights Reserved. No part of the EPUB or printed editions may be reproduced or redistributed without permission.

\vspace*{\fill}

% -------------------------
% 3. Cover Illustration Page
% -------------------------
% ----- Title Page Image Note -----
\newpage
\thispagestyle{empty}

% \vspace*{1.5cm}

% {\Large\bfseries Cover Illustration\par}

% \begin{center}
%     \includegraphics[width=0.33\textwidth]{lib/img/UAF-ACEP.png}

%     \vspace{0.6cm}


%     \vspace{0.8cm}

%     {\small
%     \textit{“Cover illustration by****”}
% \end{center}


% -------------------------
% Reset numbering 
% -------------------------
\clearpage
\pagenumbering{roman}

% -------------------------
% Insert dedication
% -------------------------

% \begin{titlepage}
%   \centering
%   \vspace*{\fill}

%   \textit{This book is dedicated to ****.}

%   \vspace*{\fill}
% \end{titlepage}

% (Pandoc will insert the TOC next, using roman numerals)

\renewcommand*\contentsname{Contents}
{
\setcounter{tocdepth}{3}
\tableofcontents
}
\mainmatter
\markboth{Preface}{Preface}

\chapter*{Preface}\label{preface}
\addcontentsline{toc}{chapter}{Preface}

Preface to the Book\ldots{}

\chapter{Introduction}\label{introduction}

This is a basic book (or article) builder template based on a Pandoc
build process in conjunction with a number of other tools to generate
PDF, ODT, HTML, LaTex, Markdown, and Epub book output formats from
Markdown source content , which can optionally be edited as an Obsidian
vault.

This book builder template has been curated by John
Haverlack.(\citeproc{ref-JohnHaverlackACEP}{\emph{John {Haverlack}
\textbar{} {ACEP}}, n.d.})

\chapter{Getting Started}\label{getting-started}

\section{Installing Pre-Requisites}\label{installing-pre-requisites}

For Debian / ZorinOS and likely Ubuntu based systems.

\begin{cautionbox}[TODO]
It would be nice to roll a setup script to take care of this.
\end{cautionbox}

\subsection{Required}\label{required}

\subsubsection{Pandoc}\label{pandoc}

\begin{itemize}
\tightlist
\item
  https://pandoc.org/
\item
  \href{https://github.com/jgm/pandoc/releases/tag/3.8.2.1}{Download}
\end{itemize}

\begin{quote}
\texttt{sudo\ apt\ install\ https://github.com/jgm/pandoc/releases/download/3.8.2.1/pandoc-3.8.2.1-1-amd64.deb}
\end{quote}

\subsubsection{Code Editor}\label{code-editor}

\begin{establishedbox}[Code Editor]
\href{https://vscodium.com/}{VSCodium} is recommend for privacy
(telemetry/tracking) reasons - https://vscodium.com/
\end{establishedbox}

But any text editor will work. \#\#\#\# make

\begin{verbatim}
sudo apt install make
\end{verbatim}

\subsubsection{jq and yq}\label{jq-and-yq}

\begin{verbatim}
sudo apt install jq yq
\end{verbatim}

\subsubsection{texlive}\label{texlive}

\begin{quote}
\texttt{sudo\ apt\ install\ texlive\ texlive-xetex\ texlive-latex-extra\ texlive-fonts-recommended\ texlive-fonts-extra}
\end{quote}

\subsubsection{MathJax}\label{mathjax}

\begin{itemize}
\tightlist
\item
  https://www.mathjax.org/
\end{itemize}

\begin{verbatim}
wget https://registry.npmjs.org/mathjax/-/mathjax-3.2.2.tgz
tar xzf mathjax-3.2.2.tgz
mv package/es5/* lib/mathjax
rm -rf package mathjax-3.2.2.tgz
\end{verbatim}

\begin{cautionbox}[TODO]
This need to be rolled into a setup script.
\end{cautionbox}

\subsection{Optional}\label{optional}

The following are not strictly requires to use this book builder
template.

\subsubsection{Obsidian}\label{obsidian}

\begin{establishedbox}[Highly Recommended]
Editing book chapter content in Obsidian is a very productive means for
editing Markdown source content.
\end{establishedbox}

\begin{itemize}
\tightlist
\item
  https://obsidian.md/
\item
  \href{https://github.com/obsidianmd/obsidian-releases/releases/download/v1.9.14/obsidian_1.9.14_amd64.deb}{Deb
  Package}
\end{itemize}

\begin{verbatim}
sudo apt install https://github.com/obsidianmd/obsidian-releases/releases/download/v1.9.14/obsidian_1.9.14_amd64.deb
\end{verbatim}

\subsubsection{Zotero}\label{zotero}

\begin{establishedbox}[Highly Recommended]
If you need to managed citations and references, Zotero integration is
highly recommended.
\end{establishedbox}

\begin{itemize}
\tightlist
\item
  https://www.zotero.org/
\end{itemize}

\begin{verbatim}
sudo cp ./scripts/deps/zotero.list /etc/apt/sources.list.d/
\end{verbatim}

\begin{verbatim}
sudo apt update
\end{verbatim}

\begin{verbatim}
sudo apt install zotero
\end{verbatim}

\paragraph{Better BibTex for Zotero}\label{better-bibtex-for-zotero}

Install the Better BibTex Plugin for Zotero - Zotero \textgreater{} Tool
\textgreater{} Plugins

\paragraph{Export citations.bib}\label{export-citations.bib}

\begin{itemize}
\tightlist
\item
  Zotero \textgreater{} File \textgreater{} Export Library
  \textgreater{} Format: Better BibTeX
\item[$\square$]
  Keep Updated
\item[$\square$]
  Save to: \textasciitilde/Documents/Lib/zotero.bib
\item[$\square$]
  Symlink your \textasciitilde/Documents/Lib/Citations.bib to
  basic-book-builder/lib/zotero.bib
\end{itemize}

\paragraph{Zotero Connector Browser
Plugin}\label{zotero-connector-browser-plugin}

\begin{itemize}
\tightlist
\item
  https://chromewebstore.google.com/detail/zotero-connector/ekhagklcjbdpajgpjgmbionohlpdbjgc
\end{itemize}

Provides you the ability to auto add Web resources to your Zotero
citation database.

\subsubsection{lmodern}\label{lmodern}

\begin{verbatim}
sudo apt install lmodern
\end{verbatim}

\subsubsection{epubcheck}\label{epubcheck}

\begin{verbatim}
sudo apt install epubcheck
\end{verbatim}

\subsubsection{foliate}\label{foliate}

An EPub Reader

\begin{itemize}
\tightlist
\item
  https://johnfactotum.github.io/foliate/
\end{itemize}

\begin{verbatim}
sudo apt install https://github.com/johnfactotum/foliate/releases/download/2.6.4/com.github.johnfactotum.foliate_2.6.4_all.deb
\end{verbatim}

\subsubsection{calibre}\label{calibre}

An EPub Reader

\begin{itemize}
\tightlist
\item
  https://calibre-ebook.com
\end{itemize}

\begin{verbatim}
sudo apt install calibre
\end{verbatim}

\section{Editing the Configuration}\label{editing-the-configuration}

\chapter{Editing the Book}\label{editing-the-book}

\subsection{Configuration}\label{configuration}

There are a number of other config files for each format:

\begin{verbatim}
conf/
├── epub-metadata.xml
├── epub_template.html
├── epub.yaml
├── frontmatter_epub.md
├── frontmatter_epub.xhtml
├── frontmatter.html
├── frontmatter.tex
├── header.tex
├── html.yaml
├── latex.yaml
├── markdown.yaml
├── metadata.yaml
├── pandoc.yaml
├── pdf.yaml
├── style.css
└── style_epub.css
\end{verbatim}

\subsubsection{Main Config Files}\label{main-config-files}

\begin{itemize}
\tightlist
\item
  metadata.yaml - Set Title, etc
\item
  pandoc.yaml - Main Pandoc Config \#\#\#\# Per format Configs
\item
  \texttt{pdf.yaml}
\item
  \texttt{html.yaml}
\item
  \texttt{latex.yaml}
\item
  \texttt{epub.yaml}
\end{itemize}

\subsection{FrontMatter Config}\label{frontmatter-config}

There are 2 Version of the FrontMatter for PDF, and HTML bases formats
that set the Title, Author, Verizon, Copyright, etc\ldots{}

\begin{itemize}
\tightlist
\item
  \texttt{frontmatter.tex}
\item
  \texttt{frontmatter.html}
\item
  \texttt{frontmatter\_epub.*} - Work in Progress
\end{itemize}

\begin{quote}
There is probably a better way to do this.
\end{quote}

\section{Editing the Content}\label{editing-the-content}

To edit the book open the \texttt{basic-book-builder} directory as an
Obsidian Vault.

\begin{itemize}
\tightlist
\item
  Edit the Markdown content in the \texttt{chapters} directory.
\end{itemize}

\subsection{Citations}\label{citations}

\begin{quote}
Note: the Zotero database needs configured to export automatically to
\texttt{lib/citations.bib}
\end{quote}

To insert a Zotero Citation - Ensure the Zotero App and DB are running
on you system. - Alt + I (to insert citation) - Search for and select
citation reference

\section{Usage: Building the Book}\label{usage-building-the-book}

\subsubsection{PDF}\label{pdf}

\begin{verbatim}
make pdf
\end{verbatim}

\subsubsection{HTML}\label{html}

\begin{verbatim}
make html
\end{verbatim}

\subsubsection{LaTex}\label{latex}

\begin{verbatim}
make latex
\end{verbatim}

\subsubsection{Markdown}\label{markdown}

\begin{verbatim}
make markdown
\end{verbatim}

\subsubsection{EPub}\label{epub}

\begin{quote}
Note: This ePub configuration still needs tuning.
\end{quote}

\begin{verbatim}
make epub
\end{verbatim}

\appendix

Appendix A

First Appendix

\backmatter

\chapter*{Glossary}\label{glossary}
\addcontentsline{toc}{chapter}{Glossary}

\begin{itemize}
\tightlist
\item
  \textbf{AI} - Artificial Intelligence
\item
\end{itemize}

\clearpage
\thispagestyle{plain}
\markboth{Index}{Index}

\let\oldclearpage\clearpage
\let\oldcleardoublepage\cleardoublepage
\renewcommand{\clearpage}{}
\renewcommand{\cleardoublepage}{}

\chapter*{Index}
\addcontentsline{toc}{chapter}{Index}

\printindex

\renewcommand{\clearpage}{\oldclearpage}
\renewcommand{\cleardoublepage}{\oldcleardoublepage}

\clearpage
\thispagestyle{plain}
\markboth{Bibliography}{Bibliography}

\chapter*{Bibliography}\label{bibliography}
\addcontentsline{toc}{chapter}{Bibliography}

\protect\phantomsection\label{refs}
\begin{CSLReferences}{1}{1}
\bibitem[\citeproctext]{ref-JohnHaverlackACEP}
\emph{John {Haverlack} \textbar{} {ACEP}}. n.d.
Https://www.uaf.edu/acep/about/our-team/john-haverlack.php.

\bibitem[\citeproctext]{ref-JohnHaverlackACEP}
\emph{John {Haverlack} \textbar{} {ACEP}}. n.d.
Https://www.uaf.edu/acep/about/our-team/john-haverlack.php.

\end{CSLReferences}

\backmatter
\end{document}
