summaryrefslogtreecommitdiff
path: root/macros/luatex/generic/lua-widow-control/lwc-manual.mkxl
diff options
context:
space:
mode:
Diffstat (limited to 'macros/luatex/generic/lua-widow-control/lwc-manual.mkxl')
-rw-r--r--macros/luatex/generic/lua-widow-control/lwc-manual.mkxl369
1 files changed, 369 insertions, 0 deletions
diff --git a/macros/luatex/generic/lua-widow-control/lwc-manual.mkxl b/macros/luatex/generic/lua-widow-control/lwc-manual.mkxl
new file mode 100644
index 0000000000..7623b51d1c
--- /dev/null
+++ b/macros/luatex/generic/lua-widow-control/lwc-manual.mkxl
@@ -0,0 +1,369 @@
+% lua-widow-control
+% https://github.com/gucci-on-fleek/lua-widow-control
+% SPDX-License-Identifier: MPL-2.0+
+% SPDX-FileCopyrightText: 2022 Max Chernoff
+
+\startenvironment[lwc-manual]
+\unprotect
+
+\mainlanguage[en]
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% Font Selection %%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\startluacode
+fonts.handlers.otf.addfeature {
+ name = "emdash_kern", -- Increase sidebearings on em-dash
+ type = "single",
+ data = {
+ ["—"] = { 100, 0, 200, 0 },
+ }
+}
+\stopluacode
+
+\definefontfeature[default][default][
+ protrusion=quality,
+ expansion=quality,
+ onum=yes,
+ script=latn,
+ emdash_kern=yes,
+ trep=yes,
+]
+\setupalign[hz, hanging]
+
+\definefontfeature[lining][onum=no,lnum=yes]
+\definefontfeature[allsmall][c2sc=yes, smcp=yes]
+\define\lining{\feature[+][lining]}
+
+\starttypescript[lwc-fonts]
+ \definetypeface[lwc-fonts] [rm] [serif][pagella] [default]
+ \definetypeface[lwc-fonts] [ss] [sans] [libertinus] [default] [rscale=1.07]
+ \definetypeface[lwc-fonts] [tt] [mono] [plex] [default] [rscale=0.89]
+ \definetypeface[lwc-fonts] [mm] [math] [pagella] [default]
+\stoptypescript
+
+\setupbodyfont[lwc-fonts, 11pt]
+
+\setupbodyfontenvironment[default][em=italic]
+
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% Page Layout %%%%%
+%%%%%%%%%%%%%%%%%%%%%%%
+
+\setuppapersize[letter]
+
+\setupindenting[yes, 3em]
+\setupinterlinespace[2.75ex]
+
+\input lang-frq.mkxl % For \averagecharwidth
+
+\setuplayout[
+ width=75\averagecharwidth,
+ backspace=\dimexpr(\paperwidth - \makeupwidth) / 2,
+ topspace=\dimexpr\backspace - \headerheight,
+ footerdistance=3\baselineskip,
+ footer=\baselineskip,
+ height=8.75in,
+ margin=\dimexpr\backspace - \margindistance - 0.25cm,
+]
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% PDF Settings %%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+% PDF/UA
+\setupbackend[format=PDF/UA-1]
+\setupinteraction[state=start, focus=standard]
+\setuptagging[state=start]
+\setupstructure[state=start, method=auto]
+
+% Bookmarks
+\placebookmarks[section, subsection][section, subsection][number=no]
+\setupinteractionscreen[option=bookmark]
+
+%%%%%%%%%%%%%%%%%%%%%%
+%%%%% Formatting %%%%%
+%%%%%%%%%%%%%%%%%%%%%%
+
+\setuppagenumbering[location=footer, style=\ss\lining]
+\let\old@tex=\tex
+\def\tex#1{\expandafter\old@tex\normalexpanded{{#1}}} % Allow expansion in the \tex macro (for \allowbreak)
+
+% Acronym styling
+\definecharacterkerning[acronymkerning][factor=0.05]
+\definealternativestyle[acronymstyle][{\feature[+][allsmall]\switchtobodyfont[1.1em]\setcharacterkerning[acronymkerning]}][]
+\definehighlight[acronym][style=acronymstyle]
+
+\startsetups[commandtable]
+ \setupTABLE[frame=off]
+ \setupTABLE[column][first][roffset=1.5em]
+ \setupTABLE[row][first][toffset=0.25ex]
+\stopsetups
+
+\startsetups[booktabs]
+ \setupTABLE[each][each][frame=off]
+ \setupTABLE[row][first][topframe=on, rulethickness=1.2bp]
+ \setupTABLE[row][2] [topframe=on, rulethickness=0.6bp]
+ \setupTABLE[row][last] [bottomframe=on, rulethickness=1.2bp]
+ \setupTABLE[column][first][loffset=0.5em]
+ \setupTABLE[column][last][roffset=0.5em]
+\stopsetups
+
+\setupitemize[each][
+ style=\lining,
+ inbetween={\blank[quarterline]},
+]
+\setupcaptions[
+ headstyle=\ssbf\lining,
+ style=\ss,
+]
+
+\setupdelimitedtext[blockquote][
+ style=\ss,
+ before=\noindentation,
+ after={\blank[medium]}
+]
+
+\define[1]\meta{\m{\langle}\italic{#1}\m{\rangle}}
+\define[1]\githubissue{\goto{(Issue~\##1)}[url(https://github.com/gucci-on-fleek/lua-widow-control/issues/#1)]}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% Section Commands %%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\definecharacterkerning[titlekern][factor=0.2]
+
+\protected\def\interwordspace{\scaledfontdimen2\font}
+
+% Section
+\startsetups[style:section]
+ \setcharacterkerning[titlekern]
+ \switchtobodyfont[adventor]
+ \WORD
+ \bfb
+ \feature[+][allsmall]
+ \interwordspace=0.4em
+ \veryraggedcenter
+\stopsetups
+
+\setuphead[section][
+ before={\blank[big, preference]},
+ after={\blank[medium, samepage]},
+ textstyle=\setups{style:section},
+ number=no,
+]
+
+% Subsection
+\setuphead[subsection][
+ before={\blank[medium, preference]},
+ after=,
+ textstyle=\ss,
+ alternative=margintext,
+ number=no,
+]
+
+% TOC
+\def\secondleveltoc{subsection}
+\starttexdefinition protected SectionTOCcommand #1#2#3
+ \startcurrentlistentrywrapper % Make the whole line a link
+ \midaligned{ % Have the title and page number "glued" to the middle
+ \llap{\currentlistentrytitle}
+ \hskip 1em
+ \rlap{\color[\interactionparameter{color}]{\bf \currentlistentrypagenumber}}
+ }
+ \stopcurrentlistentrywrapper
+
+ \par
+ \nobreak
+
+ \setbox0=\vbox{\framedtext[ % Align the subsection titles under the section title
+ frame=off,
+ width=\dimexpr\textwidth/2 - 0.5em,
+ align={flushright, wide},
+ offset=none,
+ toffset=-\lineheight,
+ ]{
+ \global\firstsubsectiontrue
+ \placelist[\secondleveltoc][criterium=local]
+ }}
+ \iffirstsubsection
+ \blank[quarterline] % No subsections here
+ \else
+ \box0
+ \fi
+
+ \goodbreak
+\stoptexdefinition
+
+\newif\iffirstsubsection
+
+\define\tocspace{\hskip 0.5em plus 0.5em minus 0.2em\relax}
+
+\unexpanded\def\toc_link#1{%
+ \startcurrentlistentrywrapper%
+ \hbox{#1}%
+ \stopcurrentlistentrywrapper%
+}
+
+\starttexdefinition protected SubsectionTOCcommand #1#2#3
+ \ss\itx
+ \dontleavehmode
+ \iffirstsubsection
+ \global\firstsubsectionfalse
+ \toc_link{#2}
+ \else
+ \discretionary{}{
+ \toc_link{#2} % No interpunct if the line splits here
+ }{
+ \tocspace{\bfa·}\tocspace\toc_link{#2}
+ }
+ \fi
+\stoptexdefinition
+
+\setupcombinedlist[content][list=section]
+\setuplist[section][
+ alternative=command,
+ command=\SectionTOCcommand,
+]
+
+\setuplist[subsection][
+ alternative=command,
+ command=\SubsectionTOCcommand,
+]
+
+%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% Title Block %%%%%
+%%%%%%%%%%%%%%%%%%%%%%%
+
+\setupdocument[
+ title={},
+ author={},
+ version={},
+ ctan={},
+ github={},
+]
+
+\startluacode
+local function strip_url(str)
+ local url_table = url.hashed(str)
+ url_table.fragment = nil
+ url_table.scheme = nil
+ url_table.authority = url_table.authority:gsub("^www%.", "")
+ tex.sprint(-2, url.decode(url.construct(url_table)))
+end
+
+interfaces.implement {
+ name = "strip_url",
+ actions = strip_url,
+ arguments = "1 string"
+}
+\stopluacode
+
+\define[1]\strippedurl{%
+ \goto{\tt\hyphenatedurl{\clf_strip_url{#1}}}[url(#1)]
+}
+
+\startsetups[titleblock]
+ \startalignment [middle]
+ \begingroup
+ \setups[style:section]\bfc
+ \documentvariable{title}
+ \par
+ \endgroup
+
+ \blank[big]
+
+ \begingroup
+ \ssa\lining
+ \documentvariable{author}
+ \blank[medium]
+ v\,\documentvariable{version}
+ \par
+ \endgroup
+
+ \dontleavehmode
+ \blackrule[depth=-0.25\baselineskip, height=\dimexpr0.25\baselineskip + 0.4pt, width=8em]
+ \par
+
+ \doifdocumentvariable{ctan}{
+ \strippedurl{\documentvariable{ctan}}
+ }
+ \doifdocumentvariable{github}{
+ \strippedurl{\documentvariable{github}}
+ }
+ \blank[big]
+
+ \noindentation
+ \stopalignment
+\stopsetups
+
+\startsetups[document:start]
+ \setup[titleblock]
+
+ \setupinteraction[
+ title=\documentvariable{title},
+ author=\documentvariable{author},
+ ]
+\stopsetups
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% Bibliography %%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%
+\usebtxdefinitions[apa]
+
+\setupbtx[apa:list][
+ stopper:initials=,
+ separator:initials=\btxnbsp,
+ interaction=start,
+]
+
+\setupbtxlabeltext[en][
+ apa:Retrieved={}
+]
+
+\setupbtxrendering[apa][
+ numbering=yes,
+ sorttype=used,
+]
+
+\setupbtx[apa:cite][alternative=num]
+
+\defineshift[citeshift][
+ method=0,
+ dy=-1,
+ unit=ex,
+ continue=yes,
+ style=\tfx\lining,
+]
+
+\setupbtx[apa:cite:num][
+ command=\citeshift,
+ left=,
+ right=,
+ separator:2=\citeshift{,\,},
+ separator:3=\citeshift{--}
+]
+
+\setupbtxlist[apa][
+ alternative=a,
+ before=,
+ after={\blank[quarterline]},
+ style=\lining,
+ margin=0pt,
+ width=1.5em,
+]
+
+\starttexdefinition mutable protected btx:apa:url
+ \strippedurl{\clf_btxflush{\currentbtxdataset}{\currentbtxtag}{url}
+ }
+\stoptexdefinition
+
+\define[1]\lwc_doi{\goto{\acronym{DOI:}\,\tt\hyphenatedurl{#1}}[url(https://dx.doi.org/#1)]}
+\starttexdefinition mutable protected btx:apa:doi
+ \lwc_doi{\clf_btxflush{\currentbtxdataset}{\currentbtxtag}{doi}}
+\stoptexdefinition
+
+\protect
+\stopenvironment