diff --git a/PrimeManual.sty b/PrimeManual.sty index f940f63..8696bb4 100644 --- a/PrimeManual.sty +++ b/PrimeManual.sty @@ -1,79 +1,98 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{latex-templates/PrimeManual}[2025-06-24] -% + % Suppress warning about \showhyphens being changed. \let\CheckCommand\providecommand \RequirePackage{microtype} -\DeclareRobustCommand*{\customer}[1]{\gdef\@customer{#1}} -\DeclareRobustCommand*{\customerFull}[1]{\gdef\@customerFull{#1}} -\DeclareRobustCommand*{\projectNumber}[1]{\gdef\@projectNumber{#1}} -\DeclareRobustCommand*{\projectDesc}[1]{\gdef\@projectDesc{#1}} -\DeclareRobustCommand*{\version}[1]{\gdef\@version{#1}} +% Custom document properties. +%#region + \DeclareRobustCommand*{\customer}[1]{\gdef\@customer{#1}} + \DeclareRobustCommand*{\customerFull}[1]{\gdef\@customerFull{#1}} + \DeclareRobustCommand*{\projectNumber}[1]{\gdef\@projectNumber{#1}} + \DeclareRobustCommand*{\projectDesc}[1]{\gdef\@projectDesc{#1}} + \DeclareRobustCommand*{\version}[1]{\gdef\@version{#1}} +%#endregion -\newcommand{\sTitle}{\makeatletter{\@title}} -\newcommand{\sAuthor}{\makeatletter{\@author}} -\newcommand{\sDate}{\makeatletter{\@date}} -\newcommand{\sCustomer}{\makeatletter{\@customer}} -\newcommand{\sCustomerFull}{\makeatletter{\@customerFull}} -\newcommand{\sProjectNumber}{\makeatletter{\@projectNumber}} -\newcommand{\sProjectDesc}{\makeatletter{\@projectDesc}} -\newcommand{\sProjectTitle}{\makeatletter{Project \@projectNumber : \@projectDesc}} -\newcommand{\sVersion}{\makeatletter{\@version}} - -%\RequirePackage[mark]{gitinfo2} +% Macros to insert document properties. +%#region + \newcommand{\sTitle}{\makeatletter{\@title}} + \newcommand{\sAuthor}{\makeatletter{\@author}} + \newcommand{\sDate}{\makeatletter{\@date}} + \newcommand{\sCustomer}{\makeatletter{\@customer}} + \newcommand{\sCustomerFull}{\makeatletter{\@customerFull}} + \newcommand{\sProjectNumber}{\makeatletter{\@projectNumber}} + \newcommand{\sProjectDesc}{\makeatletter{\@projectDesc}} + \newcommand{\sProjectTitle}{\makeatletter{Project \@projectNumber : \@projectDesc}} + \newcommand{\sVersion}{\makeatletter{\@version}} +%#endregion % Specify Fonts -\RequirePackage{fontspec} -% Main font: Roboto Serif -\setmainfont{RobotoSerif}[ - Path = ./fonts/RobotoSerif/, - Extension = .ttf, - UprightFont = *-Regular, - BoldFont = *-Bold, - ItalicFont = *-Italic, - BoldItalicFont = *-BoldItalic, -] -% Headings & Titles font: Roboto Slab -\setsansfont{RobotoSlab}[ - Path = ./fonts/RobotoSlab/, - Extension = .ttf, - UprightFont = *-Regular, - BoldFont = *-Bold, -] -% Monospace font: Roboto Mono -\setmonofont{RobotoMono}[ - Path = ./fonts/RobotoMono/, - Extension = .ttf, - UprightFont = *-Regular, - BoldFont = *-Bold, - ItalicFont = *-Italic, - BoldItalicFont = *-BoldItalic, -] +%#region + \RequirePackage{fontspec} + % Main font: Roboto Serif + \setmainfont{RobotoSerif}[ + Path = ./fonts/RobotoSerif/, + Extension = .ttf, + UprightFont = *-Light, + BoldFont = *-SemiBold, + ItalicFont = *-Italic, + BoldItalicFont = *-SemiBoldItalic, + ] + % Headings & Titles font: Roboto Slab + \setsansfont{RobotoSlab}[ + Path = ./fonts/RobotoSlab/, + Extension = .ttf, + UprightFont = *-SemiBold, + BoldFont = *-Black, + ] + % Monospace font: Roboto Mono + \setmonofont{RobotoMono}[ + Path = ./fonts/RobotoMono/, + Extension = .ttf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = *-Italic, + BoldItalicFont = *-BoldItalic, + ] +%#endregion % Page Layout -\RequirePackage[pass]{geometry} +%#region + \RequirePackage[pass]{geometry} +%#endregion % Title & Heading Options -\RequirePackage[sf,raggedright]{titlesec} +%#region + \RequirePackage[sf,raggedright]{titlesec} +%#endregion % Header & Footer Options -\pagestyle{plain} +%#region + \pagestyle{plain} +%#endregion % Color import and definition -\RequirePackage{xcolor} -\definecolor{PrimeBlue}{RGB}{25,45,145} +%#region + \RequirePackage{xcolor} + \definecolor{PrimeBlue}{RGB}{25,45,145} +%#endregion % Use Hyperref to automatically create links in the document -\RequirePackage{hyperref} -\hypersetup{colorlinks=true, allcolors=PrimeBlue} +%#region + \RequirePackage{hyperref} + \hypersetup{colorlinks=true, allcolors=PrimeBlue} +%#endregion % Graphics package for including images -\RequirePackage{graphicx} -\RequirePackage{calc} +%#region + \RequirePackage{graphicx} + \RequirePackage{calc} +%#endregion % Define custom title page. +%#region \newcommand{\PrimeTitlePage}{ \begin{titlepage} \begin{sffamily} @@ -108,65 +127,95 @@ \end{sffamily} \end{titlepage} } +%#endregion % Paragraph formatting. -\setlength{\parindent}{0pt} -\setlength{\parskip}{2ex plus 0.5ex minus 0.5ex} +%#region + \setlength{\parindent}{0pt} + \setlength{\parskip}{2ex plus 0.5ex minus 0.5ex} +%#endregion % Table formatting. -\renewcommand{\arraystretch}{1.5} -\RequirePackage{csvsimple} -\RequirePackage{longtable} -\RequirePackage{colortbl} -\RequirePackage{booktabs} +%#region + \renewcommand{\arraystretch}{1.5} + \RequirePackage{csvsimple} + \RequirePackage{longtable} + \RequirePackage{colortbl} + \RequirePackage{booktabs} + + \newcommand{\bandedrows}{\rowcolors{2}{white}{gray!10}} +%#endregion % Glossary formatting. -\RequirePackage[nopostdot,toc,sort=standard]{glossaries} +%#region + \RequirePackage[nopostdot,toc,sort=standard]{glossaries} +%#endregion % Index formatting. -\RequirePackage{makeidx} -\RequirePackage{xstring} -\newcommand{\idx}[1]{\StrSubstitute{#1}{!}{ }\index{#1}} +%#region + \RequirePackage{makeidx} + \RequirePackage{xstring} + \newcommand{\idx}[1]{\StrSubstitute{#1}{!}{ }\index{#1}} +%#endregion % Margin Note formatting. -\RequirePackage{marginnote} -% -38pt seems to be just the right vertical adjustment to align margin notes -% with the reference in the text. -\renewcommand{\marginnotevadjust}{-38pt} -\renewcommand{\marginfont}{\small\color{PrimeBlue}} +%#region + \RequirePackage{marginnote} + % -38pt seems to be just the right vertical adjustment to align margin notes + % with the reference in the text. + %\renewcommand{\marginnotevadjust}{-38pt} + \renewcommand{\marginfont}{\small\color{PrimeBlue}} -\newcommand{\margintitle}[1]{\paragraph{\textbf{#1}}} -\newcommand{\margindef}[2][0pt]{% - \index{\glsentryname{#2}}% Add a reference to this in the index. - \textbf{\gls{#2}}% This is the text that appears on the page. - \marginnote{% Create the margin note. - \margintitle{\Glsentryname{#2}:% Create the title of the margin note. - } \glsdesc*{#2}}[#1]% Create the text of the margin note. -} + % Title formatting for margin notes. + \newcommand{\margintitle}[1]{\paragraph{\textbf{#1}}} + + % Put a glossary definition in a margin note. + % Optional parameter is vertical adjustment of the note. + \newcommand{\margindef}[2][0pt]{% + \index{\glsentryname{#2}}% Add a reference to this in the index. + \textbf{\gls{#2}}% This is the text that appears on the page. + \marginnote{% Create the margin note. + \textsf{\textbf{ + \Glsentryname{#2}:% Create the title of the margin note. + }} + \glsdesc*{#2}}[#1]% Create the text of the margin note. + } + + % Put a footnote in a margin note. + % Optional parameter is vertical adjustment of the note. + \newcommand{\mnote}[2][0pt]{\footnotemark\marginnote{\footnotemark[\value{footnote}]#2}[#1]} +%#endregion % Cross references -\newcommand{\refGeneral}[3][]{ - \if\relax\detokenize{#1}\relax % Check if #1 is empty string. - #3{#2}\label{ch:#2} - \else - #3{#2}\label{ch:#1} - \fi -} -\newcommand{\refChapter}[2][]{ - \refGeneral[#1]{#2}{\chapter} -} -\newcommand{\refSection}[2][]{ - \refGeneral[#1]{#2}{\section} -} -\newcommand{\refSubsection}[2][]{ - \refGeneral[#1]{#2}{\subsection} -} -\newcommand{\refSubsubsection}[2][]{ - \refGeneral[#1]{#2}{\subsubsection} -} -\newcommand{\refParagraph}[2][]{ - \refGeneral[#1]{#2}{\paragraph} -} -\newcommand{\refSubparagraph}[2][]{ - \refGeneral[#1]{#2}{\subparagraph} -} \ No newline at end of file +%#region + \newcommand{\sectionRef}[3][]{#1 \ref{#2:#3}: #3} + + \newcommand{\lblGeneral}[4][]{ + \if\relax\detokenize{#1}\relax % Check if #1 is empty string. + #3{#2}\label{#4:#2} + \else + #3{#2}\label{#4:#1} + \fi + } + \newcommand{\lblChapter}[2][]{ + \lblGeneral[#1]{#2}{\chapter}{ch} + } + \newcommand{\lblSection}[2][]{ + \lblGeneral[#1]{#2}{\section}{sec} + } + \newcommand{\lblSubsection}[2][]{ + \lblGeneral[#1]{#2}{\subsection}{subsec} + } + \newcommand{\lblSubsubsection}[2][]{ + \lblGeneral[#1]{#2}{\subsubsection}{sssec} + } + \newcommand{\lblParagraph}[2][]{ + \lblGeneral[#1]{#2}{\paragraph}{par} + } + \newcommand{\lblSubparagraph}[2][]{ + \lblGeneral[#1]{#2}{\subparagraph}{subpar} + } + \newcommand{\lblTable}[2][]{ + \textbf{\lblGeneral[#1]{#2}{\caption}{tbl}} + } +%#endregion \ No newline at end of file