142 lines
3.8 KiB
TeX
142 lines
3.8 KiB
TeX
\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}%
|
|
}{} |