diff options
author | Norbert Preining <norbert@preining.info> | 2022-05-21 03:00:51 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2022-05-21 03:00:51 +0000 |
commit | fbe3cb5feb55dc6417d9bb95e3c7954a1b0b9ee8 (patch) | |
tree | 8b0d1308f7fb87bb2e578c8d9c2b1d5516063558 /macros/luatex/generic/lua-widow-control/lwc-manual.mkxl | |
parent | 33fe673e1a4a678f76e23a91da0f449998af9c47 (diff) |
CTAN sync 202205210300
Diffstat (limited to 'macros/luatex/generic/lua-widow-control/lwc-manual.mkxl')
-rw-r--r-- | macros/luatex/generic/lua-widow-control/lwc-manual.mkxl | 369 |
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 |