\NeedsTeXFormat{LaTeX2e} \ProvidesPackage{PrimeTeX/packages/Layout}[2025-07-09] % Suppress warning about \showhyphens being changed. \let\CheckCommand\providecommand \RequirePackage{ifthen} \NewDocumentCommand{\providelength}{m O{0pt}}{% \ifdeflength{#1}{% It is already defined! }{% Not defined, so define it! \newlength{#1}% }% \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} \RequirePackage{float} % 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@} \renewcommand{\Gm@hrule}{\color{layoutColor}\hrule height 0.2pt depth\z@ width\textwidth} \renewcommand{\Gm@hruled}{\color{layoutColor}\hrule height\z@ depth0.2pt width\textwidth} % Suppress "Underfull \hbox" infos. \hbadness=10000 \ifthenelse{\boolean{isDraft}}{ \geometry{showframe} \hfuzz = 2.0pt }{ % Suppress small overfull infos. \hfuzz = 6.0pt \vfuzz = 0.0pt } \ifthenelse{\boolean{isElectronic}}{ % \geometry{} }{ \geometry{twoside} } \RequirePackage{calc} \RequirePackage[strict]{changepage} \providelength{\marparwidth}[\marginparsep + \marginparwidth] \providelength{\contentwidth}[\textwidth + \marparwidth] \RequirePackage[ balanced, ]{lua-widow-control} \ifthenelse{\boolean{isDraft}}{ \lwcsetup{draft=false,showcolours=true} }{} % Paragraph formatting. \setlength{\parindent}{0pt} \setlength{\parskip}{\medskipamount} % Float Page Configuration \renewcommand{\topfraction}{0.9} % max fraction of floats at top \renewcommand{\bottomfraction}{0.8} % max fraction of floats at bottom % Parameters for TEXT pages (not float pages): \setcounter{topnumber}{2} \setcounter{bottomnumber}{2} \setcounter{totalnumber}{4} % 2 may work better \setcounter{dbltopnumber}{2} % for 2-column pages \renewcommand{\dbltopfraction}{0.9} % fit big float above 2-col. text \renewcommand{\textfraction}{0.07} % allow minimal text w. figs % Parameters for FLOAT pages (not text pages): \renewcommand{\floatpagefraction}{0.8} % require fuller float pages % N.B.: floatpagefraction MUST be less than topfraction !! \renewcommand{\dblfloatpagefraction}{0.8} % require fuller float pages % Line-breaking zero-width space \NewDocumentCommand{\zws}{}{\hspace{0pt}} % Line-breaking dot \NewDocumentCommand{\bdot}{}{.\zws} \NewDocumentEnvironment{SmartAdjustWidth}{O{\boolean{isElectronic}} m m +b}{% \ifthenelse{#1}{% \begin{adjustwidth}{#2}{#3}% #4% \end{adjustwidth}% }{% \begin{adjustwidth*}{#2}{#3}% #4% \end{adjustwidth*}% }% }{} \newcommand{\bigfloatoffsetratio}{2} % Maximum width adjustment to fit 2 16x9 screensots on one page. \providelength{\bigfloatoverhang}[0.54in] \floatstyle{plain} \newfloat{generic}{htpb}{lgf} \NewDocumentEnvironment{BigFloat}{ % #1: Float type O{generic} % #2: Overhang: the distance that the BigFloat extends into the margins. O{\bigfloatoverhang} % #3: Float position: where the float may appear on the page. O{htpb} % #4: Offset: the distance to offset the center of the BigFloat from the center % of the text block. O{\bigfloatoffsetratio} % #5: Body: what appears in the BigFloat. +b }{% \begin{#1}[#3]% float environment \begin{SmartAdjustWidth}{-#2}{-#2 * \real{#4}}% adjustwidth(*) \begin{minipage}{\linewidth}%{#2 * (#4 + 1) + \textwidth}% \ifthenelse{\boolean{isDraft}}{% {\color{layoutColor}\rule{\textwidth}{1pt}\zws}% #5% %{\color{layoutColor}\rule{\textwidth}{1pt}}% }{% #5% }% \end{minipage}% \end{SmartAdjustWidth}% \end{#1}% }{}