Sebastian Walz 860d31cee1
Tohu vaBohu
2023-04-21 00:22:52 +02:00

203 lines
8.9 KiB
Nix

{ context, core, ... }:
let
inherit(core) indentation set string;
boldFont
= {
BoldFont = "*-Bold";
UprightFont = "*-Regular";
};
regularFont
= {
UprightFont = "*-Regular";
};
lightFont
= {
BoldFont = "*-Bold";
ItalicFont = "*-Light";
UprightFont = "*-Regular";
};
usualFont
= {
BoldFont = "*-Bold";
BoldItalicFont = "*-BoldItalic";
ItalicFont = "*-Italic";
UprightFont = "*-Regular";
};
defaultFontFeatures
= fontName:
{ ... } @ features:
[
"\\defaultfontfeatures[${fontName}]{" indentation.more
"Path = \\source/fonts/,"
"Extension = .ttf,"
]
++ (set.mapToList (key: value: "${key} = ${value},") features)
++ [ indentation.less "}" ];
in
{ ... }:
{ assets, acronyms, packages, references, source, substances, ... }:
(
[
''
\documentclass[
12pt,
a4paper,
twoside,
bookmarks = true,
pdfborder = {0 0 0},
pdfencoding = auto,
unicode = true,
sections,
BCOR = 10mm,
listof = flat,
numbers = noenddot,
toc = listof,
toc = index,
table,
]
{scrreprt}
''
''
\directlua{
acronymFile = "${acronyms}"
jobname = [[\jobname]]
source = [[\source]].."/"
buildDirectory = [[\build]].."/"
dofile(source.."${source.lua}common.lua")
}
''
"\\newcommand{\\inputCode }[1]{\\input{\\source/${source.tex}#1}}"
"\\newcommand{\\inputAssets}[1]{\\input{\\source/${assets}#1}}"
"\\def\\biblatexStyle{\\source/${assets}biblatex/chem-angew}"
"\\makeatletter"
]
++ packages
++ [
"\\makeatother"
"\\usepackage{scrlayer-scrpage}"
]
++ ( defaultFontFeatures "Arimo" usualFont )
++ ( defaultFontFeatures "Cousine" usualFont )
++ ( defaultFontFeatures "DejaVu Sans" regularFont )
++ ( defaultFontFeatures "Liberation Mono" usualFont )
++ ( defaultFontFeatures "Liberation Sans" usualFont )
++ ( defaultFontFeatures "Liberation Serif" usualFont )
++ ( defaultFontFeatures "Noto Sans" usualFont )
++ ( defaultFontFeatures "Noto Serif" usualFont )
++ ( defaultFontFeatures "Noto Color Emoji" regularFont )
++ ( defaultFontFeatures "Noto Kufi Arabic" lightFont )
++ ( defaultFontFeatures "Noto Music Regular" regularFont )
++ ( defaultFontFeatures "Noto Naskh Arabic" boldFont )
++ ( defaultFontFeatures "Noto Naskh Arabic UI" boldFont )
++ ( defaultFontFeatures "Noto Nastaliq Urdu" boldFont )
++ ( defaultFontFeatures "Noto Rashi Hebrew" lightFont )
++ ( defaultFontFeatures "Noto Sans Adlam" boldFont )
++ ( defaultFontFeatures "Noto Sans Adlam Unjoined" boldFont )
++ ( defaultFontFeatures "Noto Sans Hebrew" lightFont )
++ ( defaultFontFeatures "Noto Serif Hebrew" lightFont )
++ ( defaultFontFeatures "Roboto" usualFont )
++ ( defaultFontFeatures "Roboto Condensed" usualFont )
++ ( defaultFontFeatures "Roboto Mono" usualFont )
++ ( defaultFontFeatures "Roboto Slab" lightFont )
++ ( defaultFontFeatures "Tinos" usualFont )
++ ( defaultFontFeatures "unifont" regularFont )
++ [
"\\def\\fullStop{\\foreignlanguage{british}{.}}"
"\\def\\comma{\\foreignlanguage{british}{,}}"
"\\setmainfont{Tinos}[]"
"\\setsansfont{Roboto}[]"
"\\setmonofont{Roboto Mono}[]"
"\\setmathfont{latinmodern-math.otf}[]"
"\\babelprovide[import]{british}"
"\\babelprovide[import,main]{ngerman}"
"\\babelfont{rm}{Tinos}"
"\\babelfont{sf}{Roboto}"
"\\babelfont{tt}{Roboto Mono}"
"\\babelprovide[import]{arabic}"
"\\babelfont[*arabic]{rm}[RawFeature=]{Noto Naskh Arabic}"
"\\babelfont[*arabic]{sf}[RawFeature={fallback=NotoSansFallback}]{Noto Kufi Arabic}"
"\\babelprovide[import]{greek}"
"\\babelfont[greek]{rm}{Noto Serif}"
"\\babelfont[greek]{sf}{Roboto}"
"\\babelfont[greek]{tt}{Roboto}"
"\\babelprovide[import]{hebrew}"
"\\babelfont[*hebrew]{rm}{Noto Serif Hebrew}"
"\\babelfont[*hebrew]{sf}{Noto Sans Hebrew}"
"\\babelfont[*hebrew]{tt}{Noto Sans Hebrew}"
#"\\babelprovide[import]{japanese}"
#"\\babelfont[japanese]{rm}{Noto Serif Japanese}"
#"\\babelfont[japanese]{sf}{Noto Sans Japanese}"
#"\\babelfont[japanese]{tt}{Noto Sans Japanese}"
"\\renewcommand{\\familydefault}{\\sfdefault}"
"\\pdfvariable suppressoptionalinfo ${string ( 32 + 64 + 512 )}" # Makes the PDF constant
"\\setstretch{1.433}" # 1/2-spacing
"\\DeclareFloatingEnvironment[" indentation.more
"fileext = los,"
"listname = {Schema\\-verzeichnis},"
"name = Schema,"
indentation.less "]{scheme}"
# Positons, Lengths, Alingments, etc. for TOC
"\\setlength{\\parindent}{0cm}"
"\\newlength{\\chapterindent}"
"\\setlength{\\chapterindent}{0em}"
"\\newlength{\\chapterspace}"
"\\settowidth{\\chapterspace}{6. }"
"\\renewcommand{\\chapterheadstartvskip}{\\vspace{0pt}}"
"\\newlength{\\sectionindent}"
"\\setlength{\\sectionindent}{\\chapterindent}"
"\\addtolength{\\sectionindent}{\\chapterspace}"
"\\newlength{\\sectionspace}"
"\\settowidth{\\sectionspace}{6.6. }"
"\\newlength{\\subsectionindent}"
"\\setlength{\\subsectionindent}{\\sectionindent}"
"\\addtolength{\\subsectionindent}{\\sectionspace}"
"\\newlength{\\subsectionspace}"
"\\settowidth{\\subsectionspace}{6.6.66. }"
"\\newlength{\\subsubsectionindent}"
"\\setlength{\\subsubsectionindent}{\\subsectionindent}"
"\\addtolength{\\subsubsectionindent}{\\subsectionspace}"
"\\newlength{\\subsubsectionspace}"
"\\settowidth{\\subsubsectionspace}{6.6.66.66. }"
# Redefine Sections and Paragraphs
"\\RedeclareSectionCommands[tocpagenumberwidth=6ex]%"
" {part,chapter,section,subsection,subsubsection,paragraph,subparagraph}"
''
\RedeclareSectionCommands[
tocentryformat=\tocentryformat,
tocpagenumberformat=\tocentryformat
]
{section,subsection,subsubsection,paragraph,subparagraph}
''
''
\makeatletter
\patchcmd {\l@chapter} {\chapterindent }{\chapterspace}{}{}
\renewcommand {\l@section} {\@dottedtocline{1} {\sectionindent }{\sectionspace}}
\renewcommand {\l@subsection} {\@dottedtocline{2} {\subsectionindent }{\subsectionspace}}
\renewcommand {\l@subsubsection}{\@dottedtocline{3} {\subsubsectionindent }{\subsubsectionspace}}
\makeatother
''
# Header and Footer
"\\def\\pagemark{\\thepage}"
"\\pagestyle{scrheadings}"
"\\clearpairofpagestyles"
"\\ohead{\\leftmark}"
"\\ofoot[\\pagemark]{\\pagemark}"
]
++ (
if substances != null
then
[ "\\directlua{substances.load(source..\"${string.slice 0 ((string.length substances) - 4) substances}\")}%" ]
else
[]
)
++ [ "\\addbibresource{\\source/${references}}" ]
)