%
% jebba.sty
%
% Secure, Private, Libre, Open, and Free Commodity Computing
%
% Copyright (C) 2017, Jeff Moe
%
% This document is licensed under the Creative Commons Attribution 4.0
% International Public License (CC BY-SA 4.0) by Jeff Moe.
%
% XXX Since it is a LaTeX .sty file, put under LaTeX license too?
%
% Forked, relicensed by Jeff Moe 2017
% Based on:
% DND 5e LaTeX Style File
% MIT License
% Created by Evan Bergeron
% Modified by Christopher Liu December 2015
% Modified by Yannic Meyer Feb 2016

\ProvidesPackage{jebba}[2017/10/18 v0.0.1 Template for jebba]

%
% Prerequisite Packages
%
% Set a different geometry with \newgeometry
%\usepackage[
%  bindingoffset=15pt, % .2in
%  hmargin=50pt,       % .7in
%  top=40pt,           % .55in
%  bottom=50pt,        % .7in
%  footskip=30pt,      % makes the footer text line up with the graphic
%]{geometry}
%\RequirePackage[table]{xcolor}
\RequirePackage{array}
\RequirePackage{tabularx}
\RequirePackage{tikz}
\RequirePackage{keycommand}
\RequirePackage[most]{tcolorbox}  % used for some boxes
\RequirePackage{enumitem}
%\RequirePackage{microtype}        % Improve ragged2e hyphenation and overfull boxes
\RequirePackage{ragged2e}
\RequirePackage{xparse}


% Load other modules of this package
% XXX Disable ones that break the build
\RequirePackage{lib/jebbacolors}    % color definitions
\RequirePackage{lib/jebbafonts}     % font definitions
\RequirePackage{lib/jebbacomment}   % \commentbox definition
%\RequirePackage{lib/jebbaheader}    % fancy headers and footers
\RequirePackage{lib/jebbamonster}   % \monsterbox definition
\RequirePackage{lib/jebbapaperbox}  % \paperbox definition
\RequirePackage{lib/jebbaquote}     % \quotebox definition
%\RequirePackage{lib/jebbasections}  % section styling
\RequirePackage{lib/jebbaspell}     % \spell definition
\RequirePackage{lib/jebbastrings}   % Load document strings
\RequirePackage{lib/jebbatable}     % \jebbatable definition

%
% Options
%

% 'bg-letter-img','bg-letter-print' and 'bg-none' options
\newtoggle{bool-bg}
\newtoggle{bool-footer-scroll}
\DeclareOption{bg-none} {\togglefalse{bool-bg}\togglefalse{bool-footer-scroll}}
\DeclareOption{bg-print}{\togglefalse{bool-bg}\toggletrue{bool-footer-scroll}}
\DeclareOption{bg-full} {\toggletrue{bool-bg}\toggletrue{bool-footer-scroll}}
\DeclareOption{bg-a4}{\jebba@deprecate{bg-a4}{0.7}[Remove call to this package option.]}
\DeclareOption{bg-letter}{\jebba@deprecate{bg-letter}{0.7}[Remove call to this package option.]}

% Toggle justification (official books are flush left).
\newtoggle{justified}
\DeclareOption{justified}{\toggletrue{justified}}

% Default Settings
\ExecuteOptions{bg-full}
\ProcessOptions\relax

% Set paragraph and line spacing
\linespread{1.1}%
\setlength{\parindent}{1em}
\setlength{\RaggedRightRightskip}{0pt plus 1cm}
\setlength{\RaggedRightParindent}{\parindent}
\hyphenpenalty=1000  % Fewer hyphens

% Set left justification if not justified
\nottoggle{justified}{\RaggedRight}

%
% Style Parameters
%

% Disable space between paragraphs.
\setlength{\parskip}{0pt}

% Font environment
\newenvironment{lmss}{%
  \jebba@deprecate{lmss}{0.7}
  \fontfamily{lmss}\selectfont
  }{}

% Columns setup
\setlength{\columnsep}{25pt}  % .35in

% Customize itemize environment.
\setlist{leftmargin=1em}
\setitemize{noitemsep,topsep=0.5ex}
\renewcommand{\labelitemi}{\raisebox{0.25ex}{\tiny{\( \bullet \)}}}

% Fancy DnD 5e-style hline
\renewcommand{\hline}{
\noindent
  \begin{tikzpicture}[]
    \draw [rulered, fill=rulered] (0, 0) --(0,0.1) -- (\textwidth, 0.08);
  \end{tikzpicture}
}


% Either hilariously, or infuriatingly, the \ifcommandkey
% implementation is buggy. Here is a re-implementation
% from tex.stackexchange.
\begingroup
  \makeatletter
  \catcode`\/=8 %
  \@firstofone
    {
      \endgroup
      \renewcommand{\ifcommandkey}[1]{%
        \csname @\expandafter \expandafter \expandafter
        \expandafter \expandafter \expandafter  \expandafter
        \kcmd@nbk \commandkey {#1}//{first}{second}//oftwo\endcsname
      }
   }