From d0966f724470c6d6308cf4fe63c036513398904c Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Tue, 20 Jun 2023 12:56:24 +0200 Subject: [PATCH 1/7] bootstrap: Fix pipx beancount plugin install The beancount plugin 'beancount-categorizer' does not exist on pypi so we install it from the git source instead. --- bootstrap/packages_stable.tsv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bootstrap/packages_stable.tsv b/bootstrap/packages_stable.tsv index e92a3a5..ff64bdc 100644 --- a/bootstrap/packages_stable.tsv +++ b/bootstrap/packages_stable.tsv @@ -25,7 +25,7 @@ bash-completion Programmable completion for the bash shell R bash-language-server Bash language server implementation based on Tree Sitter and its grammar for Bash R bat Cat clone with syntax highlighting and git integration R bc An arbitrary precision calculator language R -beancount A personal double entry accounting and budgeting software P beancount-categorizer,beancount-dkb,fava,python-magic,smart-importer +beancount A personal double entry accounting and budgeting software P git+https://github.com/bratekarate/beancount-categorizer.git,beancount-dkb,fava,python-magic,smart-importer bearssl Implementation of the SSL/TLS protocol (RFC 5246) written in C R beets Organize your music collection from the command line P beetcamp bemoji-git Emoji picker that remembers your favorites. A From 2227e464a6ad4351a9a1f59a43fcf0f5b69bd1ee Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Tue, 20 Jun 2023 12:58:31 +0200 Subject: [PATCH 2/7] office: Fix comment issues --- office/.config/neomutt/maps | 2 +- office/.config/task/taskrc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/office/.config/neomutt/maps b/office/.config/neomutt/maps index fd86c50..aa8fabe 100644 --- a/office/.config/neomutt/maps +++ b/office/.config/neomutt/maps @@ -38,7 +38,7 @@ macro index,pager ,M "?" "move a message to a # Email completion bindings bind editor complete-query bind editor ^T complete -# Press A to add contact to Khard address book +# add contact to Khard address book macro index,pager ,a \ "khard add-email" \ "add the sender email address to khard" diff --git a/office/.config/task/taskrc b/office/.config/task/taskrc index f2d2955..1ce9ced 100644 --- a/office/.config/task/taskrc +++ b/office/.config/task/taskrc @@ -80,7 +80,7 @@ include task-sync.rc include contexts # try to fix some color weirdness, especially in tmux -color.scheduled=on grey +# color.scheduled=on grey15 # only ever show one result in the tasksh tasksh.autoclear=1 From 06ccfe03b96a31c6882c5597f6fc051fdfabf343 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Tue, 20 Jun 2023 12:58:53 +0200 Subject: [PATCH 3/7] zsh: Source zsh alias file if it exists --- terminal/.config/zsh/.zshrc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/terminal/.config/zsh/.zshrc b/terminal/.config/zsh/.zshrc index 4efb1d8..de6a091 100644 --- a/terminal/.config/zsh/.zshrc +++ b/terminal/.config/zsh/.zshrc @@ -81,6 +81,8 @@ if [ -d "$CONFDIR/sh/alias.d" ]; then done unset _alias fi +# shellcheck source=alias +[ -f "$ZSHCONFDIR/alias" ] && source "$ZSHCONFDIR/alias" if [ -d "$ZSHCONFDIR/alias.d" ]; then for _alias in "$ZSHCONFDIR/alias.d"/*.sh; do source "$_alias" From 20c8edbe1991daf7fc9787e72db5a620fbc0cab5 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Tue, 20 Jun 2023 13:01:27 +0200 Subject: [PATCH 4/7] writing: Add pandoc templates letter and resume Letter creates a letter ready to be sent (in official German DIN accepted format). Resume allows creation of a CV by providing a few quality of life setups. --- .../share/pandoc/templates/letter.latex | 645 ++++++++++++++++++ .../share/pandoc/templates/resume.latex | 105 +++ 2 files changed, 750 insertions(+) create mode 100644 writing/.local/share/pandoc/templates/letter.latex create mode 100644 writing/.local/share/pandoc/templates/resume.latex diff --git a/writing/.local/share/pandoc/templates/letter.latex b/writing/.local/share/pandoc/templates/letter.latex new file mode 100644 index 0000000..0863d36 --- /dev/null +++ b/writing/.local/share/pandoc/templates/letter.latex @@ -0,0 +1,645 @@ +% +% Options for packages loaded elsewhere +% +% taken with gratitude from: +% https://github.com/benedictdudel/pandoc-letter-din5008 +% +\PassOptionsToPackage{unicode$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref} +\PassOptionsToPackage{hyphens}{url} +$if(colorlinks)$ +\PassOptionsToPackage{dvipsnames,svgnames,x11names}{xcolor} +$endif$ +$if(CJKmainfont)$ +\PassOptionsToPackage{space}{xeCJK} +$endif$ +% +\documentclass[ +$if(fontsize)$ + $fontsize$, +$endif$ +$if(papersize)$ + $papersize$paper, +$endif$ +$if(beamer)$ + ignorenonframetext, +$if(handout)$ + handout, +$endif$ +$if(aspectratio)$ + aspectratio=$aspectratio$, +$endif$ +$endif$ +$for(classoption)$ + $classoption$$sep$, +$endfor$ +]{scrlttr2} +$if(beamer)$ +$if(background-image)$ +\usebackgroundtemplate{% + \includegraphics[width=\paperwidth]{$background-image$}% +} +$endif$ +\usepackage{pgfpages} +\setbeamertemplate{caption}[numbered] +\setbeamertemplate{caption label separator}{: } +\setbeamercolor{caption name}{fg=normal text.fg} +\beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$ +$for(beameroption)$ +\setbeameroption{$beameroption$} +$endfor$ +% Prevent slide breaks in the middle of a paragraph +\widowpenalties 1 10000 +\raggedbottom +$if(section-titles)$ +\setbeamertemplate{part page}{ + \centering + \begin{beamercolorbox}[sep=16pt,center]{part title} + \usebeamerfont{part title}\insertpart\par + \end{beamercolorbox} +} +\setbeamertemplate{section page}{ + \centering + \begin{beamercolorbox}[sep=12pt,center]{part title} + \usebeamerfont{section title}\insertsection\par + \end{beamercolorbox} +} +\setbeamertemplate{subsection page}{ + \centering + \begin{beamercolorbox}[sep=8pt,center]{part title} + \usebeamerfont{subsection title}\insertsubsection\par + \end{beamercolorbox} +} +\AtBeginPart{ + \frame{\partpage} +} +\AtBeginSection{ + \ifbibliography + \else + \frame{\sectionpage} + \fi +} +\AtBeginSubsection{ + \frame{\subsectionpage} +} +$endif$ +$endif$ +$if(beamerarticle)$ +\usepackage{beamerarticle} % needs to be loaded first +$endif$ +\usepackage{amsmath,amssymb} +$if(linestretch)$ +\usepackage{setspace} +$endif$ +\usepackage{iftex} +\ifPDFTeX + \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc} + \usepackage[utf8]{inputenc} + \usepackage{textcomp} % provide euro and other symbols +\else % if luatex or xetex +$if(mathspec)$ + \ifXeTeX + \usepackage{mathspec} % this also loads fontspec + \else + \usepackage{unicode-math} % this also loads fontspec + \fi +$else$ + \usepackage{unicode-math} % this also loads fontspec +$endif$ + \defaultfontfeatures{Scale=MatchLowercase}$-- must come before Beamer theme + \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} +\fi +$if(fontfamily)$ +$else$ +$-- Set default font before Beamer theme so the theme can override it +\usepackage{lmodern} +$endif$ +$-- Set Beamer theme before user font settings so they can override theme +$if(beamer)$ +$if(theme)$ +\usetheme[$for(themeoptions)$$themeoptions$$sep$,$endfor$]{$theme$} +$endif$ +$if(colortheme)$ +\usecolortheme{$colortheme$} +$endif$ +$if(fonttheme)$ +\usefonttheme{$fonttheme$} +$endif$ +$if(mainfont)$ +\usefonttheme{serif} % use mainfont rather than sansfont for slide text +$endif$ +$if(innertheme)$ +\useinnertheme{$innertheme$} +$endif$ +$if(outertheme)$ +\useoutertheme{$outertheme$} +$endif$ +$endif$ +$-- User font settings (must come after default font and Beamer theme) +$if(fontfamily)$ +\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$} +$endif$ +\ifPDFTeX\else + % xetex/luatex font selection +$if(mainfont)$ + \setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$} +$endif$ +$if(sansfont)$ + \setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$} +$endif$ +$if(monofont)$ + \setmonofont[$for(monofontoptions)$$monofontoptions$$sep$,$endfor$]{$monofont$} +$endif$ +$for(fontfamilies)$ + \newfontfamily{$fontfamilies.name$}[$for(fontfamilies.options)$$fontfamilies.options$$sep$,$endfor$]{$fontfamilies.font$} +$endfor$ +$if(mathfont)$ +$if(mathspec)$ + \ifXeTeX + \setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} + \else + \setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} + \fi +$else$ + \setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} +$endif$ +$endif$ +$if(CJKmainfont)$ + \ifXeTeX + \usepackage{xeCJK} + \setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$} + \fi +$endif$ +$if(luatexjapresetoptions)$ + \ifLuaTeX + \usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset} + \fi +$endif$ +$if(CJKmainfont)$ + \ifLuaTeX + \usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec} + \setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$} + \fi +$endif$ +\fi +$if(zero-width-non-joiner)$ +%% Support for zero-width non-joiner characters. +\makeatletter +\def\zerowidthnonjoiner{% + % Prevent ligatures and adjust kerning, but still support hyphenating. + \texorpdfstring{% + \TextOrMath{\nobreak\discretionary{-}{}{\kern.03em}% + \ifvmode\else\nobreak\hskip\z@skip\fi}{}% + }{}% +} +\makeatother +\ifPDFTeX + \DeclareUnicodeCharacter{200C}{\zerowidthnonjoiner} +\else + \catcode`^^^^200c=\active + \protected\def ^^^^200c{\zerowidthnonjoiner} +\fi +%% End of ZWNJ support +$endif$ +% Use upquote if available, for straight quotes in verbatim environments +\IfFileExists{upquote.sty}{\usepackage{upquote}}{} +\IfFileExists{microtype.sty}{% use microtype if available + \usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype} + \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts +}{} +$if(indent)$ +$else$ +\makeatletter +\@ifundefined{KOMAClassName}{% if non-KOMA class + \IfFileExists{parskip.sty}{% + \usepackage{parskip} + }{% else + \setlength{\parindent}{0pt} + \setlength{\parskip}{6pt plus 2pt minus 1pt}} +}{% if KOMA class + \KOMAoptions{parskip=half}} +\makeatother +$endif$ +$if(verbatim-in-note)$ +\usepackage{fancyvrb} +$endif$ +\usepackage{xcolor} +$if(geometry)$ +$if(beamer)$ +\geometry{$for(geometry)$$geometry$$sep$,$endfor$} +$else$ +\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry} +$endif$ +$endif$ +$if(beamer)$ +\newif\ifbibliography +$endif$ +$if(listings)$ +\usepackage{listings} +\newcommand{\passthrough}[1]{#1} +\lstset{defaultdialect=[5.3]Lua} +\lstset{defaultdialect=[x86masm]Assembler} +$endif$ +$if(lhs)$ +\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} +$endif$ +$if(highlighting-macros)$ +$highlighting-macros$ +$endif$ +$if(tables)$ +\usepackage{longtable,booktabs,array} +$if(multirow)$ +\usepackage{multirow} +$endif$ +\usepackage{calc} % for calculating minipage widths +$if(beamer)$ +\usepackage{caption} +% Make caption package work with longtable +\makeatletter +\def\fnum@table{\tablename~\thetable} +\makeatother +$else$ +% Correct order of tables after \paragraph or \subparagraph +\usepackage{etoolbox} +\makeatletter +\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{} +\makeatother +% Allow footnotes in longtable head/foot +\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}} +\makesavenoteenv{longtable} +$endif$ +$endif$ +$if(graphics)$ +\usepackage{graphicx} +\makeatletter +\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} +\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi} +\makeatother +% Scale images if necessary, so that they will not overflow the page +% margins by default, and it is still possible to overwrite the defaults +% using explicit options in \includegraphics[width, height, ...]{} +\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} +% Set default figure placement to htbp +\makeatletter +\def\fps@figure{htbp} +\makeatother +$endif$ +$if(svg)$ +\usepackage{svg} +$endif$ +$if(strikeout)$ +$-- also used for underline +\usepackage{soul} +$endif$ +\setlength{\emergencystretch}{3em} % prevent overfull lines +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} +$if(numbersections)$ +\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$} +$else$ +\setcounter{secnumdepth}{-\maxdimen} % remove section numbering +$endif$ +$if(beamer)$ +$else$ +$if(block-headings)$ +% Make \paragraph and \subparagraph free-standing +\ifx\paragraph\undefined\else + \let\oldparagraph\paragraph + \renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}} +\fi +\ifx\subparagraph\undefined\else + \let\oldsubparagraph\subparagraph + \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}} +\fi +$endif$ +$endif$ +$if(pagestyle)$ +\pagestyle{$pagestyle$} +$endif$ +$if(csl-refs)$ +\newlength{\cslhangindent} +\setlength{\cslhangindent}{1.5em} +\newlength{\csllabelwidth} +\setlength{\csllabelwidth}{3em} +\newlength{\cslentryspacingunit} % times entry-spacing +\setlength{\cslentryspacingunit}{\parskip} +\newenvironment{CSLReferences}[2] % #1 hanging-ident, #2 entry spacing + {% don't indent paragraphs + \setlength{\parindent}{0pt} + % turn on hanging indent if param 1 is 1 + \ifodd #1 + \let\oldpar\par + \def\par{\hangindent=\cslhangindent\oldpar} + \fi + % set entry spacing + \setlength{\parskip}{#2\cslentryspacingunit} + }% + {} +\usepackage{calc} +\newcommand{\CSLBlock}[1]{#1\hfill\break} +\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{#1}} +\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{#1}\break} +\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1} +$endif$ +$if(lang)$ +\ifLuaTeX +\usepackage[bidi=basic]{babel} +\else +\usepackage[bidi=default]{babel} +\fi +$if(babel-lang)$ +\babelprovide[main,import]{$babel-lang$} +$endif$ +$for(babel-otherlangs)$ +\babelprovide[import]{$babel-otherlangs$} +$endfor$ +% get rid of language-specific shorthands (see #6817): +\let\LanguageShortHands\languageshorthands +\def\languageshorthands#1{} +$endif$ +$for(header-includes)$ +$header-includes$ +$endfor$ +\ifLuaTeX + \usepackage{selnolig} % disable illegal ligatures +\fi +$if(dir)$ +\ifPDFTeX + \TeXXeTstate=1 + \newcommand{\RL}[1]{\beginR #1\endR} + \newcommand{\LR}[1]{\beginL #1\endL} + \newenvironment{RTL}{\beginR}{\endR} + \newenvironment{LTR}{\beginL}{\endL} +\fi +$endif$ +$if(natbib)$ +\usepackage[$natbiboptions$]{natbib} +\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$} +$endif$ +$if(biblatex)$ +\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex} +$for(bibliography)$ +\addbibresource{$bibliography$} +$endfor$ +$endif$ +$if(nocite-ids)$ +\nocite{$for(nocite-ids)$$it$$sep$, $endfor$} +$endif$ +$if(csquotes)$ +\usepackage{csquotes} +$endif$ +\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} +\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available +\urlstyle{$if(urlstyle)$$urlstyle$$else$same$endif$} +$if(links-as-notes)$ +% Make links footnotes instead of hotlinks: +\DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}} +$endif$ +$if(verbatim-in-note)$ +\VerbatimFootnotes % allow verbatim text in footnotes +$endif$ +\hypersetup{ +$if(title-meta)$ + pdftitle={$title-meta$}, +$endif$ +$if(author-meta)$ + pdfauthor={$author-meta$}, +$endif$ +$if(lang)$ + pdflang={$lang$}, +$endif$ +$if(subject)$ + pdfsubject={$subject$}, +$endif$ +$if(keywords)$ + pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$}, +$endif$ +$if(colorlinks)$ + colorlinks=true, + linkcolor={$if(linkcolor)$$linkcolor$$else$Maroon$endif$}, + filecolor={$if(filecolor)$$filecolor$$else$Maroon$endif$}, + citecolor={$if(citecolor)$$citecolor$$else$Blue$endif$}, + urlcolor={$if(urlcolor)$$urlcolor$$else$Blue$endif$}, +$else$ +$if(boxlinks)$ +$else$ + hidelinks, +$endif$ +$endif$ + pdfcreator={LaTeX via pandoc}} + +$if(title)$ +\title{$title$$if(thanks)$\thanks{$thanks$}$endif$} +$endif$ +$if(subtitle)$ +$if(beamer)$ +$else$ +\usepackage{etoolbox} +\makeatletter +\providecommand{\subtitle}[1]{% add subtitle to \maketitle + \apptocmd{\@title}{\par {\large #1 \par}}{}{} +} +\makeatother +$endif$ +\subtitle{$subtitle$} +$endif$ +\author{$for(author)$$author$$sep$ \and $endfor$} +\date{$date$} +$if(beamer)$ +$if(institute)$ +\institute{$for(institute)$$institute$$sep$ \and $endfor$} +$endif$ +$if(titlegraphic)$ +\titlegraphic{\includegraphics{$titlegraphic$}} +$endif$ +$if(logo)$ +\logo{\includegraphics{$logo$}} +$endif$ +$endif$ + +% OVERRIDES +\newkomavar{opening} +\newkomavar{closing} + +\KOMAoptions{fromemail=false} +\KOMAoptions{fromfax=false} +\KOMAoptions{fromlogo=false} +\KOMAoptions{frommobilephone=false} +\KOMAoptions{fromphone=false} +\KOMAoptions{fromurl=false} +\KOMAoptions{fromalign=right} + +\setkomavar{opening}{Sehr geehrte Damen und Herren,} +\setkomavar{closing}{Mit freundlichen Grüßen} +\setkomavar*{enclseparator}{Anlagen} + +$for(letteroption)$ +\LoadLetterOption{$letteroption$} +$endfor$ + +$if(addresseeimage)$\setkomavar{addresseeimage}{$addresseeimage$}$endif$ +$if(backaddress)$\setkomavar{backaddress}{$backaddress$}\KOMAoptions{backaddress=true}$endif$ +$if(backaddressseparator)$\setkomavar{backaddressseparator}{$backaddressseparator$}$endif$ +$if(ccseparator)$\setkomavar{ccseparator}{$ccseparator$}$endif$ +$if(customer)$\setkomavar{customer}{$customer$}$endif$ +$if(date)$\setkomavar{date}{$date$}$endif$ +$if(emailseparator)$\setkomavar{emailseparator}{$emailseparator$}$endif$ +$if(enclseparator)$\setkomavar{enclseparator}{$enclseparator$}$endif$ +$if(faxseparator)$\setkomavar{faxseparator}{$faxseparator$}$endif$ +$if(firstfoot)$\setkomavar{firstfoot}{$firstfoot$}$endif$ +$if(firsthead)$\setkomavar{firsthead}{$firsthead$}$endif$ +$if(fromaddress)$\setkomavar{fromaddress}{$fromaddress$}$endif$ +$if(frombank)$\setkomavar{frombank}{$frombank$}$endif$ +$if(fromemail)$\setkomavar{fromemail}{$fromemail$}\KOMAoptions{fromemail=true}$endif$ +$if(fromfax)$\setkomavar{fromfax}{$fromfax$}\KOMAoptions{fromfax=true}$endif$ +$if(fromlogo)$\setkomavar{fromlogo}{$fromlogo$}\KOMAoptions{fromlogo=true}$endif$ +$if(frommobilephone)$\setkomavar{frommobilephone}{$frommobilephone$}\KOMAoptions{frommobilephone=true}$endif$ +$if(fromname)$\setkomavar{fromname}{$fromname$}$endif$ +$if(fromphone)$\setkomavar{fromphone}{$fromphone$}\KOMAoptions{fromphone=true}$endif$ +$if(fromurl)$\setkomavar{fromurl}{$fromurl$}\KOMAoptions{fromurl=true}$endif$ +$if(fromzipcode)$\setkomavar{fromzipcode}{$fromzipcode$}$endif$ +$if(invoice)$\setkomavar{invoice}{$invoice$}$endif$ +$if(location)$\setkomavar{location}{$location$}$endif$ +$if(myref)$\setkomavar{myref}{$myref$}$endif$ +$if(nextfoot)$\setkomavar{nextfoot}{$nextfoot$}$endif$ +$if(nexthead)$\setkomavar{nexthead}{$nexthead$}$endif$ +$if(phoneseparator)$\setkomavar{phoneseparator}{$phoneseparator$}$endif$ +$if(place)$\setkomavar{place}{$place$}$endif$ +$if(placeseparator)$\setkomavar{placeseparator}{$placeseparator$}$endif$ +$if(PPdatamatrix)$\setkomavar{PPdatamatrix}{$PPdatamatrix$}$endif$ +$if(PPcode)$\setkomavar{PPcode}{$PPcode$}$endif$ +$if(signature)$\setkomavar{signature}{$signature$}\renewcommand*{\raggedsignature}{\raggedright}$endif$ +$if(specialmail)$\setkomavar{specialmail}{$specialmail$}$endif$ +$if(subject)$\setkomavar{subject}{$subject$}$endif$ +$if(subjectseparator)$\setkomavar{placeseparator}{$placeseparator$}$endif$ +$if(title)$\setkomavar{title}{$title$}$endif$ +$if(toaddress)$\setkomavar{toaddress}{$toaddress$}\KOMAoptions{toaddress=true}$endif$ +$if(toname)$\setkomavar{toname}{$toname$}\KOMAoptions{toname=true}$endif$ +$if(yourmail)$\setkomavar{yourmail}{$yourmail$}$endif$ +$if(yourref)$\setkomavar{yourref}{$yourref$}$endif$ +$if(zipcodeseparator)$\setkomavar{zipcodeseparator}{$zipcodeseparator$}$endif$ +$if(enclseparator)$\setkomavar{enclseparator}{$enclseparator$}$endif$ +$if(fromalign)$\KOMAoptions{fromalign=$fromalign$}$endif$ +$if(customername)$\setkomavar*{customer}{$customername$}$endif$ +$if(datename)$\setkomavar*{date}{$datename$}$endif$ +$if(invoicename)$\setkomavar*{invoice}{$invoicename$}$endif$ +$if(myrefname)$\setkomavar*{myref}{$myrefname$}$endif$ +$if(yourmailname)$\setkomavar*{yourmail}{$yourmailname$}$endif$ +$if(yourrefname)$\setkomavar*{yourref}{$yourrefname$}$endif$ +$if(opening)$\setkomavar{opening}{$opening$}$endif$ +$if(closing)$\setkomavar{closing}{$closing$}$endif$ +$if(enclseparator)$\setkomavar*{enclseparator}{$enclseparator$}$endif$ +% END OVERRIDES + +\begin{document} +$if(has-frontmatter)$ +\frontmatter +$endif$ +$if(title)$ +$if(beamer)$ +\frame{\titlepage} +$else$ +\maketitle +$endif$ +$if(abstract)$ +\begin{abstract} +$abstract$ +\end{abstract} +$endif$ +$endif$ + +$for(include-before)$ +$include-before$ + +$endfor$ +$if(toc)$ +$if(toc-title)$ +\renewcommand*\contentsname{$toc-title$} +$endif$ +$if(beamer)$ +\begin{frame}[allowframebreaks] +$if(toc-title)$ + \frametitle{$toc-title$} +$endif$ + \tableofcontents[hideallsubsections] +\end{frame} +$else$ +{ +$if(colorlinks)$ +\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$} +$endif$ +\setcounter{tocdepth}{$toc-depth$} +\tableofcontents +} +$endif$ +$endif$ +$if(lof)$ +\listoffigures +$endif$ +$if(lot)$ +\listoftables +$endif$ +$if(linestretch)$ +\setstretch{$linestretch$} +$endif$ +$if(has-frontmatter)$ +\mainmatter +$endif$ + +% OVERRIDES +\begin{letter}{% +$to$ +} +\opening{\usekomavar{opening}} +% END OVERRIDES +$body$ +% OVERRIDES +\closing{\usekomavar{closing}} +$if(ps)$\ps{$ps$}$endif$ +$if(encl)$\encl{$encl$}$endif$ +% END OVERRIDES + +$if(has-frontmatter)$ +\backmatter +$endif$ +$if(natbib)$ +$if(bibliography)$ +$if(biblio-title)$ +$if(has-chapters)$ +\renewcommand\bibname{$biblio-title$} +$else$ +\renewcommand\refname{$biblio-title$} +$endif$ +$endif$ +$if(beamer)$ +\begin{frame}[allowframebreaks]{$biblio-title$} + \bibliographytrue +$endif$ + \bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$} +$if(beamer)$ +\end{frame} +$endif$ + +$endif$ +$endif$ +$if(biblatex)$ +$if(beamer)$ +\begin{frame}[allowframebreaks]{$biblio-title$} + \bibliographytrue + \printbibliography[heading=none] +\end{frame} +$else$ +\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$ +$endif$ + +$endif$ +$for(include-after)$ +$include-after$ + +$endfor$ +% OVERRIDES +$if(cc)$ +\cc{$cc$} +$endif$ +\end{letter} +% END OVERRIDES +\end{document} diff --git a/writing/.local/share/pandoc/templates/resume.latex b/writing/.local/share/pandoc/templates/resume.latex new file mode 100644 index 0000000..6cd2737 --- /dev/null +++ b/writing/.local/share/pandoc/templates/resume.latex @@ -0,0 +1,105 @@ +% LaTeX Resume Pandoc Template jb2resume.latex +% +% Copyright (c) 2016-2017, John Bokma +% Based on Jason Blevins' LaTeX CV Template; +% http://jblevins.org/projects/cv-template/ +% Adapted by Marty Oehme, 2022 +% +% GitHub: https://github.com/john-bokma/resume-pandoc + +\documentclass[$if(fontsize)$$fontsize$$else$10pt$endif$,letterpaper]{article} + +\usepackage{hyperref} +\usepackage{geometry} +\usepackage{enumitem} +\usepackage{underscore} +\usepackage[parfill]{parskip} +\usepackage{lmodern} +\usepackage[svgnames]{xcolor} +\usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc} +\usepackage[utf8]{inputenc} + +% Your name on the resume +\def\name{$name$} + +% The following metadata will show up in the PDF properties +\hypersetup{ + colorlinks = true, + urlcolor=$if(urlcolor)$$urlcolor$$else$blue$endif$, + linkcolor=$if(linkcolor)$$linkcolor$$else$magenta$endif$, + pdfauthor = {\name}, + pdfkeywords = {$keywords$}, + pdftitle = {\name: Curriculum Vitae}, + pdfsubject = {Curriculum Vitae}, + pdfpagemode = UseNone +} + +\geometry{ + left=0.5in, + top=0.5in, + right=0.5in, +} +\renewcommand{\baselinestretch}{1} + +% Fix for "! Undefined control sequence. \tightlist", +% see: https://github.com/osener/markup.rocks/issues/4 +% I have this issue with Pandoc 1.17.2 +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} + +% Page number is top right, and it is possible to control the rest of +% the header. +\pagestyle{myheadings} +\markright{\name} +\thispagestyle{empty} + +% Custom section fonts +\usepackage{sectsty} +$if(section-color)$ +\sectionfont{\color{$section-color$}\sffamily\bfseries\Large} +$else$ +\sectionfont{\rmfamily\mdseries\Large} +$endif$ +\subsectionfont{\rmfamily\mdseries\itshape\large} + +% Section numbers or not (default) +$if(numbersections)$ +\setcounter{secnumdepth}{5} +$else$ +\setcounter{secnumdepth}{0} +$endif$ + +% By putting an empty \item[] at the start of the list, the list +% starts on a new line. +\setlist[itemize]{leftmargin=1em,label={--},before=\item[]} + +\setlist[description]{leftmargin=0em, style=sameline} + +% Don't use monospace font for URLs +\urlstyle{same} + +\begin{document} + +% Place name at left +$if(name-color)$ +{\huge\color{$name-color$}\sffamily\bfseries \name} +$else$ +{\huge \name} +$endif$ + +\bigskip + +$if(left-column)$ +\begin{minipage}[t]{0.495\textwidth} + $for(left-column)$$left-column$$sep$ \\ $endfor$ +\end{minipage} % Don't use empty lines after \end and the next \begin{minipage}. +$endif$ +$if(right-column)$ +\begin{minipage}[t]{0.495\textwidth} + $for(right-column)$$right-column$$sep$ \\ $endfor$ +\end{minipage} +$endif$ + +$body$ + +\end{document} From eb9fa8a156bfce493453f80af3eb6f0fe5bd01d4 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Tue, 20 Jun 2023 13:30:24 +0200 Subject: [PATCH 5/7] nvim: Fix zk plugin and lsp loading correctly The plugin was not loading since lazyloading was not given an event to start it with. Now, anytime any zk command is given, or we enter a prose-like filetype the plugin is sourced. The zk lsp on the other hand was started twice whenever the plugin was loaded, since we also loaded it through the lspconfig manually. This commit fixes both issues by sourcing and plugin and letting the plugin load the lsp as well. --- nvim/.config/nvim/lua/plugins/config/lsp.lua | 1 - nvim/.config/nvim/lua/plugins/prose.lua | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/nvim/.config/nvim/lua/plugins/config/lsp.lua b/nvim/.config/nvim/lua/plugins/config/lsp.lua index 645c640..14dc916 100644 --- a/nvim/.config/nvim/lua/plugins/config/lsp.lua +++ b/nvim/.config/nvim/lua/plugins/config/lsp.lua @@ -37,7 +37,6 @@ local servers = { texlab = {}, tsserver = {}, yamlls = {}, - zk = {}, } local function on_attach(client, bufnr) diff --git a/nvim/.config/nvim/lua/plugins/prose.lua b/nvim/.config/nvim/lua/plugins/prose.lua index cc7dc2d..758c8e2 100644 --- a/nvim/.config/nvim/lua/plugins/prose.lua +++ b/nvim/.config/nvim/lua/plugins/prose.lua @@ -37,6 +37,21 @@ return { config = function() require("zk").setup({ picker = "telescope" }) end, + ft = writing_ft, + cmd = { + "ZkBacklinks", + "ZkCd", + "ZkIndex", + "ZkInsertLink", + "ZkInsertLinkAtSelection", + "ZkLinks", + "ZkMatch", + "ZkNew", + "ZkNewFromContentSelection", + "ZkNewFromTitleSelection", + "ZkNotes", + "ZkTags", + }, }, -- simple static markdown linking and link following using zettel IDs { "marty-oehme/zettelkasten.nvim", ft = writing_ft, event = "VeryLazy" }, From a689d7cc3d9dd371c14196c230c4e184b7782f5c Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Tue, 20 Jun 2023 14:08:36 +0200 Subject: [PATCH 6/7] nvim: Fix prettier formatting timeout Add a longer timeout to give prettier time to read and format each file, especially useful for longer files. --- nvim/.config/nvim/lua/plugins/config/lsp.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nvim/.config/nvim/lua/plugins/config/lsp.lua b/nvim/.config/nvim/lua/plugins/config/lsp.lua index 14dc916..7932f05 100644 --- a/nvim/.config/nvim/lua/plugins/config/lsp.lua +++ b/nvim/.config/nvim/lua/plugins/config/lsp.lua @@ -110,7 +110,7 @@ local function on_attach(client, bufnr) if vim.g.format_on_save then require("lsp-setup.utils").format_on_save(client) - end + end end lsp.setup({ @@ -153,6 +153,7 @@ require("mason-null-ls").setup({ prettier = function(_, _) null_ls.register(null_ls.builtins.formatting.prettier.with({ extra_filetypes = { "astro" }, + timeout = 7000, })) end, eslint = function(_, _) From 1c8c5ca6d98d0f90f6ced35e6f113a5631c8d5e7 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Tue, 20 Jun 2023 14:09:48 +0200 Subject: [PATCH 7/7] nvim: Add conditional vale diagnostics When writing a markdown or similar document, vale will automatically be enabled if there is a '.vale.ini' or '_vale.ini' file (and a corresponding styles folder) in the project root directory. Otherwise, vale stays disabled. --- nvim/.config/nvim/lua/plugins/config/lsp.lua | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/nvim/.config/nvim/lua/plugins/config/lsp.lua b/nvim/.config/nvim/lua/plugins/config/lsp.lua index 7932f05..90947db 100644 --- a/nvim/.config/nvim/lua/plugins/config/lsp.lua +++ b/nvim/.config/nvim/lua/plugins/config/lsp.lua @@ -142,7 +142,7 @@ end local null_ls = require("null-ls") null_ls.setup({}) require("mason-null-ls").setup({ - ensure_installed = { "black", "prettier", "shfmt", "eslint-lsp", "stylua", "jq" }, + ensure_installed = { "black", "prettier", "shfmt", "eslint-lsp", "stylua", "jq", "vale" }, automatic_installation = false, handlers = { shfmt = function(_, _) @@ -164,5 +164,12 @@ require("mason-null-ls").setup({ extra_filetypes = { "astro" }, })) end, + vale = function(_, _) + null_ls.register(null_ls.builtins.diagnostics.vale.with({ + condition = function(utils) + return (utils.root_has_file({ ".vale.ini", "_vale.ini" }) and utils.root_has_file({ "styles/" })) + end, + })) + end, }, })