summaryrefslogtreecommitdiff
path: root/_extensions/js
diff options
context:
space:
mode:
Diffstat (limited to '_extensions/js')
-rw-r--r--_extensions/js/ingress/_extension.yml6
-rw-r--r--_extensions/js/ingress/ingress.lua29
-rw-r--r--_extensions/js/multicol-nohead/multicol-nohead.lua23
-rw-r--r--_extensions/js/stylish-issue/_extension.yaml134
-rw-r--r--_extensions/js/stylish-issue/doc-class.tex68
5 files changed, 260 insertions, 0 deletions
diff --git a/_extensions/js/ingress/_extension.yml b/_extensions/js/ingress/_extension.yml
new file mode 100644
index 0000000..4655adc
--- /dev/null
+++ b/_extensions/js/ingress/_extension.yml
@@ -0,0 +1,6 @@
+title: Ingress
+author: Jonas Smedegaard
+version: 0.0.1
+contributes:
+ filters:
+ - ingress.lua
diff --git a/_extensions/js/ingress/ingress.lua b/_extensions/js/ingress/ingress.lua
new file mode 100644
index 0000000..3c2c429
--- /dev/null
+++ b/_extensions/js/ingress/ingress.lua
@@ -0,0 +1,29 @@
+-- Translate div class .lead to custo LaTeX environment \ingress{}
+
+local function escape_latex(str)
+ local replacements = {
+ ["\\"] = "\\textbackslash{}",
+ ["{"] = "\\{",
+ ["}"] = "\\}",
+ ["$"] = "\\$",
+ ["&"] = "\\&",
+ ["#"] = "\\#",
+ ["_"] = "\\_",
+ ["%"] = "\\%",
+ ["^"] = "\\textasciicircum{}",
+ ["~"] = "\\textasciitilde{}"
+ }
+ return (str:gsub(".", function(c)
+ return replacements[c] or c
+ end))
+end
+
+function Div(el)
+ if FORMAT:match 'latex' then
+ if el.classes:includes('lead') then
+ local content = pandoc.utils.stringify(el.content)
+ local escaped_content = escape_latex(content)
+ return pandoc.RawBlock('latex', '\\ingress{' .. escaped_content .. '}')
+ end
+ end
+end
diff --git a/_extensions/js/multicol-nohead/multicol-nohead.lua b/_extensions/js/multicol-nohead/multicol-nohead.lua
index 85e0dd8..f190db8 100644
--- a/_extensions/js/multicol-nohead/multicol-nohead.lua
+++ b/_extensions/js/multicol-nohead/multicol-nohead.lua
@@ -31,6 +31,21 @@ local function is_columnar_header(elem)
return elem.t == "Header" and elem.level == 1
end
+local function is_multicols_begin(elem)
+ return elem.t == "RawBlock" and elem.text == "\\begin{multicols}{3}\\raggedcolumns"
+end
+
+local function is_multicols_end(elem)
+ return elem.t == "RawBlock" and elem.text == "\\end{multicols}"
+end
+
+-- a standalone image with optional caption that has class .wide
+-- TODO: detect pre-quarto-filter pattern too
+local function is_wide(elem)
+ return ((elem.t == "Para" and has_class(elem.content[1], "wide"))
+ or (elem.t == "Figure" and has_class(elem.content[1].content[1], "wide")))
+end
+
-- TODO: detect pre-quarto-filter pattern too
local function is_newpage_command(elem)
return (elem.t == "RawBlock" and elem.text == "\\newpage{}")
@@ -100,6 +115,10 @@ function Pandoc(doc)
if is_columnar_header(elem) then
multicol_places[i] = multicol_now and "renew" or "begin"
multicol_now = true
+ elseif is_wide(elem) then
+ if multicol_now then
+ multicol_places[i] = "renew"
+ end
elseif is_advertising(elem) then
doc.blocks[i] = ad(elem)
if multicol_now then
@@ -115,6 +134,10 @@ function Pandoc(doc)
multicol_places[i] = "end"
multicol_now = false
end
+ elseif is_multicols_begin(elem) then
+ multicol_now = true
+ elseif is_multicols_end(elem) then
+ multicol_now = false
end
end
if multicol_now then
diff --git a/_extensions/js/stylish-issue/_extension.yaml b/_extensions/js/stylish-issue/_extension.yaml
index 0af14b6..153adfa 100644
--- a/_extensions/js/stylish-issue/_extension.yaml
+++ b/_extensions/js/stylish-issue/_extension.yaml
@@ -18,6 +18,7 @@ contributes:
template-partials:
- before-title.tex
+ - doc-class.tex
include-in-header:
# borrow microtype tunings from somewhat similar EB Garamond
@@ -83,3 +84,136 @@ contributes:
}
}
\makeatother
+# define format for ingress text
+ - text: |
+ \makeatletter
+ \newcommand{\ingress}[1]{%
+ {\Large #1}\par
+ \@afterindentfalse
+ \@afterheading
+ \vspace{.5\baselineskip}%
+ }
+ \makeatother
+# support unusual space characters like   and  
+ - text: |
+ \usepackage{uspace}
+# refine hyphenation
+ - text: |
+ \usepackage{lua-check-hyphen}
+ \LuaCheckHyphen{whitelist={hyph_ok_danish.txt}]{lua-check-hyphen}}
+ %\LuaCheckHyphen{whitelist={file1.txt,file2.txt,file3.txt}}
+ \babelhyphenation[danish]{
+ af-fald-et % affal-det
+ an-er-kend-el-sen % anerken-delsen
+ an-hæng-er-en % anhæn-geren
+ ar-bejds-dag-e-ne % arbejdsda-gene
+ be-slut-ning-er % beslutnin-ger
+ be-søg-ende % besø-gende
+ bord-ene % bor-dene
+ bo-ring-en % borin-gen
+ bris-ter % bri-ster
+ brugs-for-e-ning-ens % brugsforenin-gens
+ by-bjerg % byb-jerg
+ bå-de-laug-ets % bådelau-gets
+ del-stræk-ning-er-ne % delstræknin-gerne
+ del-tag-en-de % delta-gende
+ ener-gi-klas-se % energik-lasse
+ e-ner-gi-re-no-ve-ring-er % energirenoverin-ger
+ er-fa-ring-en % erfarin-gen
+ es-bjerg % esb-jerg
+ fjord-en % fjor-den
+ fol-ke-ting-ets % folketin-gets
+ fond-en % fon-den
+ for-bind-el-se % forbin-delse
+ for-e-ning-en % forenin-gen
+ for-e-ning-er % forenin-ger
+ for-hand-ling-er-ne % forhandlin-gerne
+ for-sam-lings-hu-set % forsamlingshu-set
+ for-sam-lings-hu-sets % forsam-lingshu-sets
+ for-æl-dre-for-e-ning-ens % forældreforenin-gens
+ for-år-et % forå-ret
+ frem-skriv-ning-er % fremskrivnin-ger
+ fri-lufts-laug % fril-uftslaug
+ fri-lufts-råd-et % fril-uftsrådet
+ fund-et % fun-det
+ fæl-les-mail-en % fællesmai-len
+ grønt-sags-la-sag-ne % grøntsag-slasagne
+ ho-ved-byg-ning-en % hovedbygnin-gen
+ hon-ning-en % honnin-gen
+ hus-hold-nings-for-e-ning-er % husholdningsforenin-ger
+ hyg-ge-land-brug-et % hyggelandbru-get
+ høj-sæ-son-en % højsæso-nen
+ ind-flyt-ning-en % indflytnin-gen
+ in-fra-struk-tur-en % infrastruktu-ren
+ in-ter-es-se-for-e-ning-er % interesseforenin-ger
+ ka-jak-ro-ning % kaja-kroning
+ klat-rede % kla-trede
+ kom-mu-nist-er % kommuni-ster
+ kon-cen-tra-ti-ons-lejr-en % koncentrationslej-ren
+ krea-ting % kreat-ing
+ krig-en % kri-gen
+ kul-tur-be-hol-der-en % kulturbeholde-ren
+ kul-tur-for-e-ning-er % kulturforenin-ger
+ kva-li-tet-en % kva-lite-ten
+ kvarts-fa-mi-li-en % kvart-sfamilien
+ kvæl-stof-ud-led-ning-en % kvælstofudlednin-gen
+ land-mand-en % landman-den
+ lej-lig-hed-er % lejlighe-der
+ lejr-at-mos-fæ-re % lej-ratmosfære
+ lejr-sko-le % lej-rskole
+ ler-lag-et % lerla-get
+ lig-hed-er % lighe-der
+ løs-ning-er % løs-nin-ger
+ men-nes-ker % menne-sker
+ mi-nis-tre % mini-stre
+ mær-kat-er-ne % mærka-terne
+ må-ned-er % måne-der
+ na-tur-op-le-vel-ser % natu-roplevelser
+ ok-se-mør-brad-en % oksemørbra-den
+ orø-post-en % orøpo-sten
+ per-son-er % perso-ner
+ pin-se-lop-pe-mar-ked % pin-sel-oppemarked
+ pin-se-lop-pe-mar-ked-et % pinsel-oppemar-ke-det
+ prang-en-de % pran-gende
+ proviant-en % provian-ten
+ re-dak-tion-en % redaktio-nen
+ rick-shaw % ricks-haw
+ rick-shaw-for-e-ning-en % rickshawforenin-gen
+ sam-virk-en-de % samvir-kende
+ schreib-eis % schrei-beis
+ se-nio-r-er % seni-orer
+ skov-en % sko-ven
+ skulp-tur-er % skul-pturer
+ skulp-tør % skul-ptør
+ sky-de-gla-de % skydeg-lade
+ smuk-ke-ste % smukkes-te
+ so-cia-le % soci-ale
+ som-mer-en % somme-ren
+ som-mer-hus-eje-re % sommerhuse-jere
+ som-mer-hus-grund-ejer-for-e-ning % sommerhusgrunde-jerforening
+ som-mer-hus-gæst-er % sommerhusgæs-ter
+ spe-cia-le % speci-ale
+ sports-plads-en % sport-spladsen
+ spænd-en-de % spæn-dende
+ stab-en % sta-ben
+ sten-e-ne % ste-nene
+ sten-sli-be-re % stens-libere
+ sving-ende % svin-gende
+ tal-lerk-ner % taller-kner
+ thors-lev % thor-slev
+ tryk-sag-er % tryksa-ger
+ tråd-te % trå-dte
+ ud-for-dring-er % udfordrin-ger
+ ud-stil-ling-er % udstillin-ger
+ ud-vik-ling-en % udviklin-gen
+ und-tag-el-se % undta-gelse
+ vand-ak-ti-vi-tet-er % van-daktiviteter
+ vand-et % van-det
+ vand-ets % van-dets
+ vind-ud-sat % vin-dudsat
+ vok-sen-bib-li-o-tek-et % voksenbi-blio-teket
+ væ-ve-a-te-lier-et % væveateli-eret
+ week-end-en % weeken-den
+ work-shops % wor-kshops
+ øn-ske-lis-te % ønskeli-ste
+ }
diff --git a/_extensions/js/stylish-issue/doc-class.tex b/_extensions/js/stylish-issue/doc-class.tex
new file mode 100644
index 0000000..a9dbfaa
--- /dev/null
+++ b/_extensions/js/stylish-issue/doc-class.tex
@@ -0,0 +1,68 @@
+\DocumentMetadata{
+% modern PDF rendering: <https://tex.stackexchange.com/a/686905/309738>
+$if(lang)$
+ lang={$lang$},
+$endif$
+$if(pdfversion)$
+ pdfversion=$pdfversion$,
+$endif$
+$for(pdfstandard)$
+ pdfstandard=$pdfstandard$,
+$endfor$
+$if(pdftestphase)$
+testphase=
+ {
+$for(pdftestphase)$
+ $pdftestphase$,
+$endfor$
+ },
+$endif$
+$if(pdfdebug)$
+debug=
+ {
+$for(pdfdebug)$
+ $pdfdebug$,
+$endfor$
+ },
+$endif$
+$if(pdfdebugfirstaidoff)$
+debug=
+ {
+firstaidoff=
+ {
+$for(pdfdebugfirstaidoff)$
+ $pdfdebugfirstaidoff$,
+$endfor$
+ },
+ },
+$endif$
+}
+$if(copyright)$
+% flag as rights protected <https://tex.stackexchange.com/a/712443/309738>
+\ExplSyntaxOn
+\pdfmeta_xmp_add:n{<xmpRights:Marked>True</xmpRights:Marked>}
+\ExplSyntaxOff
+$endif$
+$if(pdftestphasestrict)$
+% fatalize tagging warnings
+\ExplSyntaxOn
+ \msg_redirect_module:nnn { tag } { warning } { error }
+\ExplSyntaxOff
+$endif$
+\documentclass[
+$for(babel-otherlangs)$
+ $babel-otherlangs$,
+$endfor$
+$if(babel-lang)$
+ $babel-lang$,
+$endif$
+$if(fontsize)$
+ $fontsize$,
+$endif$
+$if(papersize)$
+ $papersize$paper,
+$endif$
+$for(classoption)$
+ $classoption$$sep$,
+$endfor$
+]{$documentclass$}