- Add custom header/footer.

- Add option to generate files optimized for either print or electronic reading.
This commit is contained in:
Silcantar
2025-08-17 22:29:41 -05:00
parent 9610ecec59
commit c914902f59
10 changed files with 165 additions and 91 deletions

View File

@@ -1,8 +1,17 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{PrimeTeX/Manual}[2025-07-09]
\ProvidesClass{PrimeTeX/Manual}[2025-08-16]
\RequirePackage{ifthen}
% Option 'electronic': single side printing.
\newboolean{isElectronic}
\setboolean{isElectronic}{false}
\DeclareOption{electronic}{
\setboolean{isElectronic}{true}
}
% Option 'admin': turn on admin manual sections.
\newboolean{isAdminManual}
\setboolean{isAdminManual}{false}
@@ -10,6 +19,7 @@
\setboolean{isAdminManual}{true}
}
% Option 'darkmode': render as light text on dark background.
\newboolean{isDarkMode}
\setboolean{isDarkMode}{false}
@@ -17,7 +27,12 @@
\setboolean{isDarkMode}{true}
}
\DeclareOption{showoverfull}{
% Option 'draft': same as base book class, but with bigger overfull boxes.
\newboolean{isDraft}
\setboolean{isDraft}{false}
\DeclareOption{draft}{
\setboolean{isDraft}{true}
\overfullrule = 1in
}
@@ -25,40 +40,28 @@
\ProcessOptions\relax
\LoadClass{book}
\ifthenelse{\boolean{isDarkMode}}{
\RequirePackage[darkmode]{PrimeTeX/packages/Color}
\ifthenelse{\boolean{isElectronic}}{
\ifthenelse{\boolean{isDraft}}{
\LoadClass[draft,oneside]{book}
}{
\RequirePackage{PrimeTeX/packages/Color}
\LoadClass[oneside]{book}
}
}{
\ifthenelse{\boolean{isDraft}}{
\LoadClass[draft]{book}
}{
\LoadClass{book}
}
}
\RequirePackage{PrimeTeX/packages/CrossRef}
\RequirePackage{PrimeTeX/packages/DocProperties}
\RequirePackage{PrimeTeX/packages/Fonts}
\RequirePackage{PrimeTeX/packages/Glossary}
\RequirePackage{PrimeTeX/packages/Graphics}
\RequirePackage{PrimeTeX/packages/Hyphenation}
\RequirePackage{PrimeTeX/packages/Index}
\RequirePackage{PrimeTeX/packages/Layout}
\RequirePackage{PrimeTeX/packages/Links}
\RequirePackage{PrimeTeX/packages/Marginalia}
\RequirePackage{PrimeTeX/packages/Tables}
\RequirePackage{PrimeTeX/packages/TitlePage}
\RequirePackage{PrimeTeX/packages/Titles}
\input{PrimeTeX/commonincludes.def}
\newcommand{\IfAdminManual}[2]{
\ifthenelse{\boolean{isAdminManual}}{#1}{#2}
}
\newcommand{\IfElectronic}[2]{
\ifthenelse{\boolean{isElectronic}}{#1}{#2}
}
\newcommand{\rem}[1]{}

View File

@@ -20,34 +20,4 @@
\LoadClass{article}
\ifthenelse{\boolean{isDarkMode}}{
\RequirePackage[darkmode]{PrimeTeX/packages/Color}
}{
\RequirePackage{PrimeTeX/packages/Color}
}
\RequirePackage{PrimeTeX/packages/CrossRef}
\RequirePackage{PrimeTeX/packages/DocProperties}
\RequirePackage{PrimeTeX/packages/Fonts}
\RequirePackage{PrimeTeX/packages/Glossary}
\RequirePackage{PrimeTeX/packages/Graphics}
\RequirePackage{PrimeTeX/packages/Hyphenation}
\RequirePackage{PrimeTeX/packages/Index}
\RequirePackage{PrimeTeX/packages/Layout}
\RequirePackage{PrimeTeX/packages/Links}
\RequirePackage{PrimeTeX/packages/Marginalia}
\RequirePackage{PrimeTeX/packages/Tables}
\RequirePackage{PrimeTeX/packages/TitlePage}
\RequirePackage{PrimeTeX/packages/Titles}
\input{PrimeTeX/commonincludes.def}

33
commonincludes.def Normal file
View File

@@ -0,0 +1,33 @@
\ifthenelse{\boolean{isDarkMode}\AND\boolean{isElectronic}}{
\RequirePackage[darkmode]{PrimeTeX/packages/Color}
}{
\RequirePackage{PrimeTeX/packages/Color}
}
\RequirePackage{PrimeTeX/packages/CrossRef}
\RequirePackage{PrimeTeX/packages/DocProperties}
\RequirePackage{PrimeTeX/packages/Fonts}
\RequirePackage{PrimeTeX/packages/Glossary}
\RequirePackage{PrimeTeX/packages/Graphics}
\RequirePackage{PrimeTeX/packages/Header}
\RequirePackage{PrimeTeX/packages/Hyphenation}
\RequirePackage{PrimeTeX/packages/Index}
\RequirePackage{PrimeTeX/packages/Layout}
\RequirePackage{PrimeTeX/packages/Links}
\RequirePackage{PrimeTeX/packages/Marginalia}
\RequirePackage{PrimeTeX/packages/Tables}
\RequirePackage{PrimeTeX/packages/TitlePage}
\RequirePackage{PrimeTeX/packages/Titles}

View File

@@ -19,12 +19,14 @@
\color[rgb]{0.9,0.9,0.9}
\definecolor{pageColor}{rgb}{0.2,0.2,0.2}
\definecolor{textColor}{rgb}{0.9,0.9,0.9}
\definecolor{paleGray}{rgb}{0.3,0.3,0.3}
\definecolor{PrimeBlue}{RGB}{149, 164, 237}
\definecolor{PrimePaleBlue}{RGB}{35, 39, 56}
}{
\colorlet{pageColor}{white}
\colorlet{textColor}{black}
\colorlet{paleGray}{gray!10}
\definecolor{PrimeBlue}{RGB}{25,45,145}
@@ -36,10 +38,10 @@
\RequirePackage{PrimeTeX/packages/Layout}
\newcommand{\boxedcolor}[3][white]{%
\newcommand{\boxedcolor}[1]{%
\providelength[\fboxsep]{\fboxsepdefault}%
\setlength{\fboxsep}{2pt}%
\fcolorbox{black}{#2}{\textcolor{#1}{#3}}%
\fcolorbox{black}{#1}{{\rule{0pt}{1ex}\rule{1ex}{0pt}}}%
\setlength{\fboxsep}{\fboxsepdefault}%
}

49
packages/Header.sty Normal file
View File

@@ -0,0 +1,49 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{PrimeTeX/packages/Header}[2025-08-16]
% Header & Footer Options
\RequirePackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\newlength{\outsideheaderoffset}
\setlength{\outsideheaderoffset}{1.0in}
\newlength{\insideheaderoffset}
\setlength{\insideheaderoffset}{0.5in}
\newcommand{\parttitle}{}
\renewcommand{\chaptermark}[1]{ \markboth{#1}{} }
\fancypagestyle{fancy}{
\ifthenelse{\boolean{isElectronic}}{
\fancyhfoffset[L]{\insideheaderoffset}
\fancyhfoffset[R]{\outsideheaderoffset}
\fancyhead[L]{\partname{} \thepart{}: \parttitle}
\fancyhead[R]{\chaptername{} \thechapter{}: \leftmark}
\fancyfoot[R]{\thepage}
}{
\fancyhfoffset[LE,RO]{\outsideheaderoffset}
\fancyhead[LE]{\partname{} \thepart{}: \parttitle}
\fancyhead[RO]{\chaptername{} \thechapter{}: \leftmark}
\fancyfoot[LE,RO]{\thepage}
}
}
\fancypagestyle{plain}{ %
\fancyhf{} % remove everything
\renewcommand{\headrulewidth}{0pt} % remove lines as well
\renewcommand{\footrulewidth}{0pt}
\ifthenelse{\boolean{isElectronic}}{
\fancyfoot[R]{\thepage}
}{
\fancyfoot[LE,RO]{\thepage}
}
}

View File

@@ -4,8 +4,6 @@
% Suppress warning about \showhyphens being changed.
\let\CheckCommand\providecommand
%\usepackage{ifmtarg}
\providecommand{\providelength}[2][0pt]{%
\ifdeflength{#2}{% It is already defined!
}{% Not defined, so define it!
@@ -16,29 +14,32 @@
\RequirePackage{microtype}
% Page Layout
\RequirePackage[
letterpaper,
twoside,
nohead,
width = 342pt,
height = 576pt,
inner = 108pt,
top = 108pt,
marginparwidth = 126pt,
width = 4.75in, % 342pt,
height = 8.0in, % 576pt,
left = 1.5in, % 108pt,
top = 1.5in, % 108pt,
head = 12pt,
headsep = 24pt,
marginparwidth = 1.75in, % 126pt,
marginparsep = 12pt,
footskip = 36pt,
footskip = 0.5in, % 36pt,
]{geometry}
% Page Layout
\ifthenelse{\boolean{isElectronic}}{
% \geometry{}
}{
\geometry{twoside}
}
\RequirePackage{calc}
\RequirePackage[strict]{changepage}
\newlength{\contentwidth}
\setlength{\contentwidth}{\textwidth + \marginparsep + \marginparwidth}
% Header & Footer Options
\pagestyle{plain}
% Widow & Orphan control.
\RequirePackage[
defaultlines = 4,
@@ -78,11 +79,19 @@
\newcommand{\bigfloat}[4][\bigfloatoverhang]{%
\begin{#2}[#3]%
\ifthenelse{\boolean{isElectronic}}{
\begin{adjustwidth}{-#1+\bigfloatoffset}{-#1-\bigfloatoffset}%
\begin{minipage}{#1 * 2 + \textwidth}%
#4%
\end{minipage}%
\end{adjustwidth}%
}{
\begin{adjustwidth*}{-#1+\bigfloatoffset}{-#1-\bigfloatoffset}%
\begin{minipage}{#1 * 2 + \textwidth}%
#4%
\end{minipage}%
\end{adjustwidth*}%
}
\end{#2}%
}

View File

@@ -1,11 +1,15 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{PrimeTeX/packages/Links}[2025-07-09]
\ProvidesPackage{PrimeTeX/packages/Links}[2025-08-17]
\RequirePackage{PrimeTeX/packages/Color}
% Use Hyperref to automatically create links in the document
\RequirePackage{hyperref}
\hypersetup{colorlinks=true, allcolors=PrimeBlue}
\ifthenelse{\boolean{isElectronic}}{
\hypersetup{colorlinks=true, allcolors=PrimeBlue}
}{
\hypersetup{colorlinks=true, allcolors=textColor}
}
\RequirePackage{hypcap}

View File

@@ -8,13 +8,15 @@
\marginaliasetup{
ysep = {\parskip},
ysep page bottom = {
- 1in
- 1in % Top gutter
+ \paperheight
- \voffset
- \topmargin
- \headheight
- \headsep
- \textheight
},
yshift = {7pt},
yshift = {7pt}, % Just a magic number that lines up margin notes with their reference.
style recto outer = {\raggedright\small\color{marginTextColor}},
style verso outer = {\raggedleft\small\color{marginTextColor}},
}

View File

@@ -3,10 +3,12 @@
\RequirePackage[raggedright]{titlesec}
\renewcommand{\thepart}{\arabic{part}}
\titleformat{\part}[display]{
\normalfont\sbfamily\huge\centering
}{
Part \arabic{part}
\partname{} \thepart
}{20pt}{\Huge}
\titleformat{\chapter}[display]{