Compare commits

...

6 Commits

Author SHA1 Message Date
b0e05a98eb - Rename PrimeBright color set to PrimeMedium to get rid of oxymoronic PrimeBrightGray color.
- Add higher-contrast gray text color.
- Fix the star argument for \CenterFig.
- Add argument to \BigFig for keyvals passed to \includegraphics.
- Adjust \InlineGraphic offset.
- Adjust paragraph and line spacing.
2025-10-23 16:20:24 -05:00
31797dd3eb Minor improvements. 2025-10-22 16:55:49 -05:00
afcc7b08d0 - Fix misnamed fallback font.
- Create new \directory style.
2025-10-21 15:54:21 -05:00
193b6f4145 - Add reference to underscore package.
- Increase monospace font weight.
- Add command for the most recent footnote number.
2025-10-20 16:19:00 -05:00
acbc1dd669 - Fix \Appendices command.
- Create float for code.
- Adjust fallback font weights.
- Redefine Center environment to eliminate extra space.
- Create TblrEnviron for code.
2025-10-17 16:52:39 -05:00
47f2b67b98 - Update readme.
- Create document-level aliases for \fp_to_dim:n and a couple constants.
- Clean up Fonts.sty.
- Customize bullets in itemize lists.
2025-10-15 15:53:03 -05:00
12 changed files with 204 additions and 101 deletions

View File

@@ -8,7 +8,7 @@ project or include this repository as a Git submodule.
## Classes
- Manual
- Submittal
- Submittal (WIP)
## Packages
@@ -37,6 +37,6 @@ project or include this repository as a Git submodule.
---
![Prime Controls Logo](graphics/prime_controls.png)
![Prime Controls Logo](graphics/prime-controls.png)
Copyright 2025 Prime Controls LP. All rights reserved.

View File

@@ -60,6 +60,8 @@
\RequirePackage{tikz}
\RequirePackage{underscore}
\RequirePackage{wrapstuff}
% Color import and definition

Binary file not shown.

Binary file not shown.

View File

@@ -55,7 +55,7 @@
}
% Lightness ≈ 49%
\definecolorset{HTML}{PrimeBright}{}{%
\definecolorset{HTML}{PrimeMedium}{}{%
Gray, 717588;% #717588
Yellow, d4b725;% #d4b725
Lime, 9ad425;% #9ad425
@@ -133,6 +133,9 @@
\colorlet{linkColor}{PrimeLightBlue}
\colorlet{textDullGrayColor}{PrimeGray}
\colorlet{textGrayColor}{PrimeMediumGray}
% Banded table rows.
\colorlet{bandedRowColor}{PrimeGray}
@@ -160,7 +163,7 @@
\colorlet{codeKeywordColor}{PrimeLightBlue}
\colorlet{codeOperatorColor}{PrimeLightPink}
\colorlet{codeCommentColor}{PrimeLightMint}
\colorlet{codeNumberColor}{textColor}
\colorlet{codeNumberColor}{textColor}%{PrimeLightLime}
\colorlet{codeStringColor}{PrimeLightLime}
} {
% Page and text colors.
@@ -173,6 +176,9 @@
\colorlet{linkColor}{PrimeBlue}
\colorlet{textDullGrayColor}{PrimeLightGray}
\colorlet{textGrayColor}{PrimeGray}
% Banded table rows.
\colorlet{bandedRowColor}{PrimePaleGray}
@@ -182,16 +188,16 @@
% Warning Box colors.
\colorlet{dangerBGColor}{PrimePastelRed}
\colorlet{dangerFGColor}{PrimeBrightRed}
\colorlet{dangerFGColor}{PrimeMediumRed}
\colorlet{warningBGColor}{PrimePastelOrange}
\colorlet{warningFGColor}{PrimeBrightOrange}
\colorlet{warningFGColor}{PrimeMediumOrange}
\colorlet{infoBGColor}{PrimePastelYellow}
\colorlet{infoFGColor}{PrimeBrightYellow}
\colorlet{infoFGColor}{PrimeMediumYellow}
\colorlet{tipBGColor}{PrimePastelMint}
\colorlet{tipFGColor}{PrimeBrightMint}
\colorlet{tipFGColor}{PrimeMediumMint}
% Layout preview frame color.
\colorlet{layoutColor}{PrimePaleBlue}
@@ -200,7 +206,7 @@
\colorlet{codeKeywordColor}{PrimeBlue}
\colorlet{codeOperatorColor}{PrimePink}
\colorlet{codeCommentColor}{PrimeMint}
\colorlet{codeNumberColor}{textColor}
\colorlet{codeNumberColor}{textColor}%{PrimeLime}
\colorlet{codeStringColor}{PrimeLime}
}
@@ -211,7 +217,7 @@
\NewDocumentCommand{\ColorText}{
O{PrimeBlue}
O{PrimeBrightBlue}
O{PrimeMediumBlue}
O{}
+m
}{

View File

@@ -64,8 +64,8 @@
\@@_heading:nnnnn {subparagraph} {#1} {#2} {#3} {#4}
}
\NewDocumentCommand{\Appendices}{}{
\@@_heading:nnnnn {part} {\c_true_bool} {\c_false_bool} {Appendices} {
\NewDocumentCommand{\Appendices}{t^}{
\@@_heading:nnnnn {part} {\c_true_bool} {#1} {Appendices} {
\c_@@_appendices_label_str
}
}

View File

@@ -43,14 +43,8 @@
\str_const:Nn \c_BigFloat_type_str {generic}
\fp_const:Nn \c_BigFloat_offset_fp {2.0}
\ProvideLength{\BigFloatOverhang}[\dim_use:N \c_BigFloat_overhang_dim]
\NewDocumentCommand{\BigFloatOffset}{O{}}{
\str_if_empty:NTF #1 {
\fp_use:N \c_BigFloat_offset_fp
} {
\fp_set:Ne \c_BigFloat_offset_fp {#1}
}
}
\let\BigFloatOverhang\c_BigFloat_overhang_dim
\let\BigFloatOffset\c_BigFloat_offset_fp
\dim_new:N \l_BigFloat_workoverhang_dim
@@ -140,16 +134,17 @@
}{ \group_begin:
\keys_set:nn{CenterFig}{#2}
\str_set:Nn \l_CenterFig_passed_keys_str {#4}
% \bool_if:nT {#1} {
% \str_put_left:Nn \l_CenterFig_passed_keys_str {width=\linewidth,}
% }
\clist_use_default:Nnnn \l_CenterFig_placement_str
{\l_Float_placement_clist}
{\c_Float_placement_clist}
\expanded{\noexpand\begin{figure}[\l_CenterFig_placement_str]}
\begin{MyCaption}{fig:#5}{#6}
\Centering
\bool_if:nTF {#1} {
\includegraphics[keepaspectratio,width=\linewidth,#4]{#3}
}{
\includegraphics[keepaspectratio,#4]{#3}
}
\end{MyCaption}
\end{figure}
\group_end: }
@@ -175,15 +170,18 @@
\dim_new:N \l_BigFig_overhang_dim
\NewDocumentCommand{\BigFig}{
% Key=value options.
% #1: Key=value options.
O{}
% Graphic file.
% #2: Graphic file.
m
% Label.
% #3: Key-value options passed to \includegraphics.
O{width=\linewidth}
% #4: Label.
>{\TrimSpaces}m
% Caption.
% #5: Caption.
m
}{ \group_begin:
}{
\group_begin:
\keys_set:nn{BigFig}{#1}
\fp_compare:nNnTF {\l_BigFig_hres_fp} = {0} {
\dim_set:Nn \l_BigFig_overhang_dim {\l_BigFloat_overhang_dim}
@@ -206,11 +204,13 @@
placement:e = \l_Float_placement_clist,
offset = \l_BigFloat_offset_fp,
]
\begin{MyCaption}{fig:#3}{#4}
\includegraphics[keepaspectratio,width=\linewidth]{#2}
\begin{MyCaption}{fig:#4}{#5}
\Centering
\includegraphics[keepaspectratio,#3]{#2}
\end{MyCaption}
\end{BigFloat}
\group_end: }
\group_end:
}
\keys_define:nn{}{
DoubleBigFig .inherit:n = {BigFloat},
@@ -367,3 +367,33 @@
\end{tblr}
\end{BigFloat}
\group_end: }
\tl_new:N \l_CodeFloat_text_tl
\NewDocumentEnvironment{CodeFloat}{
% #1: Star - Show whitespace if present (not working).
s
% #2: Additional Tabularray inner specifications.
O{}
% #3: Label.
>{\TrimSpaces}m
% #4: Caption.
+m
% #5: Number of indentations.
O{1}
% #6: Body text.
+b
}{
\begin{figure}
\begin{MyCaption}{fig:#3}{#4}
\Centering
\begin{tblrCode}{
colspec = {*{#5}{l}},
hline{1,Z} = {0.6pt},
#2
}
#6
\end{tblrCode}
\end{MyCaption}
\end{figure}
}{}

View File

@@ -23,8 +23,8 @@
luaotfload.add_fallback(
"Roboto", {
"NotoSans:mode=harf;",
"NotoSansSymbols:mode=harf;",
"NotoSans-Medium:mode=harf;",
"NotoSansSymbols-SemiBold:mode=harf;",
"NotoSansSymbols2:mode=harf;",
"NotoEmoji:mode=harf;",
}
@@ -32,8 +32,8 @@
luaotfload.add_fallback(
"RobotoMono", {
"NotoMono:mode=harf;",
"NotoSansSymbols:mode=harf;",
"NotoSansMono-Medium:mode=harf;",
"NotoSansSymbols-SemiBold:mode=harf;",
"NotoSansSymbols2:mode=harf;",
"NotoEmoji:mode=harf;",
}
@@ -41,28 +41,33 @@
luaotfload.add_fallback(
"RobotoSlab", {
"NotoSerif:mode=harf;",
"NotoSansSymbols:mode=harf;",
"NotoSerif-SemiBold:mode=harf;",
"NotoSansSymbols-SemiBold:mode=harf;",
"NotoSansSymbols2:mode=harf;",
"NotoEmoji:mode=harf;",
"NotoEmoji-SemiBold:mode=harf;",
}
)
}
% Main font: Roboto Serif (Light)
\setmainfont{RobotoSerif}[
%Path = {\fontpath/},
Extension = .ttf,
UprightFont = *-Light,
BoldFont = *-SemiBold,
ItalicFont = *-LightItalic,
BoldItalicFont = *-SemiBoldItalic,
SlantFont = RobotoSlab-SemiBold,
BoldSlantFont = RobotoSlab-Black,
RawFeature = {fallback=RobotoSerif},
]
% \setmainfont{Roboto~Serif}[
% Weight = 300,
% Width = 85,
% RawFeature = {fallback=RobotoSerif},
% ]
% % Sans serif font: Roboto (Medium).
\setsansfont{Roboto}[
%Path = {\fontpath/},
Extension = .ttf,
UprightFont = *-Medium,
BoldFont = *-Bold,
@@ -73,18 +78,16 @@
% Monospace font: Roboto Mono
\setmonofont{RobotoMono}[
%Path = {\fontpath/},
Extension = .ttf,
UprightFont = *-Regular,
UprightFont = *-Medium,
BoldFont = *-Bold,
ItalicFont = *-Italic,
ItalicFont = *-MediumItalic,
BoldItalicFont = *-BoldItalic,
RawFeature = {fallback=RobotoMono},
]
% Headings & Titles font: Roboto Slab (Semibold).
\newfontfamily{\sbfamily}{RobotoSlab}[
%Path = {\fontpath/},
Extension = .ttf,
UprightFont = *-SemiBold,
BoldFont = *-Black,
@@ -97,12 +100,17 @@
% \setmathrm{RobotoSerif}
\NewDocumentCommand{\serif}{+m}{{\rmfamily#1}}
\NewDocumentCommand{\sans}{+m}{{\sffamily#1}}
\NewDocumentCommand{\mono}{+m}{{\ttfamily{#1}}}
\NewDocumentCommand{\serif}{+m}{{\rmfamily{}#1}}
\NewDocumentCommand{\sans}{+m}{{\sffamily{}#1}}
\NewDocumentCommand{\mono}{+m}{{\ttfamily{}#1}}
\NewDocumentCommand{\slab}{+m}{{\sbfamily{}#1}}
\NewDocumentCommand{\code}{+m}{\mono{\small{}#1}}
% \AtBeginDocument{
% \fontsize{9pt}{12pt}
% \selectfont
% }
%------------------------------- Symbol Commands -------------------------------
% Line-breaking zero-width space.
@@ -111,6 +119,12 @@
% Line-breaking dot.
\NewDocumentCommand{\bdot}{}{.\zws}
% Bullets for itemize lists.
\renewcommand{\labelitemi}{▪}
\renewcommand{\labelitemii}{⬩}
\renewcommand{\labelitemiii}{‣}
\renewcommand{\labelitemiv}{•}
%--------------------------- MenuKeys Configuration ----------------------------
\newmenucolortheme{autoModeColor}{named}{pageColor}{textColor}{textColor}[pageColor][textColor][textColor]
@@ -123,12 +137,18 @@
\sffamily\color{\usemenucolor{txt}}\CurrentMenuElement
}
\changemenuelement*{hyphenatepaths}{first}{\__MenuKeys_path_style:}
\changemenuelement*{hyphenatepaths}{middle}{\__MenuKeys_path_style:}
\changemenuelement*{hyphenatepaths}{last}{\__MenuKeys_path_style:}
\changemenuelement*{hyphenatepaths}{single}{\__MenuKeys_path_style:}
\newmenustyle{mypaths}[
\group_begin:
\sffamily
\color{\usemenucolor{txt}}
]{}[⏵\zws]{}{}{}[\group_end:]{autoModeColor}
\renewmenumacro{\directory}[/]{hyphenatepaths}
% \changemenuelement*{hyphenatepaths}{first}{\__MenuKeys_path_style:}
% \changemenuelement*{hyphenatepaths}{middle}{\__MenuKeys_path_style:}
% \changemenuelement*{hyphenatepaths}{last}{\__MenuKeys_path_style:}
% \changemenuelement*{hyphenatepaths}{single}{\__MenuKeys_path_style:}
\renewmenumacro{\directory}[/]{mypaths}
\renewmenumacro{\keys}[+]{shadowedroundedkeys}
\renewmenumacro{\menu}[>]{angularmenus}
@@ -147,4 +167,31 @@
\NewDocumentCommand{\TabKey}{}{\keys{\TabString}}
% Suppress warning about obsolete font encodings because we're using Unicode.
\@tw@hyphenatepaths@warnigfalse %[sic]
\@tw@hyphenatepaths@warnigfalse % [sic]
%------------------------- Custom Directory Formatting -------------------------
% The MenuKeys approach is too complicated for directory formatting. This is a
% simpler method.
\tl_new:N \l_@@_dir_tl
\keys_define:nn {Dir} {
font .tl_set:N = \l_Dir_font_tl,
font .initial:n = {\sffamily},
separator .tl_set:N = \l_Dir_separator_tl,
separator .initial:n = {\thinspace⏵\hspace{0.17em}},
}
\NewDocumentCommand{\Dir}{O{} m}{
\group_begin:
\keys_set:nn {Dir} {#1}
\str_set:Nn \l_@@_dir_tl {#2}
\tl_replace_all:Nnn \l_@@_dir_tl {/} {\l_Dir_separator_tl}
\tl_use:N \l_Dir_font_tl
\tl_use:N \l_@@_dir_tl
\group_end:
}

View File

@@ -5,7 +5,7 @@
\dim_const:Nn \c_Graphics_icon_dim {0.25in}
\dim_const:Nn \c_InlineGraphic_offset_dim {-2pt}
\dim_const:Nn \c_InlineGraphic_offset_dim {-0.2em}
\NewDocumentCommand{\IconSize}{}{\c_Graphics_icon_dim}

View File

@@ -12,6 +12,8 @@
\setlength{#1}{#2}%
}
\let\FPToDim\fp_to_dim:n
% Redefine the commands geometry uses to draw the page frame to customize the
% color.
\renewcommand{\Gm@vrule}{\color{layoutColor}\vrule width 0.2pt height\textheight depth\z@}
@@ -72,7 +74,8 @@
% Paragraph formatting.
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 3pt minus 3pt}
\setlength{\parskip}{0.5em plus 0.25em minus 0.25em}
\renewcommand{\baselinestretch}{1.08}
% Float Page Configuration
\renewcommand{\topfraction}{0.9} % max fraction of floats at top
@@ -106,6 +109,8 @@
}
}{}
\RenewDocumentEnvironment{Center}{}{\group_begin:\Centering}{\par\group_end:}
\ExplSyntaxOff
\AtBeginDocument{

View File

@@ -30,35 +30,39 @@
}
% Put a glossary definition in a margin paragraph.
\NewDocumentCommand{\@MarginDef}{O{} m m}{%
\NewDocumentCommand{\@MarginDef}{O{} m m}{
\index{\glsentryname{#2}}% Add a reference to this in the index.
\strong{#3{#2}}% This is the text that appears on the page.
\marginalia[#1]{%
\MarginHyperSetup%
\marginalia[#1]{
\MarginHyperSetup
\strong{\Glsentryname{#2}:}% Create the title of the margin note.
\enspace\glsdesc*{#2}% Create the text of the margin note.
}%
}
}
\NewDocumentCommand{\MarginDef}{O{} m}{%
\@MarginDef[#1]{#2}{\gls}%
\NewDocumentCommand{\MarginDef}{O{} m}{
\@MarginDef[#1]{#2}{\gls}
}
\NewDocumentCommand{\MarginDefCap}{O{} m}{%
\@MarginDef[#1]{#2}{\Gls}%
\NewDocumentCommand{\MarginDefCap}{O{} m}{
\@MarginDef[#1]{#2}{\Gls}
}
\NewDocumentCommand{\MarginDefPl}{O{} m}{%
\@MarginDef[#1]{#2}{\glspl}%
\NewDocumentCommand{\MarginDefPl}{O{} m}{
\@MarginDef[#1]{#2}{\glspl}
}
\NewDocumentCommand{\MarginDefCapPl}{O{} m}{%
\@MarginDef[#1]{#2}{\Glspl}%
\NewDocumentCommand{\MarginDefCapPl}{O{} m}{
\@MarginDef[#1]{#2}{\Glspl}
}
\NewDocumentCommand{\lastfootnotemark}{}{
\footnotemark[\value{footnote}]
}
% Put a footnote in a margin paragraph.
\NewDocumentCommand{\MarginNote}{O{} +m}{%
\footnotemark%
\marginalia[#1]{%
\MarginHyperSetup%
\footnotemark[\value{footnote}]#2%
}%
\NewDocumentCommand{\MarginNote}{O{} >{\TrimSpaces}+m}{
\footnotemark
\marginalia[#1]{
\MarginHyperSetup
\footnotemark[\value{footnote}]~#2
}
}
% Wrapper for \marginalia with some improvements.

View File

@@ -30,6 +30,13 @@
hline{2} = {0.4pt},
}
\NewTblrEnviron{tblrCode}
\SetTblrInner[tblrCode]{
rows = {font=\ttfamily\small},
hlines = {0pt},
colsep = {0pt},
}
\NewTblrTableCommand{\midtitle}[2][pageColor]{
\SetCell[c=#2]{
c, m,
@@ -38,4 +45,6 @@
}
}
\NewTblrTableCommand{\hrf}{\hrulefill}
\NewTblrColumnType{a}[1][]{X[#1,l,m]}