From 029916b8d6abae2204df89ef48ee1052b54d2e32 Mon Sep 17 00:00:00 2001 From: Joshua Lucas Date: Fri, 12 Sep 2025 16:15:29 -0500 Subject: [PATCH] - Debugging. - Move all \RequirePackages to commonincludes.def. --- Manual.cls | 19 +++++++++-- commonincludes.def | 68 +++++++++++++++++++++++++++++++++++--- packages/Boxout.sty | 34 ++++++++++++------- packages/Caption.sty | 61 ++++++++++++++++------------------ packages/Color.sty | 5 --- packages/CrossRef.sty | 49 --------------------------- packages/DocProperties.sty | 3 -- packages/Floats.sty | 12 +++---- packages/Fonts.sty | 7 ---- packages/Glossary.sty | 10 ------ packages/Graphics.sty | 23 +++++-------- packages/Header.sty | 15 ++------- packages/Index.sty | 5 +-- packages/Layout.sty | 45 +++++++++++-------------- packages/Links.sty | 12 +++---- packages/Marginalia.sty | 64 ++++++++++++++++++----------------- packages/Tables.sty | 12 +++---- packages/TitlePage.sty | 6 ++-- packages/Titles.sty | 2 -- 19 files changed, 209 insertions(+), 243 deletions(-) delete mode 100644 packages/CrossRef.sty delete mode 100644 packages/Glossary.sty diff --git a/Manual.cls b/Manual.cls index 686fd3f..d5294ae 100644 --- a/Manual.cls +++ b/Manual.cls @@ -1,5 +1,8 @@ \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{PrimeTeX/Manual}[2025-08-16] +\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} @@ -72,4 +75,16 @@ \ifthenelse{\boolean{isElectronic}}{#1}{#2} } -\NewDocumentCommand{\rem}{+m}{} \ No newline at end of file +\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_if_empty:NF \l_IncludeOnly_chapters_str { + \expanded{\noexpand\includeonly{\l_IncludeOnly_chapters_str}} + } +} diff --git a/commonincludes.def b/commonincludes.def index 261f266..9fd9373 100644 --- a/commonincludes.def +++ b/commonincludes.def @@ -1,10 +1,72 @@ \ProvidesFile{commonincludes.def}[2025-09-02 v1.0] -% Load graphicx first because the menukeys package (in Fonts.sty) causes a conflict. -% Graphics package for including images +\RequirePackage{amssymb} + +\RequirePackage{calc} + +\RequirePackage[strict]{changepage} + +\RequirePackage{csvsimple-l3} + +\RequirePackage[en-US]{datetime2} + +% Header & Footer Options +\RequirePackage{fancyhdr} + +\RequirePackage{float} + +% Specify Fonts +\RequirePackage{fontspec} + +% Page Layout +\RequirePackage{geometry} + \RequirePackage[final]{graphicx} + \RequirePackage{graphbox} +% Glossary formatting. +\RequirePackage[ + xindy, + nopostdot, + toc, + sort=standard, +]{glossaries} + +\RequirePackage{hyperref} + +%\RequirePackage{hypcap} + +\RequirePackage{ifthen} + +\RequirePackage{lua-widow-control} + +% Index formatting. +\RequirePackage{makeidx} + +\RequirePackage{marginalia} + +\RequirePackage[os=win]{menukeys} + +\RequirePackage{microtype} + +% Allow hyphenation in narrow margin paragraphs. +\RequirePackage{ragged2e} + +% Table formatting. +\RequirePackage{tabularray} + +\RequirePackage[raggedright]{titlesec} + +\RequirePackage{readarray} + +\RequirePackage{wrapstuff} + +% Color import and definition +\RequirePackage{xcolor} + +\RequirePackage{xstring} + % A lot of other packages require Layout, so load it first. \RequirePackage{PrimeTeX/packages/Layout} @@ -20,8 +82,6 @@ \RequirePackage{PrimeTeX/packages/Fonts} -\RequirePackage{PrimeTeX/packages/Glossary} - \RequirePackage{PrimeTeX/packages/Graphics} \RequirePackage{PrimeTeX/packages/Header} diff --git a/packages/Boxout.sty b/packages/Boxout.sty index 18c6f72..0610029 100644 --- a/packages/Boxout.sty +++ b/packages/Boxout.sty @@ -3,11 +3,6 @@ Commands for typesetting boxouts. } -\RequirePackage{PrimeTeX/packages/Layout} -\RequirePackage{PrimeTeX/packages/Color} -\RequirePackage{PrimeTeX/packages/Tables} -\RequirePackage{calc} - \ProvideLength{\boxoutpadding}[1em] \ProvideLength{\boxoutrule}[1pt] @@ -32,21 +27,22 @@ \keys_define:nn {Boxout} { innerspec .tl_set_e:N= \l_Boxout_innerspec_tl, innerspec .initial:e = {\c_Boxout_innerspec_tl}, - innerspec .default:e = {\c_Boxout_innerspec_tl}, warning .bool_set:N = \l_Boxout_warning_bool, warning .initial:e = {false}, - warning .default:e = {true}, + + format .cs_set:Np = \__Boxout_format:, + format .initial:n = {\justifying}, } \NewDocumentEnvironment{Boxout}{ % #1: Key-value options. O{} - % #2: Label, passed to @boxout argument #1. + % #2: Label. >{\TrimSpaces}m % #3: Caption. O{} - % #4: Body, passed to @boxout. + % #4: Body. +b }{ \group_begin: \keys_set:nn{Boxout}{#1} @@ -54,17 +50,20 @@ \colorlet{boxoutBG}{warningBG} \colorlet{boxoutFG}{warningFG} } + \color{text} \label{box:#2} \tl_if_empty:nTF {#3} { \expanded{\noexpand\begin{tblrBoxout}{\l_Boxout_innerspec_tl}} \setlength{\parskip}{\medskipamount} - #4\\ + \setlength{\parindent}{0pt} + \__Boxout_format:\ignorespaces#4\\ \end{tblrBoxout} }{ \expanded{\noexpand\begin{tblrBoxout}{\l_Boxout_innerspec_tl}} \SetCell{halign=c, font={\sbfamily\bfseries}}{#3}\\ \setlength{\parskip}{\medskipamount} - #4\\ + \setlength{\parindent}{0pt} + \__Boxout_format:\ignorespaces#4\\ \end{tblrBoxout} } \group_end: }{} @@ -140,16 +139,21 @@ \group_end: }{} \dim_const:Nn \c_WrapBoxout_width_dim {3in} +\dim_const:Nn \c_WrapBoxout_justifywidth_dim {18em} \keys_define:nn{}{ WrapBoxout .inherit:n = {WrapFig, Boxout}, } \keys_define:nn{WrapBoxout}{ + justifywidth.dim_set:N = \l_WrapBoxout_justifywidth_dim, + justifywidth.initial:e = {\c_WrapBoxout_justifywidth_dim}, + width .dim_set:N = \l_WrapBoxout_width_dim, width .initial:e = {\c_WrapBoxout_width_dim}, - width .default:e = {\c_WrapBoxout_width_dim}, } +\cs_new:Npn \__WrapBoxout_format: {} + \NewDocumentEnvironment{WrapBoxout}{ % #1: Key-value options. O{} @@ -162,6 +166,11 @@ }{ \group_begin: \keys_set:nn{WrapBoxout}{#1} \__WrapFig_process_options: + \dim_compare:nNnTF {\l_WrapBoxout_width_dim} > {\l_WrapBoxout_justifywidth_dim} { + \cs_set:Npn \__WrapBoxout_format: {\justifying} + } { + \cs_set:Npn \__WrapBoxout_format: {\l_WrapFig_format_tl} + } % \message{ % WrapBoxout:~ % placement:~\l_WrapFig_placement_str,~ @@ -176,6 +185,7 @@ \begin{Boxout}[ innerspec:e = {\l_Boxout_innerspec_tl,columns={\dim_use:N \l_WrapBoxout_width_dim}}, warning:e = \bool_to_str:N \l_Boxout_warning_bool, + format = {\__WrapBoxout_format:} ]{#2}[#3] #4 \end{Boxout} diff --git a/packages/Caption.sty b/packages/Caption.sty index a69c1e3..2940f8b 100644 --- a/packages/Caption.sty +++ b/packages/Caption.sty @@ -3,21 +3,6 @@ Custom Caption commands. } -% \RequirePackage[ -% hypcap=true, -% ]{caption} -% \captionsetup{ -% justification = Centering, -% font = { -% small, -% color=caption, -% }, -% } - -% Define a justification style that is ragged on the side toward the outside of -% the page. I. e. RaggedRight on -%\RequirePackage{changepage} - \NewDocumentCommand{\RaggedOutside}{}{ \ifthenelse{\boolean{isElectronic}}{% \RaggedRight% @@ -31,7 +16,7 @@ }% } -\cs_new:Nn \__MyCaption_format_default: {\centering\small\color{caption}} +\cs_new_protected:Nn \__MyCaption_format_default: {\Centering\small\color{caption}} \keys_define:nn {MyCaption} { before .bool_set:N = \l_MyCaption_before_bool, @@ -40,9 +25,10 @@ figure .code:n = {\str_set:Nn \l_MyCaption_type_str {figure}}, format .cs_set_protected:Np = \__MyCaption_format:, - format .initial:n = {},%{\__MyCaption_format_default:}, + format .initial:n = {}, + format .default:n = {}, - skip .tl_set:N = \l_MyCaption_skip_tl, + skip .dim_set:N = \l_MyCaption_skip_dim, skip .initial:n = {\medskipamount}, table .code:n = { @@ -66,8 +52,11 @@ >{\TrimSpaces}m % #3: Caption m + % #4: Body + +b }{ \group_begin: + \keys_set:nn {MyCaption} {format} \keys_set:nn {MyCaption} {#1} \str_case:en {\l_MyCaption_type_str} { {figure} { @@ -76,7 +65,9 @@ \str_set:Ne \l_MyCaption_number_str { \arabic{chapter}.\arabic{figure} } - \addcontentsline{lof}{figure}{\protect\numberline{\l_MyCaption_number_str}\protect\ignorespaces~#3} + \addcontentsline{lof}{figure}{ + \protect\numberline{\l_MyCaption_number_str}\protect\ignorespaces~#3 + } } {table} { \refstepcounter{table} @@ -84,24 +75,28 @@ \str_set:Ne \l_MyCaption_number_str { \arabic{chapter}.\arabic{table} } - \addcontentsline{lot}{table}{\protect\numberline{\l_MyCaption_number_str}\protect\ignorespaces~#3} + \addcontentsline{lot}{table}{ + \protect\numberline{\l_MyCaption_number_str}\protect\ignorespaces~#3 + } } } - - \bool_if:NT \l_MyCaption_before_bool { - \__MyCaption_insert_caption:nn {#2} {#3} - } -}{ \bool_if:NF \l_MyCaption_before_bool { - \__MyCaption_insert_caption:nn {#2} {#3} + \label{#2} + #4 + } + \setlength{\parskip}{\l_MyCaption_skip_dim} + \par + \__MyCaption_format_default: \__MyCaption_format: + \l_MyCaption_label_str{}~\l_MyCaption_number_str :~#3 + \par + \bool_if:NT \l_MyCaption_before_bool { + \label{#2} + #4 } \group_end: -} +}{} -\cs_new:Nn \__MyCaption_insert_caption:nn { - \setlength{\parskip}{\l_MyCaption_skip_tl}\par - \__MyCaption_format_default: \__MyCaption_format: - \l_MyCaption_label_str{}~\l_MyCaption_number_str :~#2 - \label{#1} - \par +\cs_new:Nn \__MyCaption_insert_caption:n { + \protect\__MyCaption_format_default: \protect\__MyCaption_format: + \l_MyCaption_label_str{}~\l_MyCaption_number_str :~#1 } \ No newline at end of file diff --git a/packages/Color.sty b/packages/Color.sty index 1544ee2..d2649c6 100644 --- a/packages/Color.sty +++ b/packages/Color.sty @@ -1,11 +1,6 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{PrimeTeX/packages/Color}[2025-07-09] -\RequirePackage{ifthen} - -% Color import and definition -\RequirePackage{xcolor} - % Split Complementary Color Scheme % Primary Color: Blue % Secondary Colors: Orange, Teal diff --git a/packages/CrossRef.sty b/packages/CrossRef.sty deleted file mode 100644 index 38e0fb8..0000000 --- a/packages/CrossRef.sty +++ /dev/null @@ -1,49 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{PrimeTeX/packages/CrossRef}[2025-07-09] - -% Cross references - \NewDocumentCommand{\refPart}{O{Part~} m}{#1\ref{pt:#2}} - \NewDocumentCommand{\refChapter}{O{Chapter~} m}{#1\ref{ch:#2}} - \NewDocumentCommand{\refAppendix}{O{Appendix~} m}{#1\ref{ch:#2}} - \NewDocumentCommand{\refSection}{O{Section~} m}{#1\ref{sec:#2}} - \NewDocumentCommand{\refSubsection}{O{Subsection~} m}{#1\ref{subsec:#2}} - \NewDocumentCommand{\refSubsubsection}{O{Sub-subsection~} m}{#1\ref{sssec:#2}} - \NewDocumentCommand{\refParagraph}{O{Paragraph} m}{#1\ref{par:#2}} - \NewDocumentCommand{\refSubparagraph}{O{Subparagraph~} m}{#1\ref{subpar:#2}} - \NewDocumentCommand{\refTable}{O{Table~} m}{#1\ref{tbl:#2}} - \NewDocumentCommand{\refFigure}{O{Figure~} m}{#1\ref{fig:#2}} - - \NewDocumentCommand{\lblGeneral}{>{\TrimSpaces}O{} >{\TrimSpaces}m m >{\TrimSpaces}m}{ - \if\relax\detokenize{#1}\relax % Check if #1 is empty string. - #3{#2}\label{#4:#2} - \else - #3{#2}\label{#4:#1} - \fi - } - \NewDocumentCommand{\lblPart}{O{} m}{ - \lblGeneral[#1]{#2}{\part}{pt} - } - \NewDocumentCommand{\lblChapter}{O{} m}{ - \lblGeneral[#1]{#2}{\chapter}{ch} - } - \NewDocumentCommand{\lblSection}{O{} m}{ - \lblGeneral[#1]{#2}{\section}{sec} - } - \NewDocumentCommand{\lblSubsection}{O{} m}{ - \lblGeneral[#1]{#2}{\subsection}{subsec} - } - \NewDocumentCommand{\lblSubsubsection}{O{} m}{ - \lblGeneral[#1]{#2}{\subsubsection}{sssec} - } - \NewDocumentCommand{\lblParagraph}{O{} m}{ - \lblGeneral[#1]{#2}{\paragraph}{par} - } - \NewDocumentCommand{\lblSubparagraph}{O{} m}{ - \lblGeneral[#1]{#2}{\subparagraph}{subpar} - } - \NewDocumentCommand{\lblTable}{O{} m}{ - \lblGeneral[#1]{#2}{\caption}{tbl} - } - \NewDocumentCommand{\lblFigure}{O{} m}{ - \lblGeneral[#1]{#2}{\caption}{fig} - } \ No newline at end of file diff --git a/packages/DocProperties.sty b/packages/DocProperties.sty index 0e4d70a..2325362 100644 --- a/packages/DocProperties.sty +++ b/packages/DocProperties.sty @@ -1,8 +1,6 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{PrimeTeX/packages/DocProperties}[2025-07-09] -\RequirePackage[en-US]{datetime2} - \DTMnewdatestyle{longdate}{% \renewcommand{\DTMdisplaydate}[4]{\number##3\ \DTMenglishmonthname{##2}\ \number##1}% \renewcommand{\DTMDisplaydate}{\DTMdisplaydate}% @@ -14,7 +12,6 @@ \DTMusedate{saveDate} } -\RequirePackage{readarray} \readarraysepchar{,} \NewDocumentCommand{\GetRevision}{m}{% diff --git a/packages/Floats.sty b/packages/Floats.sty index 6e2e63c..549f162 100644 --- a/packages/Floats.sty +++ b/packages/Floats.sty @@ -4,10 +4,6 @@ Custom Float Environments. } -\RequirePackage{PrimeTeX/packages/Layout} - -\RequirePackage{float} - \floatstyle{plain} \newfloat{generic}{htpb}{lgf} \floatplacement{figure}{htpb} @@ -119,25 +115,25 @@ } \NewDocumentCommand{\CenterFig}{ - % Key-value options passed to \includegraphics. - O{} % Key-value options. O{} % Graphic file. m + % Key-value options passed to \includegraphics. + O{} % Label. >{\TrimSpaces}m % Caption. m }{ \group_begin: - \keys_set:nn{CenterFig}{#2} + \keys_set:nn{CenterFig}{#1} \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:#4}{#5} \Centering - \includegraphics[keepaspectratio,#1]{#3} + \includegraphics[keepaspectratio,#3]{#2} \end{MyCaption} \end{figure} \group_end: } diff --git a/packages/Fonts.sty b/packages/Fonts.sty index 33907a2..0503bf8 100644 --- a/packages/Fonts.sty +++ b/packages/Fonts.sty @@ -1,9 +1,6 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{PrimeTeX/packages/Fonts}[2025-06-24] -% Specify Fonts -\RequirePackage{fontspec} - \NewDocumentCommand{\fontpath}{}{PrimeTeX/fonts} % Main font: Roboto Serif @@ -57,8 +54,6 @@ ItalicFont = NotoEmoji/NotoEmoji-Light, ] -\RequirePackage{amssymb} - \NewDocumentCommand{\serif}{m}{\textrm{#1}} \NewDocumentCommand{\sans}{m}{\textsf{#1}} \NewDocumentCommand{\mono}{m}{\texttt{#1}} @@ -66,8 +61,6 @@ \NewDocumentCommand{\code}{m}{\mono{\small{}#1}} \NewDocumentCommand{\emoji}{m}{{\emfamily{}#1}} -\RequirePackage[os=win]{menukeys} - \renewmenumacro{\directory}[/]{hyphenatepaths} \renewmenumacro{\keys}[+]{shadowedangularkeys} \renewmenumacro{\menu}[>]{angularmenus} diff --git a/packages/Glossary.sty b/packages/Glossary.sty deleted file mode 100644 index 6793971..0000000 --- a/packages/Glossary.sty +++ /dev/null @@ -1,10 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{PrimeTeX/packages/Glossary}[2025-07-09] - -% Glossary formatting. -\RequirePackage[ - xindy, - nopostdot, - toc, - sort=standard, -]{glossaries} \ No newline at end of file diff --git a/packages/Graphics.sty b/packages/Graphics.sty index de43bf9..654973b 100644 --- a/packages/Graphics.sty +++ b/packages/Graphics.sty @@ -3,12 +3,6 @@ Custom non-floating Graphics commands. } -\RequirePackage{PrimeTeX/packages/Layout} - -\RequirePackage{calc} - -\RequirePackage{wrapstuff} - \dim_const:Nn \c_Graphics_icon_dim {0.25in} \NewDocumentCommand{\IconSize}{}{\c_Graphics_icon_dim} @@ -16,11 +10,9 @@ \keys_define:nn{InlineGraphic}{ height .dim_set:N = \l_InlineGraphic_height_dim, height .initial:n = {12pt}, -% height .default:n = {12pt}, offset .dim_set:N = \l_InlineGraphic_offset_dim, offset .initial:n = {-2pt}, -% offset .default:n = {-2pt}, } \NewDocumentCommand{\InlineGraphic}{ @@ -28,20 +20,20 @@ O{} % Graphic file. m -}{% +}{ \keys_set:nn{InlineGraphic}{#1} \raisebox{\l_InlineGraphic_offset_dim}{ - \includegraphics[% - keepaspectratio,height=12pt%\l_InlineGraphic_height_dim% + \includegraphics[ + keepaspectratio,height=12pt ]{#2} - }% + } } \dim_const:Nn \c_ig_width_dim {0.5in} % Shorthand command for \includegraphics. -\NewDocumentCommand{\ig}{O{width=\c_ig_width_dim} m}{% - \includegraphics[keepaspectratio,#1]{#2}% +\NewDocumentCommand{\ig}{O{width=\c_ig_width_dim} m}{ + \includegraphics[keepaspectratio,#1]{#2} } \dim_const:Nn \c_WrapFig_hoffset_dim {0in} @@ -95,7 +87,8 @@ WrapFig:~#4,~ placement:~\l_WrapFig_placement_str,~ hoffset:~\dim_use:N \l_WrapFig_hoffset_dim, - passed_keys:~\l_WrapFig_passed_keys_str} + passed_keys:~\l_WrapFig_passed_keys_str + } \expanded{\noexpand\begin{wrapstuff}[ \l_WrapFig_placement_str, hoffset = {\dim_use:N \l_WrapFig_hoffset_dim}, diff --git a/packages/Header.sty b/packages/Header.sty index 02f02ff..db868af 100644 --- a/packages/Header.sty +++ b/packages/Header.sty @@ -3,20 +3,9 @@ Customize header and footer layout and contents. } -\RequirePackage{PrimeTeX/packages/Layout} +\ProvideLength{\HeaderInsideOffset}[\BigFloatOverhang] +\ProvideLength{\HeaderOutsideOffset}[\fp_to_dim:n{\BigFloatOverhang * \BigFloatOffset}] -% \dim_new:N \g_header_insideoffset_dim -% \dim_set:Nn \g_header_insideoffset_dim {\c_BigFloat_overhang_dim} -% \dim_new:N \g_header_outsideoffset_dim -% \dim_set:Nn \g_header_outsideoffset_dim { -% \fp_to_dim:n {\c_BigFloat_overhang_dim * \c_BigFloat_offset_fp} -% } - -\ProvideLength{\HeaderInsideOffset}[0.54in]%[\BigFloatOverhang] -\ProvideLength{\HeaderOutsideOffset}[1.08in]%[\BigFloatOverhang * \real{\BigFloatOffset}] - -% Header & Footer Options -\RequirePackage{fancyhdr} \pagestyle{fancy} % Clear all header & footer formatting. diff --git a/packages/Index.sty b/packages/Index.sty index 8864aaf..de700c1 100644 --- a/packages/Index.sty +++ b/packages/Index.sty @@ -1,7 +1,4 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{PrimeTeX/packages/Index}[2025-07-09] -% Index formatting. - \RequirePackage{makeidx} - \RequirePackage{xstring} - \NewDocumentCommand{\idx}{m}{\StrSubstitute{#1}{!}{ }\index{#1}} +\NewDocumentCommand{\idx}{m}{\StrSubstitute{#1}{!}{ }\index{#1}} \ No newline at end of file diff --git a/packages/Layout.sty b/packages/Layout.sty index 3979f3d..92e8064 100644 --- a/packages/Layout.sty +++ b/packages/Layout.sty @@ -12,22 +12,6 @@ \setlength{#1}{#2}% } -\RequirePackage{microtype} - -% Page Layout -\RequirePackage[ - letterpaper, - width = 4.75in, % 342pt, - height = 8.0in, % 576pt, - left = 1.5in, % 108pt, - top = 1.5in, % 108pt, - head = 12pt, % 1/6in - headsep = 24pt, % 1/3in - marginparwidth = 1.75in, % 126pt, - marginparsep = 12pt, % 1/6in - footskip = 0.5in, % 36pt, -]{geometry} - % Redefine the commands geometry uses to draw the page frame to customize the % color. \renewcommand{\Gm@vrule}{\color{layout}\vrule width 0.2pt height\textheight depth\z@} @@ -37,8 +21,6 @@ % Suppress "Underfull \hbox" infos. \hbadness=10000 -\RequirePackage{ifthen} - \ifthenelse{\boolean{isDraft}}{ \geometry{showframe} \hfuzz = 0.5pt @@ -49,19 +31,27 @@ \vfuzz = 8.0pt } +\geometry{ + letterpaper, + width = 4.75in, % 342pt, + height = 8.0in, % 576pt, + left = 1.5in, % 108pt, + top = 1.5in, % 108pt, + head = 12pt, % 1/6in + headsep = 24pt, % 1/3in + marginparwidth = 1.75in, % 126pt, + marginparsep = 12pt, % 1/6in + footskip = 0.5in, % 36pt, +} + \ifthenelse{\boolean{isElectronic}}{ % \geometry{} }{ \geometry{twoside} } -\RequirePackage{calc} -\RequirePackage[strict]{changepage} - -\ProvideLength{\marparwidth}[\marginparsep + \marginparwidth] -\ProvideLength{\contentwidth}[\textwidth + \marparwidth] - -\RequirePackage[ +% Lua-Widow-Control Setup. +\lwcsetup{ %debug, balanced, emergencystretch = 3em, @@ -70,7 +60,10 @@ orphanpenalty = 1000, brokenpenalty = 10000, nobreak = keep, -]{lua-widow-control} +} + +\ProvideLength{\marparwidth}[\marginparsep + \marginparwidth] +\ProvideLength{\contentwidth}[\textwidth + \marparwidth] \ifthenelse{\boolean{isDraft}}{ \lwcsetup{showcolours=true,} diff --git a/packages/Links.sty b/packages/Links.sty index dcb97d8..b8b05e0 100644 --- a/packages/Links.sty +++ b/packages/Links.sty @@ -1,18 +1,16 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{PrimeTeX/packages/Links}[2025-08-17] -\RequirePackage{PrimeTeX/packages/Color} - % Use Hyperref to automatically create links in the document -\RequirePackage[ - final, +\hypersetup{ + final, colorlinks = true, pdfpagemode = UseOutlines, pdfdisplaydoctitle = true, bookmarksnumbered = true, bookmarksopen = true, bookmarksopenlevel = 2, -]{hyperref} +} \ifthenelse{\boolean{isElectronic}}{ \hypersetup{ @@ -30,6 +28,4 @@ \RenewDocumentCommand{\sectionautorefname}{}{Section} \RenewDocumentCommand{\subsectionautorefname}{}{Subsection} \RenewDocumentCommand{\subsubsectionautorefname}{}{Sub-subsection} -\RenewDocumentCommand{\paragraphautorefname}{}{Paragraph} - -\RequirePackage{hypcap} \ No newline at end of file +\RenewDocumentCommand{\paragraphautorefname}{}{Paragraph} \ No newline at end of file diff --git a/packages/Marginalia.sty b/packages/Marginalia.sty index d3481e0..4db8c2d 100644 --- a/packages/Marginalia.sty +++ b/packages/Marginalia.sty @@ -1,13 +1,13 @@ \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{PrimeTeX/packages/Marginalia}[2025-07-09] +\ProvidesExplPackage{PrimeTeX/packages/Marginalia}{2025-09-12}{1.0}{ + Marginalia commands. +} -% Allow hyphenation in narrow margin paragraphs. -\RequirePackage{ragged2e} - -\RequirePackage{marginalia} \marginaliasetup{ + width = {\marginparwidth}, + xsep = {\marginparsep}, ysep = {\parskip}, - ysep page bottom = { + ysep~page~bottom = { - 1in % Top gutter + \paperheight - \voffset @@ -17,8 +17,8 @@ - \textheight }, yshift = {7pt}, % Just a magic number that lines up margin notes with their reference. - style recto outer = {\RaggedRight\small\color{marginText}}, - style verso outer = {\RaggedLeft\small\color{marginText}}, + style~recto~outer = {\RaggedRight\small\color{marginText}}, + style~verso~outer = {\RaggedLeft\small\color{marginText}}, } \NewDocumentCommand{\MarginHyperSetup}{}{ @@ -30,30 +30,30 @@ } % Put a glossary definition in a margin paragraph. -\NewDocumentCommand{\mdef}{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% - \strong{\Glsentryname{#2}:} % Create the title of the margin note. - \glsdesc*{#2}% Create the text of the margin note. + \strong{\Glsentryname{#2}:}% Create the title of the margin note. + \enspace\glsdesc*{#2}% Create the text of the margin note. }% } -\NewDocumentCommand{\margindef}{O{} m}{% - \mdef[#1]{#2}{\gls}% +\NewDocumentCommand{\MarginDef}{O{} m}{% + \@MarginDef[#1]{#2}{\gls}% } -\NewDocumentCommand{\Margindef}{O{} m}{% - \mdef[#1]{#2}{\Gls}% +\NewDocumentCommand{\MarginDefCap}{O{} m}{% + \@MarginDef[#1]{#2}{\Gls}% } -\NewDocumentCommand{\margindefpl}{O{} m}{% - \mdef[#1]{#2}{\glspl}% +\NewDocumentCommand{\MarginDefPl}{O{} m}{% + \@MarginDef[#1]{#2}{\glspl}% } -\NewDocumentCommand{\Margindefpl}{O{} m}{% - \mdef[#1]{#2}{\Glspl}% +\NewDocumentCommand{\MarginDefCapPl}{O{} m}{% + \@MarginDef[#1]{#2}{\Glspl}% } % Put a footnote in a margin paragraph. -\NewDocumentCommand{\mnote}{O{} +m}{% +\NewDocumentCommand{\MarginNote}{O{} +m}{% \footnotemark% \marginalia[#1]{% \MarginHyperSetup% @@ -61,7 +61,7 @@ }% } -\NewDocumentCommand{\marginfig}{ +\NewDocumentCommand{\MarginFig}{ % #1: Options passed to \includegraphics. O{} % #2: Graphic file name. @@ -69,16 +69,18 @@ % #3: Label. >{\TrimSpaces}m +m -}{% +}{ % This strut ensures that the margin figure is counted as part of the % following paragraph and is vertically aligned with it. - \strut% - \marginalia{% - \MarginHyperSetup% - \begin{MyCaption}[ - format={\RaggedOutside\small\color{caption}} - ]{fig:#3}{#4} - \Centering\includegraphics[keepaspectratio,#1]{#2}% - \end{MyCaption} - }% + %\strut {\setlength{\parskip}{0pt} \par} \strut + \mbox{ + \marginalia{ + \MarginHyperSetup + \begin{MyCaption}[ + format={\RaggedOutside\small\color{caption}} + ]{fig:#3}{#4} + \Centering\includegraphics[keepaspectratio,#1]{#2} + \end{MyCaption} + } + } } \ No newline at end of file diff --git a/packages/Tables.sty b/packages/Tables.sty index b7ed9f0..185639b 100644 --- a/packages/Tables.sty +++ b/packages/Tables.sty @@ -1,8 +1,10 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{PrimeTeX/packages/Tables}[2025-07-09] -% Table formatting. -\RequirePackage{tabularray} +\RenewDocumentCommand\TblrAlignBoth{}{\justifying} +\RenewDocumentCommand\TblrAlignLeft{}{\RaggedRight} +\RenewDocumentCommand\TblrAlignCenter{}{\Centering} +\RenewDocumentCommand\TblrAlignRight{}{\RaggedLeft} \UseTblrLibrary{siunitx} @@ -13,8 +15,6 @@ hline{2} = {0.4pt}, } -%\renewcommand{\TblrOverlap}[1]{#1} - \DeclareTblrTemplate{remark-tag}{default}{ \strong{\InsertTblrRemarkTag} } @@ -34,6 +34,4 @@ bg = #1, font = \bfseries, } -} - -\RequirePackage{csvsimple-l3} \ No newline at end of file +} \ No newline at end of file diff --git a/packages/TitlePage.sty b/packages/TitlePage.sty index fb6c85a..476eb08 100644 --- a/packages/TitlePage.sty +++ b/packages/TitlePage.sty @@ -1,8 +1,6 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{PrimeTeX/packages/TitlePage}[2025-07-09] -\RequirePackage{graphicx} - % Define custom title page. \NewDocumentCommand{\PrimeTitlePage}{O{}}{ \thispagestyle{empty} @@ -18,7 +16,7 @@ {\Huge\Title} \vfill {\leavevmode - % Move the rule graphic to 0.25 in from the left edge of the + % Move the rule graphic to 0.25 in from the left edge of the % paper and vertically centered on the heartbeat graphic. \put(-\oddsidemargin-0.75in,10pt){ \includegraphics{#1prime_rule.pdf} @@ -28,7 +26,7 @@ \includegraphics{#1prime_heartbeat.pdf} } } - + \AuthorCompany Revision \Version diff --git a/packages/Titles.sty b/packages/Titles.sty index 1ff252d..2469489 100644 --- a/packages/Titles.sty +++ b/packages/Titles.sty @@ -1,8 +1,6 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{PrimeTeX/packages/Titles}[2025-07-16] -\RequirePackage[raggedright]{titlesec} - \ifthenelse{\NOT\boolean{doRomanNumerals}}{ \renewcommand{\thepart}{\arabic{part}} }{}