Files
PrimeTeX/Manual.cls
2025-09-15 23:55:17 -05:00

92 lines
2.1 KiB
TeX

\NeedsTeXFormat{LaTeX2e}
\ProvidesExplClass{PrimeTeX/Manual}{2025-09-12}{1.0}{
A class creating for user manuals and other book-like documents to be
published by Prime Controls.
}
\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}
\DeclareOption{admin}{
\setboolean{isAdminManual}{true}
}
% Option 'darkmode': render as light text on dark background.
\newboolean{isDarkMode}
\setboolean{isDarkMode}{false}
\DeclareOption{darkmode}{
\setboolean{isDarkMode}{true}
}
% Option 'draft': same as base book class, but with bigger overfull boxes.
\newboolean{isDraft}
\setboolean{isDraft}{false}
\DeclareOption{draft}{
\setboolean{isDraft}{true}
\overfullrule = 1in
}
% Option 'admin': turn on admin manual sections.
\newboolean{doRomanNumerals}
\setboolean{doRomanNumerals}{false}
\DeclareOption{roman}{
\setboolean{doRomanNumerals}{true}
}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}}
\ProcessOptions\relax
\ifthenelse{\boolean{isElectronic}}{
\ifthenelse{\boolean{isDraft}}{
\LoadClass[draft,oneside]{book}
}{
\LoadClass[oneside]{book}
}
}{
\ifthenelse{\boolean{isDraft}}{
\LoadClass[draft]{book}
}{
\LoadClass{book}
}
}
\input{PrimeTeX/commonincludes.def}
\NewDocumentCommand{\IfAdminManual}{+m +m}{
\ifthenelse{\boolean{isAdminManual}}{#1}{#2}
}
\NewDocumentCommand{\IfElectronic}{+m +m}{
\ifthenelse{\boolean{isElectronic}}{#1}{#2}
}
\NewDocumentCommand{\rem}{+m}{}
\str_new:N \l_IncludeOnly_chapters_str
% Wrapper for \includeonly.
% If argument is empty, all chapters are included.
% If the argument is not empty, only chapters that are listed are included.
\NewDocumentCommand{\IncludeOnlyChapters}{m}{
\str_set:Nn \l_IncludeOnly_chapters_str {#1}
\str_remove_all:Nn \l_IncludeOnly_chapters_str {~}
\str_if_empty:NF \l_IncludeOnly_chapters_str {
\expanded{\noexpand\includeonly{\l_IncludeOnly_chapters_str}}
}
}