- Add custom header/footer.
- Add option to generate files optimized for either print or electronic reading.
This commit is contained in:
67
Manual.cls
67
Manual.cls
@@ -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]{}
|
||||
@@ -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
33
commonincludes.def
Normal 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}
|
||||
@@ -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
49
packages/Header.sty
Normal 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}
|
||||
}
|
||||
}
|
||||
@@ -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}%
|
||||
}
|
||||
|
||||
|
||||
@@ -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}
|
||||
@@ -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}},
|
||||
}
|
||||
|
||||
@@ -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]{
|
||||
|
||||
Reference in New Issue
Block a user