203 lines
8.9 KiB
Nix
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}}" ]
|
|
)
|