summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/biblatex-contrib
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/biblatex-contrib')
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-cv/README.md20
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-cv/american-cv.lbx53
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-cv/biblatex-cv.bbx736
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-cv/biblatex-cv.cbx3
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-cv/biblatex-cv.dbx386
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-cv/biblatex-cv.sty776
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/biblatex-cv.bib347
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/biblatex-cv.pdfbin0 -> 99344 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/biblatex-cv.tex416
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/cv.pdfbin0 -> 59226 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/cv.tex40
11 files changed, 2777 insertions, 0 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-cv/README.md b/macros/latex/contrib/biblatex-contrib/biblatex-cv/README.md
new file mode 100644
index 0000000000..4134b879fc
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-cv/README.md
@@ -0,0 +1,20 @@
+Version: 0.01
+
+# Overview
+
+This LaTeX package provides an interface for creating an academic curriculum vitae (CV) from a BibTeX .bib file. The package makes use of biblatex/biber to automatically format, group, and sort the entries on a CV. Package documentation and an example CV are provided in the doc folder.
+
+# Copyright and Licence
+
+## Authors
+- Daniel E. Shub
+
+## Copyright
+- Copyright 2019 --- ... Daniel E. Shub
+
+## Licence
+This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 of this license or (at your option) any later version.
+
+The latest version of the license is in [https://www.latex-project.org/lppl.txt](https://www.latex-project.org/lppl.txt) and version 1.3 or later is part of all distributions of LaTeX version 2003/06/01 or later.
+
+This work has the LPPL maintenance status "maintained".
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-cv/american-cv.lbx b/macros/latex/contrib/biblatex-contrib/biblatex-cv/american-cv.lbx
new file mode 100644
index 0000000000..76022c7447
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-cv/american-cv.lbx
@@ -0,0 +1,53 @@
+\ProvidesFile{american-cv.lbx}[2020/03/11 v0.01 biblatex-cv localization (DES)]
+
+\InheritBibliographyExtras{american}
+\InheritBibliographyStrings{american}
+
+\NewBibliographyString{advisor, advisors, by, ci, committee, completed, concentration, contributed, convenor, doctoralthesis, externalexaminer, gpa, guestlecturer, inrevision, internalexaminer, invited, keynote, lecture, lectures, major, masters, mastersthesis, minor, month, months, numcites, ongoing, pending, phd, pi, postdoc, poster, presented, secondsupervisor, students, submitted, supervisor, talk, title, ta, undergraduate, undergraduatethesis, unsuccessful, with}
+
+\DeclareBibliographyStrings{%
+ advisor = {{advisor}{advisor}},
+ advisors = {{advisors}{advisors}},
+ by = {{by}{by}},
+ ci = {{co-investigator}{CI}},
+ committee = {{committee}{committee}},
+ completed = {{completed}{completed}},
+ concentration = {{concentration}{concentration}},
+ contributed = {{contributed}{contributed}},
+ convenor = {{module convenor}{module convenor}},
+ doctoralthesis = {{doctoral dissertation}{doctoral dissertation}},
+ externalexaminer = {{external examiner}{external examiner}},
+ gpa = {{GPA}{GPA}},
+ guestlecturer = {{guest lecturer}{guest lecturer}},
+ inrevision = {{in revision}{in revision}},
+ internalexaminer = {{internal examiner}{internal examiner}},
+ invited = {{invited}{invited}},
+ keynote = {{keynote}{keynote}},
+ lecture = {{lecture}{lecture}},
+ lectures = {{lectures}{lectures}},
+ major = {{major}{major}},
+ masters = {{masters student}{masters student}},
+ mastersthesis = {{masters thesis}{masters thesis}},
+ minor = {{minor}{minor}},
+ month = {{month}{month}},
+ months = {{months}{months}},
+ numcites = {{number of citations}{number of citations}},
+ ongoing = {{ongoing}{ongoing}},
+ pending = {{pending}{pending}},
+ phd = {{doctoral student}{doctoral student}},
+ pi = {{primary investigator}{PI}},
+ postdoc = {{postdoctoral fellow}{postdoctoral fellow}},
+ poster = {{poster}{poster}},
+ presented = {{presented}{presented}},
+ secondsupervisor = {{second supervisor}{second supervisor}},
+ students = {{students}{students}},
+ submitted = {{submitted}{submitted}},
+ supervisor = {{supervisor}{supervisor}},
+ talk = {{talk}{talk}},
+ title = {{title}{title}},
+ ta = {{teaching assistant}{teaching assistant}},
+ undergraduate = {{undergraduate student}{undergraduate student}},
+ undergraduatethesis = {{undergraduate thesis}{undergraduate thesis}},
+ unsuccessful = {{unsuccessful}{unsuccessful}},
+ with = {{with}{with}},
+}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-cv/biblatex-cv.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-cv/biblatex-cv.bbx
new file mode 100644
index 0000000000..aa1865367c
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-cv/biblatex-cv.bbx
@@ -0,0 +1,736 @@
+\ProvidesFile{biblatex-cv.bbx}[2020/03/11 v0.01 biblatex-cv bibliography style (DES)]
+
+% The author year style seems better suited for a CV than the standard style
+\RequireBibliographyStyle{authoryear}
+
+\DeclareLanguageMappingSuffix{-cv}
+
+\RequirePackage{datenumber}
+\RequirePackage{fp}
+\RequirePackage{xpatch}
+
+% The verbose setting needs to be a style option because it influences the data model
+\newtoggle{cv@blx:verbose:committee}
+\newtoggle{cv@blx:verbose:education}
+\newtoggle{cv@blx:verbose:teaching}
+
+\DeclareBibliographyOption{verbose-lists}[true]{
+ \settoggle{cv@blx:verbose:committee}{#1}
+ \settoggle{cv@blx:verbose:education}{#1}
+ \settoggle{cv@blx:verbose:teaching}{#1}
+}
+\DeclareBibliographyOption{verbose-committee}[true]{
+ \settoggle{cv@blx:verbose:committee}{#1}
+}
+\DeclareBibliographyOption{verbose-education}[true]{
+ \settoggle{cv@blx:verbose:education}{#1}
+}
+\DeclareBibliographyOption{verbose-teaching}[true]{
+ \settoggle{cv@blx:verbose:teaching}{#1}
+}
+
+% Add new toggles for the bibliography drivers
+\newtoggle{cv@blx:pubstate}
+
+\newtoggle{cv@blx:education:advisor}
+\newtoggle{cv@blx:education:committee}
+\newtoggle{cv@blx:education:gpa}
+\newtoggle{cv@blx:education:honors}
+\newtoggle{cv@blx:education:major}
+\newtoggle{cv@blx:education:minor}
+\newtoggle{cv@blx:education:title}
+\newtoggle{cv@blx:funding:hidePI}
+\newtoggle{cv@blx:funding:role}
+\newtoggle{cv@blx:funding:status}
+\newtoggle{cv@blx:presentation:subtype}
+\newtoggle{cv@blx:presentation:type}
+\newtoggle{cv@blx:student:institution}
+\newtoggle{cv@blx:student:location}
+\newtoggle{cv@blx:student:department}
+\newtoggle{cv@blx:student:type}
+\newtoggle{cv@blx:school:years}
+\newtoggle{cv@blx:teaching:institution}
+\newtoggle{cv@blx:teaching:location}
+\newtoggle{cv@blx:teaching:department}
+
+% A shorthand way to patch the bibliography drivers defined in standard.bbx except for shorthand and set
+\newcommand{\cv@blx@drivers}{article, book, booklet, collection, inbook, incollection, inproceedings, manual, misc, online, patent, periodical, proceedings, report, thesis, unpublished}
+\newcommand{\cv@blx@do}[1]{}
+\newcommand{\cv@blx@patch@drivers}{%
+ \expandafter\forcsvlist\expandafter{%
+ \expandafter\cv@blx@do\expandafter%
+ }\expandafter{\cv@blx@drivers}%
+}
+
+% Define a macro to calculate the number of months between two dates assuming that the starting and ending years, months, and days are given.
+\newcounter{cv@blx@months@start}
+\newcounter{cv@blx@months@end}
+\newcommand{\cv@blx@months}{}
+\newcommand{\cv@blx@calculate@months}{%
+ \ifboolexpr{%
+ not test {\iffieldundef{endyear}} and%
+ not test {\iffieldundef{endmonth}} and%
+ not test {\iffieldundef{endday}}%
+ }{%
+ \setmydatenumber{cv@blx@months@end}{\thefield{endyear}}{\thefield{endmonth}}{\thefield{endday}}%
+ \setmydatenumber{cv@blx@months@start}{\thefield{year}}{\thefield{month}}{\thefield{day}}%
+ \FPsub\cv@blx@months{\thecv@blx@months@end}{\thecv@blx@months@start}%
+ \FPdiv\cv@blx@months{\cv@blx@months}{365.2425}%
+ \FPmul\cv@blx@months{\cv@blx@months}{12}%
+ \FPround\cv@blx@months{\cv@blx@months}{0}%
+ }{%
+ \undef{\cv@blx@months}%
+ }%
+}
+
+% Some of the bibliography drivers require new paragraphs within the bibliography entry. Some styles just use \par without the unspacing and punctuation tracking. In reading.bbx this is accomplished with \def\newblockpunct{\item}.
+\newrobustcmd*{\addpar}{\unspace\blx@postpunct\par\nobreak\blx@imc@resetpunctfont}
+%\newrobustcmd*{\addpar}{\unspace\blx@postpunct\item\blx@imc@resetpunctfont}
+
+% Make the pubstate field controllable with a toggle and include the journal title if present
+\xpatchbibmacro{addendum+pubstate}{%
+ \printfield{pubstate}%
+}{%
+ \iftoggle{cv@blx:pubstate}{%
+ \printfield{pubstate}%
+ \ifentrytype{unpublished}{%
+ \setunit*{\addcolon\addspace}%
+ \printfield{journaltitle}%
+ }{}%
+ }{}%
+}{}{}
+
+% The extradate part of the date label from the authoryear style is not needed in a CV
+\renewbibmacro*{date+extradate}{%
+ \iffieldundef{labelyear}{}{\printtext[parens]{\printdate}}%
+}
+
+% Provide bibliometric information at the end of the reference. All bibliography drivers defined in standard.bbx, except shorthand and set, end with:
+% \newunit\newblock
+% \usebibmacro{addendum+pubstate}%
+% \setunit{\bibpagerefpunct}\newblock
+% \usebibmacro{pageref}%
+% \newunit\newblock
+% \iftoggle{bbx:related}
+% {\usebibmacro{related:init}%
+% \usebibmacro{related}}
+% {}%
+% \usebibmacro{finentry}}
+% In reading.bbx the finentry bibmacro is patched, but it seems better to add the bibliometric information after the addendum+pubstate block and before the pageref and related blocks. The bibliometrics bibmacro also prints the note. For most drivers, the note is printed with \printfield{note}, but with the article driver it is printed with the note+pages bibmacro
+\renewcommand{\cv@blx@do}[1]{%
+ \xpatchbibdriver{#1}{%
+ \setunit{\bibpagerefpunct}\newblock%
+ }{%
+ \newunit\newblock%
+ \usebibmacro{bibliometrics}%
+ \setunit{\bibpagerefpunct}\newblock%
+ }{}{}%
+}
+\cv@blx@patch@drivers
+
+\renewcommand{\cv@blx@do}[1]{%
+ \xpatchbibdriver{#1}{%
+ \printfield{note}%
+ }{%
+ }{}{}%
+}
+\cv@blx@patch@drivers
+
+\xpatchbibdriver{article}{%
+ \usebibmacro{note+pages}%
+}{%
+ \setunit{\bibpagespunct}%
+ \printfield{pages}%
+ \newunit%
+}{}{}%
+
+% Define new bibmacros
+\newbibmacro{advisor}{%
+ \ifnameundef{advisor}{}{%
+ \ifnumgreater{\value{advisor}}{1}{%
+ \bibstring{advisors}%
+ }{%
+ \bibstring{advisor}%
+ }%
+ \addcolon\addspace%
+ \printnames[given-family]{advisor}%
+ }%
+}
+
+\newbibmacro{bibliometrics}{%
+ \ifboolexpr{%
+ ( test {\iffieldundef{numcites}} or test {\iffieldequalstr{numcites}{0}} ) and%
+ test {\iffieldundef{note}}%
+ }{}{%
+ \printtext[brackets]{%
+ \iffieldundef{numcites}{}{%
+ \iffieldequalstr{numcites}{0}{}{%
+ \bibstring{numCites}\addcolon\addnbspace\printfield{numcites}%
+ }%
+ }%
+ \newunit\setunit{\addcomma\addspace}%
+ \iffieldundef{note}{}{\printfield[sentencecase]{note}}%
+ }%
+ }%
+}
+
+\newbibmacro{class}{%
+ \mkdaterangelong{}%
+ \setunit{\addcomma\addspace}%
+ \printfield{role}%
+ \setunit{\addcomma\addspace}%
+ \iffieldundef{numlectures}{}{%
+ \iffieldequalstr{numlectures}{1}{%
+ \printfield{numlectures}\addnbspace\bibstring{lecture}%
+ }{%
+ \printfield{numlectures}\addnbspace\bibstring{lectures}%
+ }%
+ }%
+ \setunit{\addcomma\addspace}%
+ \iffieldundef{numstudents}{}{\printfield{numstudents}\addnbspace\bibstring{students}}%
+ \setunit{\adddot\addpar}\newblock%
+}
+
+\newbibmacro{classes}{%
+ \iffieldundef{classes}{%
+ \setunit{\adddot\addpar}\newblock%
+ \usebibmacro{class}%
+ }{%
+ \def\do##1{%
+ \entrydata*{##1}{%
+ \setunit{\adddot\addpar}\newblock%
+ \usebibmacro{class}%
+ }%
+ }%
+ \docsvfield{classes}%
+ }%
+}
+
+\newbibmacro{committee}{%
+ \ifnameundef{committee}{}{%
+ \bibstring{committee}\addcolon\addspace%
+ \printnames[given-family]{committee}%
+ }%
+}
+
+\newbibmacro{degrees}{%
+ \def\do##1{%
+ \entrydata*{##1}{%
+ \item\usedriver{}{degree}%
+ }%
+ }%
+ \list{}{\cv@blx@sublist}%
+ \docsvfield{degreelist}%
+ \endlist%
+}
+
+\newbibmacro{degree+major}{%
+ \printfield{degree}%
+ \iftoggle{cv@blx:education:major}{%
+ \ifboolexpr{%
+ test {\iffieldundef{degree}} or%
+ test {\iffieldundef{major}}%
+ }{}{\addspace\bibstring{in}\addspace}%
+ \printfield{major}%
+ }{}%
+}
+
+\newbibmacro{department+institution+location}{%
+ \iffieldundef{saveddepartment}{%
+ \printfield{department}%
+ \setunit{\addcomma\addspace}%
+ }{}%
+ \iflistundef{savedinstitution}{%
+ \printlist{institution}%
+ \setunit{\addcomma\addspace}%
+ }{}%
+ \iflistundef{savedlocation}{%
+ \printlist{location}%
+ }{}%
+}
+
+\newbibmacro{duration}{%
+ \ifundef{\cv@blx@months}{}{%
+ \printtext{\cv@blx@months\addnbspace}%
+ \ifnumgreater{\cv@blx@months}{1}{%
+ \bibstring{months}%
+ }{%
+ \bibstring{month}%
+ }%
+ }%
+}
+
+\newbibmacro{duration+amount+status}{%
+ \cv@blx@calculate@months%
+ \ifboolexpr{
+ test {\iffieldundef{amount}} and
+ test {\ifundef{\cv@blx@months}} and
+ (
+ test {\iffieldundef{status}} or
+ not test {\iftoggle{cv@blx:funding:status}} or
+ ) and
+ (
+ test {\iffieldundef{role}} or
+ not test {\iftoggle{cv@blx:funding:role}} or
+ (
+ test {\iftoggle{cv@blx:funding:hidePI}} and
+ test {\iffieldequalstr{role}{PI}}
+ )
+ )
+ }{}{%
+ \printtext[parens]{%
+ \usebibmacro{duration}%
+ \setunit{\addcomma\addspace}%
+ \printfield{amount}%
+ \setunit{\addcomma\addspace}%
+ \iftoggle{cv@blx:funding:status}{%
+ \printfield{status}%
+ \setunit{\addcomma\addspace}%
+ }{}%
+ \iftoggle{cv@blx:funding:role}{%
+ \iftoggle{cv@blx:funding:hidePI}{%
+ \iffieldequalstr{role}{PI}{\printfield{role}}{}%
+ }{%
+ \printfield{role}%
+ }%
+ }{}%
+ }%
+ }%
+}
+
+\newbibmacro{role}{%
+ \iffieldundef{role}{}{%
+ \printtext[brackets]{%
+ \printfield{role}%
+ }%
+ }%
+}
+
+% There is some sort of bug with the loop and the seasons not getting updated correctly
+\newbibmacro{semesters}{%
+ \iffieldundef{semesters}{%
+ \mkdaterangelong{}%
+ \setunit{\addspace}%
+ \iffieldundef{role}{}{\printtext[brackets]{\printfield{role}}}%
+ \setunit{\addcomma\addspace}%
+ }{%
+ \def\do##1{%
+ \entrydata*{##1}{%
+ \mkdaterangelong{}%
+ \setunit{\addspace}%
+ \iffieldundef{role}{}{%
+ \printtext[brackets]{\printfield{role}}%
+ }%
+ \setunit{\addcomma\addspace}%
+ }%
+ }%
+ \docsvfield{semesters}%
+ }%
+}
+
+\newbibmacro{type+presenter}{%
+ \ifboolexpr{
+ (
+ test {\iftoggle{cv@blx:presentation:type}} and
+ (
+ test {\iffieldequalstr{presentationtype}{keynote}} or
+ test {\iffieldequalstr{presentationtype}{invited}}
+ )
+ ) or (
+ test {\iftoggle{cv@blx:presentation:subtype}} and
+ not test {\iffieldundef{entrysubtype}}
+ ) or (
+ not test {\ifnameundef{presenter}}
+ )
+ }{%
+ \printtext[brackets]{%
+ \ifboolexpr{
+ test {\iftoggle{cv@blx:presentation:type}} and
+ (
+ test {\iffieldequalstr{presentationtype}{keynote}} or
+ test {\iffieldequalstr{presentationtype}{invited}}
+ )
+ }{%
+ \printfield[key]{presentationtype}%
+ \setunit{\addspace}%
+ }{}%
+ \iftoggle{cv@blx:presentation:subtype}{%
+ \printfield[key]{entrysubtype}%
+ \setunit{\addspace}%
+ }{}%
+ \ifnameundef{presenter}{}{%
+ \bibstring{presented}\addspace%
+ \printnames{presenter}%
+ }%
+ }%
+ }{}%
+}
+
+\newbibmacro{yearrange}{%
+ \printfield{year}%
+ \ifboolexpr{%
+ test {\iffieldundef{endyear}} or%
+ test {\iffieldsequal{year}{endyear}}%
+ }{}{\bibrangedash\printfield{endyear}}%
+}
+
+\newbibmacro{yearrange+dash}{%
+ \printfield{year}%
+ \iffieldundef{endyear}{%
+ \bibrangedash%
+ }{%
+ \iffieldsequal{year}{endyear}{}{\bibrangedash\printfield{endyear}}%
+ }%
+}
+
+% The biblatex-cv style allows for custom entry types that do not have bibliography drivers defined in standard.bbx.
+
+% ABSTRACT
+% The abstract bibliography driver is a modified version of the article bibliography driver.
+\csletcs{blx@bbx@abstract}{blx@bbx@article}
+\DeclareFieldFormat[abstract]{citetitle}{\mkbibquote{#1\isdot}}
+\DeclareFieldFormat[abstract]{number}{#1}
+\DeclareFieldFormat[abstract]{series}{%
+ \ifinteger{#1}{%
+ \mkbibordseries{#1}~\bibstring{jourser}%
+ }{%
+ \ifbibstring{#1}{\bibstring{#1}}{#1}%
+ }%
+}
+\DeclareFieldFormat[abstract]{title}{\mkbibquote{#1\isdot}}
+\DeclareFieldFormat[abstract]{volume}{#1}
+\xpatchbibdriver{abstract}{\usebibmacro{doi+eprint+url}}{%
+ \usebibmacro{type+presenter}%
+ \newunit\newblock%
+ \usebibmacro{doi+eprint+url}%
+}{}{}
+
+% COMMITTEE
+\DeclareBibliographyDriver{committee}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{semesters}%
+ \printfield{title}%
+ \setunit{\addcomma\addspace}%
+ \usebibmacro{department+institution+location}%
+ \newunit\newblock%
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock%
+ \usebibmacro{addendum+pubstate}%
+ \newunit\newblock%
+ \usebibmacro{bibliometrics}%
+ \setunit{\bibpagerefpunct}\newblock%
+ \usebibmacro{pageref}%
+ \newunit\newblock%
+ \iftoggle{bbx:related}{%
+ \usebibmacro{related:init}%
+ \usebibmacro{related}%
+ }{}%
+ \usebibmacro{finentry}%
+}
+
+% EDUCATION
+\DeclareBibliographyDriver{school}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{department+institution+location}%
+ \setunit{\addcomma\addspace}%
+ \iftoggle{cv@blx:school:years}{%
+ \usebibmacro{yearrange}%
+ }{}%
+ \newblockpunct{\addperiod\addpar}%
+ \iftoggle{cv@blx:education:gpa}{%
+ \iffieldundef{gpa}{}{%
+ \printfield{gpa}%
+ \newblockpunct{\addpar}%
+ }%
+ }{}%
+ \iftoggle{cv@blx:education:honors}{%
+ \iflistundef{honors}{}{%
+ \bibstring{honors}\addcolon\addspace%
+ \printlist{honors}%
+ }
+ \newblockpunct{\addpar}%
+ }{}%
+ \usebibmacro{degrees}%
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock%
+ \usebibmacro{addendum+pubstate}%
+ \newunit\newblock%
+ \usebibmacro{bibliometrics}%
+ \setunit{\bibpagerefpunct}\newblock%
+ \usebibmacro{pageref}%
+ \newunit\newblock%
+ \iftoggle{bbx:related}{%
+ \usebibmacro{related:init}%
+ \usebibmacro{related}%
+ }{}%
+ \begingroup%
+ \renewcommand{\finentrypunct}{}%
+ \usebibmacro{finentry}%
+ \endgroup%
+}
+
+\DeclareBibliographyDriver{degree}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{degree+major}%
+ \setunit{\addcomma\addspace}%
+ \usebibmacro{department+institution+location}%
+ \setunit{\addcomma\addspace}%
+ \usebibmacro{yearrange}%
+ \newblockpunct{\addperiod\addpar}%
+ \iftoggle{cv@blx:education:title}{%
+ \printfield{title}%
+ \newblockpunct{\addpar}%
+ }{}%
+ \iftoggle{cv@blx:education:advisor}{%
+ \usebibmacro{advisor}%
+ \newblockpunct{\addpar}%
+ }{}%
+ \iftoggle{cv@blx:education:committee}{%
+ \usebibmacro{committee}%
+ \newblockpunct{\addpar}%
+ }{}%
+ \iftoggle{cv@blx:education:minor}{%
+ \iflistundef{minor}{}{%
+ \bibstring{minor}\addcolon\addspace%
+ \printlist{minor}%
+ }%
+ \newblockpunct{\addpar}%
+ \iflistundef{concentration}{}{%
+ \bibstring{concentration}\addcolon\addspace%
+ \printlist{concentration}%
+ }%
+ \newblockpunct{\addpar}%
+ }{}%
+ \iftoggle{cv@blx:education:gpa}{%
+ \printfield{gpa}%
+ \newblockpunct{\addpar}%
+ }{}%
+ \iftoggle{cv@blx:education:honors}{%
+ \iflistundef{honors}{}{%
+ \printlist{honors}%
+ }
+ \newblockpunct{\addpar}%
+ }{}%
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock%
+ \usebibmacro{addendum+pubstate}%
+ \newunit\newblock%
+ \usebibmacro{bibliometrics}%
+ \setunit{\bibpagerefpunct}\newblock%
+ \usebibmacro{pageref}%
+ \newunit\newblock%
+ \iftoggle{bbx:related}{%
+ \usebibmacro{related:init}%
+ \usebibmacro{related}%
+ }{}%
+ \begingroup%
+ \renewcommand{\finentrypunct}{}%
+ \usebibmacro{finentry}%
+ \endgroup%
+}
+
+% FUNDING
+\DeclareBibliographyDriver{funding}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{yearrange}%
+ \setunit{\addspace}%
+ \usebibmacro{duration+amount+status}%
+ \setunit{\addcolon\addspace}%
+ \printfield{funder}%
+ \setunit{\addcomma\addspace}%
+ \printfield{type}%
+ \setunit{\addspace}%
+ \printfield[parens]{number}%
+ \newunit\newblock%
+ \usebibmacro{title}%
+ \newunit\newblock%
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock%
+ \usebibmacro{addendum+pubstate}%
+ \newunit\newblock%
+ \usebibmacro{bibliometrics}%
+ \setunit{\bibpagerefpunct}\newblock%
+ \usebibmacro{pageref}%
+ \newunit\newblock%
+ \iftoggle{bbx:related}{%
+ \usebibmacro{related:init}%
+ \usebibmacro{related}%
+ }{}%
+ \usebibmacro{finentry}%
+}
+
+% PRESENTATION
+\DeclareBibliographyDriver{presentation}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author}%
+ \setunit{\printdelim{nametitledelim}}\newblock%
+ \usebibmacro{title}%
+ \setunit*{\adddot\addspace}%
+ \usebibmacro{department+institution+location}%
+ \newunit\newblock%
+ \usebibmacro{type+presenter}%
+ \newunit\newblock%
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock%
+ \usebibmacro{addendum+pubstate}%
+ \newunit\newblock%
+ \usebibmacro{bibliometrics}%
+ \setunit{\bibpagerefpunct}\newblock%
+ \usebibmacro{pageref}%
+ \newunit\newblock%
+ \iftoggle{bbx:related}{%
+ \usebibmacro{related:init}%
+ \usebibmacro{related}%
+ }{}%
+ \usebibmacro{finentry}%
+}
+
+% STUDENT
+\DeclareBibliographyDriver{student}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \printnames{name}%
+ \setunit{\addcomma\addspace}%
+ \iftoggle{cv@blx:student:type}{%
+ \printfield{entrysubtype}%
+ \setunit{\addcomma\addspace}%
+ }{}%
+ \usebibmacro{yearrange}%
+ \setunit{\addcomma\addspace}%
+ \iftoggle{cv@blx:student:department}{%
+ \printfield{department}%
+ \setunit{\addcomma\addspace}%
+ }{}%
+ \iftoggle{cv@blx:student:institution}{%
+ \printlist{institution}%
+ \setunit{\addcomma\addspace}%
+ }{}%
+ \iftoggle{cv@blx:student:location}{%
+ \printlist{location}%
+ \setunit{\addcomma\addspace}%
+ }{}%
+ \newunit\newblock%
+ \usebibmacro{role}%
+ \newunit\newblock%
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock%
+ \usebibmacro{addendum+pubstate}%
+ \newunit\newblock%
+ \usebibmacro{bibliometrics}%
+ \setunit{\bibpagerefpunct}\newblock%
+ \usebibmacro{pageref}%
+ \newunit\newblock%
+ \iftoggle{bbx:related}{%
+ \usebibmacro{related:init}%
+ \usebibmacro{related}%
+ }{}%
+ \usebibmacro{finentry}%
+}
+
+% TEACHING
+\DeclareBibliographyDriver{teaching}{%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \printfield{title}%
+ \setunit{\addspace}%
+ \printfield[parens]{number}%
+ \setunit{\addcomma\addspace}%
+ \iftoggle{cv@blx:teaching:department}{%
+ \printfield{department}%
+ \setunit{\addcomma\addspace}%
+ }{}%
+ \iftoggle{cv@blx:teaching:institution}{%
+ \printlist{institution}%
+ \setunit{\addcomma\addspace}%
+ }{}%
+ \iftoggle{cv@blx:teaching:location}{%
+ \printlist{location}%
+ \setunit{\addcomma\addspace}%
+ }{}%
+ \newunit\newblock%
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock%
+ \usebibmacro{addendum+pubstate}%
+ \newunit\newblock%
+ \usebibmacro{bibliometrics}%
+ \setunit{\bibpagerefpunct}\newblock%
+ \usebibmacro{pageref}%
+ \newunit\newblock%
+ \iftoggle{cv@blx:verbose:teaching}{%
+ \usebibmacro{classes}%
+ }{%
+ \setunit{\adddot\addspace}\newblock%
+ \usebibmacro{class}%
+ }%
+ \iftoggle{bbx:related}{%
+ \usebibmacro{related:init}%
+ \usebibmacro{related}%
+ }{}%
+ \usebibmacro{finentry}%
+}
+
+% Define new field formats
+
+% Allow key datatypes to access localization strings
+\DeclareFieldFormat{key}{\ifbibstring{#1}{\bibstring{#1}}{#1}}
+\DeclareFieldFormat{role}{\ifbibstring{#1}{\bibstring{#1}}{#1}}
+\DeclareFieldFormat{status}{\ifbibstring{#1}{\bibstring{#1}}{#1}}
+
+\DeclareFieldFormat[committee]{title}{#1}
+
+\DeclareFieldFormat[degree]{degree}{#1\isdot}
+\DeclareFieldFormat[degree]{title}{\bibstring{title}\addcolon\addspace#1}
+\DeclareFieldFormat[school, degree]{gpa}{\bibstring{gpa}\addcolon\addspace#1}
+
+\DeclareFieldFormat[funding]{amount}{\printfield{currency}#1}
+
+\DeclareFieldFormat[teaching]{title}{#1}
+
+\DeclareFieldFormat[student]{entrysubtype}{\ifbibstring{#1}{\bibstring{#1}}{#1}}
+
+\DeclareFieldFormat[course]{related}{\mkbibparens{#1}}
+
+% The date label from the authoryear style includes "no date" which is not needed in a CV
+\DeclareLabeldate{%
+ \field{date}
+ \field{year}
+ \field{eventdate}
+ \field{origdate}
+ \field{urldate}
+}
+
+% Redefine ydnt sorting to sort by endyear. Taken from biblatex.def
+\DeclareSortingTemplate{ydnt}{
+ \sort{
+ \field{presort}
+ }
+ \sort[final]{
+ \field{sortkey}
+ }
+ \sort[final, direction=descending]{
+ \field{sortyear}
+ \field[padwidth = 4, padchar = 9]{endyear}
+ }
+ \sort[direction=descending]{
+ \field{sortyear}
+ \field{year}
+ \literal{9999}
+ }
+ \sort{
+ \field{sortname}
+ \field{author}
+ \field{editor}
+ \field{translator}
+ \field{sorttitle}
+ \field{title}
+ }
+ \sort{
+ \field{sorttitle}
+ \field{title}
+ }
+}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-cv/biblatex-cv.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-cv/biblatex-cv.cbx
new file mode 100644
index 0000000000..80cff4e9ff
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-cv/biblatex-cv.cbx
@@ -0,0 +1,3 @@
+\ProvidesFile{biblatex-cv.cbx}[2020/03/11 v0.01 biblatex-cv citation style (DES)]
+
+\RequireCitationStyle{authoryear}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-cv/biblatex-cv.dbx b/macros/latex/contrib/biblatex-contrib/biblatex-cv/biblatex-cv.dbx
new file mode 100644
index 0000000000..745ab411bc
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-cv/biblatex-cv.dbx
@@ -0,0 +1,386 @@
+\ProvidesFile{biblatex-cv.dbx}[2020/03/11 v0.01 biblatex-cv data model (DES)]
+
+% Add new data fields for both existing and new entry types
+\DeclareDatamodelFields[type=list, datatype=name]{advisor, committee, name, presenter}
+\DeclareDatamodelFields[type=list, datatype=literal]{concentration, honors, minor}
+\DeclareDatamodelFields[type=field, datatype=integer]{amount, numcites, numlectures, numstudents}
+\DeclareDatamodelFields[type=field, datatype=literal]{currency, degree, department, funder, gpa, major, presentationtype}
+\DeclareDatamodelFields[type=field, datatype=key]{role, status}
+\DeclareDatamodelFields[type=field, format=xsv, datatype=entrykey]{classes, degreelist, semesters}
+
+% For all name lists, create a new field to indicate if a name has been deleted from the list
+\newcommand{\cv@blx@tempa}[1]{%
+ \newtoggle{cv@blx:delete:#1}%
+ \DeclareDatamodelFields[type=field, datatype=integer]{#1deleted}%
+}
+\forcsvlist{\cv@blx@tempa}{afterword, annotator, author, bookauthor, %
+ commentator, editor, editora, editorb, editorc, foreword, holder, %
+ introduction, namea, nameb, namec, translator, shortauthor, %
+ shorteditor, advisor, committee, name, presenter%
+}
+
+% Modify the existing data model inherited from blx-dm.def
+\DeclareDatamodelConstraints{
+ \constraint[type=data, datatype=pattern, pattern=\regexp{(
+ ^forthcoming$|
+ ^inpreparation$|
+ ^inpress$|
+ ^inrevision$|
+ ^prepublished$|
+ ^submitted$
+ )}]{
+ \constraintfield{pubstate}
+ }
+}
+
+% Define global changes to the data model
+\DeclareDatamodelConstraints{
+ \constraint[type=data, datatype=pattern,
+ pattern=\regexp{(
+ ^contributed$|
+ ^internal$|
+ ^invited$|
+ ^job$|
+ ^keynote$
+ )}
+ ]{
+ \constraintfield{presentationtype}
+ }
+}
+
+% ARTICLE
+\DeclareDatamodelEntryfields[article]{numcites}
+\DeclareDatamodelConstraints[article]{
+ \constraint[type=mandatory]{
+ \constraintfield{numcites}
+ }
+}
+
+% UNPUBLISHED
+\DeclareDatamodelEntryfields[unpublished]{journaltitle}
+
+% THESIS
+\DeclareDatamodelConstraints[thesis]{
+ \constraint[type=data, datatype=pattern,
+ pattern=\regexp{(
+ ^doctoralthesis$|
+ ^mastersthesis$|
+ ^undergradthesis$
+ )}%
+ ]{
+ \constraintfield{type}
+ }
+}
+
+% Define the data model for new entry types not defined in blx-dm.def
+
+% ABSTRACT
+% The data model for the abstract entrytype is a modified version of the article entrytype data model. We start by copying the article data model from blx-dm.def
+\DeclareDatamodelEntrytypes{abstract}
+\DeclareDatamodelEntryfields[abstract]{
+ addendum,
+ annotator,
+ author,
+ commentator,
+ doi,
+ editor,
+ editora,
+ editorb,
+ editorc,
+ editortype,
+ editoratype,
+ editorbtype,
+ editorctype,
+ eid,
+ eprint,
+ eprintclass,
+ eprinttype,
+ issn,
+ issue,
+ issuetitle,
+ issuesubtitle,
+ journalsubtitle,
+ journaltitle,
+ language,
+ note,
+ number,
+ origlanguage,
+ pages,
+ pubstate,
+ series,
+ subtitle,
+ title,
+ titleaddon,
+ translator,
+ version,
+ volume,
+}
+\DeclareDatamodelConstraints[abstract]{
+ \constraint[type=mandatory]{
+ \constraintfieldsxor{
+ \constraintfield{date}
+ \constraintfield{year}
+ }
+ \constraintfield{author}
+ \constraintfield{journaltitle}
+ \constraintfield{title}
+ }
+}
+
+\DeclareDatamodelEntryfields[abstract]{
+ entrysubtype,
+ presentationtype,
+ presenter,
+ presenterdeleted,
+}
+\DeclareDatamodelConstraints[abstract]{
+ \constraint[type=mandatory]{
+ \constraintfield{entrysubtype}
+ \constraintfield{presentationtype}
+ \constraintfieldsor{
+ \constraintfield{presenter}
+ \constraintfield{presenterdeleted}
+ }
+ }
+ \constraint[type=data, datatype=pattern,
+ pattern=\regexp{(^poster$|^talk$|)}
+ ]{
+ \constraintfield{entrysubtype}
+ }
+}
+
+% COMMITTEE
+\DeclareDatamodelEntrytypes{committee}
+\DeclareDatamodelEntryfields[committee]{
+ date,day,endday,endmonth,endyear,month,year,
+ entrysubtype,
+ title,
+ institution,
+ location,
+ department,
+ role,
+ semesters,
+}
+\DeclareDatamodelConstraints[committee]{
+ \constraint[type=mandatory]{
+ \constraintfieldsor{
+ \constraintfield{date}
+ \constraintfield{semesters}
+ }
+ \constraintfield{entrysubtype}
+ \constraintfield{title}
+ \constraintfield{institution}
+ }
+ \constraint[type=data, datatype=pattern, pattern=\regexp{(%
+ ^departmental$|
+ ^external$|
+ ^institutional$
+ )}]{
+ \constraintfield{entrysubtype}
+ }
+}
+
+% EDUCATION
+\DeclareDatamodelEntrytypes{school}
+\DeclareDatamodelEntryfields[school]{
+ date,day,endday,endmonth,endyear,month,year,
+ institution,
+ location,
+ department,
+ degreelist,
+ gpa,
+ honors,
+}
+\DeclareDatamodelConstraints[school]{
+ \constraint[type=mandatory]{
+ \constraintfieldsxor{
+ \constraintfield{date}
+ \constraintfield{year}
+ }
+ \constraintfield{institution}
+ \constraintfield{location}
+ }
+}
+
+\DeclareDatamodelEntrytypes{degree}
+\DeclareDatamodelEntryfields[degree]{
+ date,day,endday,endmonth,endyear,month,year,
+ institution,
+ location,
+ department,
+ degree,
+ gpa,
+ honors,
+ major,
+ minor,
+ concentration,
+ advisor,
+ committee,
+ title,
+}
+\DeclareDatamodelConstraints[degree]{
+ \constraint[type=mandatory]{
+ \constraintfieldsxor{
+ \constraintfield{date}
+ \constraintfield{year}
+ }
+ \constraintfield{institution}
+ \constraintfield{location}
+ }
+}
+
+% FUNDING
+\DeclareDatamodelEntrytypes{funding}
+\DeclareDatamodelEntryfields[funding]{
+ date,day,endday,endmonth,endyear,month,year,
+ entrysubtype,
+ status,
+ author,
+ funder,
+ title,
+ role,
+ amount,
+ currency,
+ number,
+ type,
+}
+\DeclareDatamodelConstraints[funding]{
+ \constraint[type=mandatory]{
+ \constraintfieldsxor{
+ \constraintfield{date}
+ \constraintfield{year}
+ }
+ \constraintfield{entrysubtype}
+ \constraintfield{status}
+ \constraintfield{author}
+ \constraintfield{funder}
+ }
+ \constraint[type=data, datatype=pattern, pattern=\regexp{(^individual$|^institutional$)}]{
+ \constraintfield{entrysubtype}
+ }
+ \constraint[
+ type=data, datatype=pattern,
+ pattern=\regexp{(^completed$|^ongoing$|^pending$|^submitted$|^unsuccessful$)}
+ ]{
+ \constraintfield{status}
+ }
+}
+
+% PRESENTATION
+\DeclareDatamodelEntrytypes{presentation}
+\DeclareDatamodelEntryfields[presentation]{
+ date,day,endday,endmonth,endyear,month,year,
+ entrysubtype,
+ author,
+ presentationtype,
+ presenter,
+ presenterdeleted,
+ title,
+ institution,
+ location,
+ department,
+}
+\DeclareDatamodelConstraints[presentation]{
+ \constraint[type=mandatory]{
+ \constraintfieldsxor{
+ \constraintfield{date}
+ \constraintfield{year}
+ }
+ \constraintfield{entrysubtype}
+ \constraintfield{author}
+ \constraintfield{presentationtype}
+ \constraintfieldsor{
+ \constraintfield{presenter}
+ \constraintfield{presenterdeleted}
+ }
+ \constraintfield{title}
+ \constraintfield{institution}
+ \constraintfield{location}
+ }
+ \constraint[type=data, datatype=pattern,
+ pattern=\regexp{(^poster$|^talk$|)}
+ ]{
+ \constraintfield{entrysubtype}
+ }
+}
+
+% STUDENT
+\DeclareDatamodelEntrytypes{student}
+\DeclareDatamodelEntryfields[student]{
+ date,day,endday,endmonth,endyear,month,year,
+ entrysubtype,
+ role,
+ name,
+ institution,
+ location,
+ department,
+}
+\DeclareDatamodelConstraints[student]{
+ \constraint[type=mandatory]{
+ \constraintfieldsxor{
+ \constraintfield{date}
+ \constraintfield{year}
+ }
+ \constraintfield{entrysubtype}
+ \constraintfield{role}
+ \constraintfield{name}
+ \constraintfield{institution}
+ \constraintfield{location}
+ }
+ \constraint[type=data, datatype=pattern, pattern=\regexp{(^masters$|^phd$|^postdoc$|^undergraduate$)}]{
+ \constraintfield{entrysubtype}
+ }
+ \constraint[type=data, datatype=pattern, pattern=\regexp{(^externalexaminer$|^internalexaminer$|^secondsupervisor$|^supervisor$)}]{
+ \constraintfield{role}
+ }
+}
+
+% TEACHING
+\DeclareDatamodelEntrytypes{teaching}
+\DeclareDatamodelEntryfields[teaching]{
+ date,day,endday,endmonth,endyear,month,year,
+ entrysubtype,
+ title,
+ department,
+ institution,
+ location,
+ number,
+ numlectures,
+ numstudents,
+ role,
+ classes,
+}
+\DeclareDatamodelConstraints[teaching]{
+ \constraint[type=mandatory]{
+ \constraintfieldsxor{
+ \constraintfield{date}
+ \constraintfield{classes}
+ }
+ \constraintfield{entrysubtype}
+ \constraintfield{title}
+ \constraintfield{department}
+ \constraintfield{institution}
+ \constraintfield{location}
+ }
+ \constraint[type=data, datatype=pattern, pattern=\regexp{(^graduate$|^undergraduate$)}]{
+ \constraintfield{entrysubtype}
+ }
+}
+
+% ADDITIONAL FIELDS TO ADD TO SUPPORTED ENTRY TYPES
+% Education: description, coursework
+% Funding: co-investigators, description, publications
+% Student: title, funding, current position, description, publications, something to indicate students that dropped out
+% Teaching: description, textbook, objectives, rating
+
+% ADDITIONAL ENTRY TYPES NOT YET SUPPORTED:
+% Panels Organized -- Maybe this should be a subtype of \bibtype{committee}
+% Panel Discussant -- Maybe this should be a subtype of \bibtype{committee}
+% Awards/Honors
+% Positions -- permanent, visiting, adjunct, affiliated, ...
+% Research Experience
+% Media Coverage
+% Related skills
+% Non-Academic Work
+% Professional Memberships/Affiliations
+% References
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-cv/biblatex-cv.sty b/macros/latex/contrib/biblatex-contrib/biblatex-cv/biblatex-cv.sty
new file mode 100644
index 0000000000..834d7724aa
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-cv/biblatex-cv.sty
@@ -0,0 +1,776 @@
+% Copyright (c) 2020- Daniel E. Shub.
+%
+% Permission is granted to copy, distribute and/or modify this software under the terms of the LaTeX Project Public License (LPPL), version 1.3c.
+%
+% This software is provided 'as is', without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose.
+
+\NeedsTeXFormat{LaTeX2e}[2005/12/01]
+\ProvidesPackage{biblatex-cv}[2020/03/11 v0.01 biblatex-cv bibliography style (DES)]
+
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{biblatex}}
+\ProcessOptions\relax
+
+\PassOptionsToPackage{
+ labelnumber = true, defernumbers = true, backend = biber,
+ style = biblatex-cv, sorting = ydnt, maxnames = 999
+}{biblatex}
+\RequirePackage{biblatex}
+
+\RequirePackage{expl3, xparse}
+\RequirePackage{totcount}
+\RequirePackage{xpatch}
+
+% Document layout
+\setlength{\biblabelsep}{0.5em}
+\defbibheading{bibliography}{}
+
+\toggletrue{cv@blx:delete:author}
+\toggletrue{cv@blx:delete:presenter}
+
+\toggletrue{cv@blx:pubstate}
+
+\togglefalse{cv@blx:funding:hidePI}
+\toggletrue{cv@blx:funding:role}
+\toggletrue{cv@blx:funding:status}
+\toggletrue{cv@blx:presentation:subtype}
+\toggletrue{cv@blx:presentation:type}
+\toggletrue{cv@blx:student:institution}
+\toggletrue{cv@blx:student:location}
+\toggletrue{cv@blx:student:department}
+\toggletrue{cv@blx:student:type}
+\toggletrue{cv@blx:school:years}
+\toggletrue{cv@blx:teaching:institution}
+\toggletrue{cv@blx:teaching:location}
+\toggletrue{cv@blx:teaching:department}
+
+% Bibfilters
+
+% ABSTRACT
+\defbibcheck{Abstract}{%
+ \ifentrytype{abstract}{}{\skipentry}%
+}
+\defbibcheck{Abstract:Contributed}{%
+ \ifentrytype{abstract}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{contributed}{}{\skipentry}%
+}
+\defbibcheck{Abstract:Invited}{%
+ \ifentrytype{abstract}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{invited}{}{\skipentry}%
+}
+\defbibcheck{Abstract:Keynote}{%
+ \ifentrytype{abstract}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{keynote}{}{\skipentry}
+}
+\defbibcheck{Abstract:NotInternalOrJob}{%
+ \ifentrytype{abstract}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{internal}{\skipentry}{%
+ \iffieldequalstr{presentationtype}{job}{\skipentry}{}%
+ }%
+}
+
+\defbibcheck{Abstract:PosterContributed}{%
+ \ifentrytype{abstract}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{poster}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{contributed}{}{\skipentry}%
+}
+\defbibcheck{Abstract:PosterInvited}{%
+ \ifentrytype{abstract}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{poster}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{invited}{}{\skipentry}%
+}
+\defbibcheck{Abstract:PosterKeynote}{%
+ \ifentrytype{abstract}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{poster}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{keynote}{}{\skipentry}
+}
+\defbibcheck{Abstract:PosterNotInternalOrJob}{%
+ \ifentrytype{abstract}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{poster}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{internal}{\skipentry}{%
+ \iffieldequalstr{presentationtype}{job}{\skipentry}{}%
+ }%
+}
+
+\defbibcheck{Abstract:TalkContributed}{%
+ \ifentrytype{abstract}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{talk}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{contributed}{}{\skipentry}%
+}
+\defbibcheck{Abstract:TalkInvited}{%
+ \ifentrytype{abstract}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{talk}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{invited}{}{\skipentry}%
+}
+\defbibcheck{Abstract:TalkKeynote}{%
+ \ifentrytype{abstract}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{talk}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{keynote}{}{\skipentry}
+}
+\defbibcheck{Abstract:TalkNotInternalOrJob}{%
+ \ifentrytype{abstract}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{talk}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{internal}{\skipentry}{%
+ \iffieldequalstr{presentationtype}{job}{\skipentry}{}%
+ }%
+}
+
+% COMMITTEE
+\defbibcheck{Committee}{%
+ \ifentrytype{committee}{}{\skipentry}%
+}
+\defbibcheck{Committee:External}{%
+ \ifentrytype{committee}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{external}{}{\skipentry}%
+}
+\defbibcheck{Committee:Departmental}{%
+ \ifentrytype{committee}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{departmental}{}{\skipentry}%
+}
+\defbibcheck{Committee:Institutional}{%
+ \ifentrytype{committee}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{institutional}{}{\skipentry}%
+}
+\defbibcheck{Committee:NotExternal}{%
+ \ifentrytype{committee}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{external}{\skipentry}{}%
+}
+
+% EDUCATION
+\defbibcheck{Education}{%
+ \ifentrytype{school}{}{%
+ \ifentrytype{degree}{}{\skipentry}%
+ }%
+}
+
+% FUNDING
+\defbibcheck{Funding}{%
+ \ifentrytype{funding}{}{\skipentry}%
+}
+\defbibcheck{Funding:Completed}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{status}{completed}{}{\skipentry}%
+}
+\defbibcheck{Funding:Ongoing}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{status}{ongoing}{}{\skipentry}%
+}
+\defbibcheck{Funding:Pending}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{status}{pending}{}{\skipentry}%
+}
+\defbibcheck{Funding:Submitted}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{status}{submitted}{}{\skipentry}%
+}
+\defbibcheck{Funding:Unsuccessful}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{status}{unsuccessful}{}{\skipentry}%
+}
+\defbibcheck{Funding:CurrentAndPending}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{status}{ongoing}{}{%
+ \iffieldequalstr{status}{pending}{}{%
+ \iffieldequalstr{status}{submitted}{}{\skipentry}%
+ }%
+ }%
+}
+\defbibcheck{Funding:NotUnsuccessful}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{status}{unsuccessful}{\skipentry}{}%
+}
+
+\defbibcheck{Funding:Individual}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{individual}{}{\skipentry}%
+}
+\defbibcheck{Funding:IndividualCompleted}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{individual}{}{\skipentry}%
+ \iffieldequalstr{status}{completed}{}{\skipentry}%
+}
+\defbibcheck{Funding:IndividualOngoing}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{individual}{}{\skipentry}%
+ \iffieldequalstr{status}{ongoing}{}{\skipentry}%
+}
+\defbibcheck{Funding:IndividualPending}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{individual}{}{\skipentry}%
+ \iffieldequalstr{status}{pending}{}{\skipentry}%
+}
+\defbibcheck{Funding:IndividualSubmitted}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{individual}{}{\skipentry}%
+ \iffieldequalstr{status}{submitted}{}{\skipentry}%
+}
+\defbibcheck{Funding:IndividualUnsuccessful}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{individual}{}{\skipentry}%
+ \iffieldequalstr{status}{unsuccessful}{}{\skipentry}%
+}
+\defbibcheck{Funding:IndividualCurrentAndPending}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{individual}{}{\skipentry}%
+ \iffieldequalstr{status}{ongoing}{}{%
+ \iffieldequalstr{status}{pending}{}{%
+ \iffieldequalstr{status}{submitted}{}{\skipentry}%
+ }%
+ }%
+}
+\defbibcheck{Funding:IndividualNotUnsuccessful}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{individual}{}{\skipentry}%
+ \iffieldequalstr{status}{unsuccessful}{\skipentry}{}%
+}
+
+\defbibcheck{Funding:Institutional}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{institutional}{}{\skipentry}%
+}
+\defbibcheck{Funding:InstitutionalCompleted}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{institutional}{}{\skipentry}%
+ \iffieldequalstr{status}{completed}{}{\skipentry}%
+}
+\defbibcheck{Funding:InstitutionalOngoing}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{institutional}{}{\skipentry}%
+ \iffieldequalstr{status}{ongoing}{}{\skipentry}%
+}
+\defbibcheck{Funding:InstitutionalPending}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{institutional}{}{\skipentry}%
+ \iffieldequalstr{status}{pending}{}{\skipentry}%
+}
+\defbibcheck{Funding:InstitutionalSubmitted}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{institutional}{}{\skipentry}%
+ \iffieldequalstr{status}{submitted}{}{\skipentry}%
+}
+\defbibcheck{Funding:InstitutionalUnsuccessful}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{institutional}{}{\skipentry}%
+ \iffieldequalstr{status}{unsuccessful}{}{\skipentry}%
+}
+\defbibcheck{Funding:InstitutionalCurrentAndPending}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{institutional}{}{\skipentry}%
+ \iffieldequalstr{status}{ongoing}{}{%
+ \iffieldequalstr{status}{pending}{}{%
+ \iffieldequalstr{status}{submitted}{}{\skipentry}%
+ }%
+ }%
+}
+\defbibcheck{Funding:InstitutionalNotUnsuccessful}{%
+ \ifentrytype{funding}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{institutional}{}{\skipentry}%
+ \iffieldequalstr{status}{unsuccessful}{\skipentry}{}%
+}
+
+% PRESENTATION
+\defbibcheck{Presentation}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+}
+\defbibcheck{Presentation:Contributed}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{contributed}{}{\skipentry}%
+}
+\defbibcheck{Presentation:Internal}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{internal}{}{\skipentry}%
+}
+\defbibcheck{Presentation:Invited}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{invited}{}{\skipentry}%
+}
+\defbibcheck{Presentation:Job}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{job}{}{\skipentry}%
+}
+\defbibcheck{Presentation:Keynote}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{keynote}{}{\skipentry}
+}
+\defbibcheck{Presentation:NotInternalOrJob}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{internal}{\skipentry}{%
+ \iffieldequalstr{presentationtype}{job}{\skipentry}{}%
+ }%
+}
+
+\defbibcheck{Presentation:Poster}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{poster}{}{\skipentry}%
+}
+\defbibcheck{Presentation:PosterContributed}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{poster}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{contributed}{}{\skipentry}%
+}
+\defbibcheck{Presentation:PosterInternal}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{poster}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{internal}{}{\skipentry}%
+}
+\defbibcheck{Presentation:PosterInvited}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{poster}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{invited}{}{\skipentry}%
+}
+\defbibcheck{Presentation:PosterJob}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{poster}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{job}{}{\skipentry}%
+}
+\defbibcheck{Presentation:PosterKeynote}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{poster}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{keynote}{}{\skipentry}
+}
+\defbibcheck{Presentation:PosterNotInternalOrJob}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{poster}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{internal}{\skipentry}{%
+ \iffieldequalstr{presentationtype}{job}{\skipentry}{}%
+ }%
+}
+
+\defbibcheck{Presentation:Talk}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{talk}{}{\skipentry}%
+}
+\defbibcheck{Presentation:TalkContributed}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{talk}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{contributed}{}{\skipentry}%
+}
+\defbibcheck{Presentation:TalkInternal}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{talk}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{internal}{}{\skipentry}%
+}
+\defbibcheck{Presentation:TalkInvited}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{talk}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{invited}{}{\skipentry}%
+}
+\defbibcheck{Presentation:TalkJob}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{talk}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{job}{}{\skipentry}%
+}
+\defbibcheck{Presentation:TalkKeynote}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{talk}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{keynote}{}{\skipentry}
+}
+\defbibcheck{Presentation:TalkNotInternalOrJob}{%
+ \ifentrytype{presentation}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{talk}{}{\skipentry}%
+ \iffieldequalstr{presentationtype}{internal}{\skipentry}{%
+ \iffieldequalstr{presentationtype}{job}{\skipentry}{}%
+ }%
+}
+
+% STUDENT
+\defbibcheck{Student}{%
+ \ifentrytype{student}{}{\skipentry}%
+}
+\defbibcheck{Student:Masters}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{masters}{}{\skipentry}%
+}
+\defbibcheck{Student:Phd}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{phd}{}{\skipentry}%
+}
+\defbibcheck{Student:Postdoc}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{postdoc}{}{\skipentry}%
+}
+\defbibcheck{Student:Undergraduate}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{undergraduate}{}{\skipentry}%
+}
+\defbibcheck{Student:NotUndergraduate}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{undergraduate}{\skipentry}{}%
+}
+\defbibcheck{Student:Externalexaminer}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{role}{externalexaminer}{}{\skipentry}%
+}
+\defbibcheck{Student:Internalexaminer}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{role}{internalexaminer}{}{\skipentry}%
+}
+\defbibcheck{Student:Secondsupervisor}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{role}{secondsupervisor}{}{\skipentry}%
+}
+\defbibcheck{Student:Supervisor}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{role}{supervisor}{}{\skipentry}%
+}
+\defbibcheck{Student:NotExaminer}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{role}{internalexaminer}{\skipentry}{}%
+ \iffieldequalstr{role}{externalexaminer}{\skipentry}{}%
+}
+\defbibcheck{Student:MastersExternalexaminer}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{masters}{}{\skipentry}%
+ \iffieldequalstr{role}{externalexaminer}{}{\skipentry}%
+}
+\defbibcheck{Student:MastersInternalexaminer}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{masters}{}{\skipentry}%
+ \iffieldequalstr{role}{internalexaminer}{}{\skipentry}%
+}
+\defbibcheck{Student:MastersSecondsupervisor}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{masters}{}{\skipentry}%
+ \iffieldequalstr{role}{secondsupervisor}{}{\skipentry}%
+}
+\defbibcheck{Student:MastersSupervisor}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{masters}{}{\skipentry}%
+ \iffieldequalstr{role}{supervisor}{}{\skipentry}%
+}
+\defbibcheck{Student:MastersNotExaminer}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{masters}{}{\skipentry}%
+ \iffieldequalstr{role}{internalexaminer}{\skipentry}{}%
+ \iffieldequalstr{role}{externalexaminer}{\skipentry}{}%
+}
+\defbibcheck{Student:PhdExternalexaminer}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{phd}{}{\skipentry}%
+ \iffieldequalstr{role}{externalexaminer}{}{\skipentry}%
+}
+\defbibcheck{Student:PhdInternalexaminer}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{phd}{}{\skipentry}%
+ \iffieldequalstr{role}{internalexaminer}{}{\skipentry}%
+}
+\defbibcheck{Student:PhdSecondsupervisor}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{phd}{}{\skipentry}%
+ \iffieldequalstr{role}{secondsupervisor}{}{\skipentry}%
+}
+\defbibcheck{Student:PhdSupervisor}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{phd}{}{\skipentry}%
+ \iffieldequalstr{role}{supervisor}{}{\skipentry}%
+}
+\defbibcheck{Student:PhdNotExaminer}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{phd}{}{\skipentry}%
+ \iffieldequalstr{role}{internalexaminer}{\skipentry}{}%
+ \iffieldequalstr{role}{externalexaminer}{\skipentry}{}%
+}
+\defbibcheck{Student:PostdocExternalexaminer}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{postdoc}{}{\skipentry}%
+ \iffieldequalstr{role}{externalexaminer}{}{\skipentry}%
+}
+\defbibcheck{Student:PostdocInternalexaminer}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{postdoc}{}{\skipentry}%
+ \iffieldequalstr{role}{internalexaminer}{}{\skipentry}%
+}
+\defbibcheck{Student:PostdocSecondsupervisor}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{postdoc}{}{\skipentry}%
+ \iffieldequalstr{role}{secondsupervisor}{}{\skipentry}%
+}
+\defbibcheck{Student:PostdocSupervisor}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{postdoc}{}{\skipentry}%
+ \iffieldequalstr{role}{supervisor}{}{\skipentry}%
+}
+\defbibcheck{Student:PostdocNotExaminer}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{postdoc}{}{\skipentry}%
+ \iffieldequalstr{role}{internalexaminer}{\skipentry}{}%
+ \iffieldequalstr{role}{externalexaminer}{\skipentry}{}%
+}
+\defbibcheck{Student:UndergraduateExternalexaminer}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{undergraduate}{}{\skipentry}%
+ \iffieldequalstr{role}{externalexaminer}{}{\skipentry}%
+}
+\defbibcheck{Student:UndergraduateInternalexaminer}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{undergraduate}{}{\skipentry}%
+ \iffieldequalstr{role}{internalexaminer}{}{\skipentry}%
+}
+\defbibcheck{Student:UndergraduateSecondsupervisor}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{undergraduate}{}{\skipentry}%
+ \iffieldequalstr{role}{secondsupervisor}{}{\skipentry}%
+}
+\defbibcheck{Student:UndergraduateSupervisor}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{undergraduate}{}{\skipentry}%
+ \iffieldequalstr{role}{supervisor}{}{\skipentry}%
+}
+\defbibcheck{Student:UndergraduateNotExaminer}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{undergraduate}{}{\skipentry}%
+ \iffieldequalstr{role}{internalexaminer}{\skipentry}{}%
+ \iffieldequalstr{role}{externalexaminer}{\skipentry}{}%
+}
+\defbibcheck{Student:NotUndergraduateExternalexaminer}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{undergraduate}{\skipentry}{}%
+ \iffieldequalstr{role}{externalexaminer}{}{\skipentry}%
+}
+\defbibcheck{Student:NotUndergraduateInternalexaminer}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{undergraduate}{\skipentry}{}%
+ \iffieldequalstr{role}{internalexaminer}{}{\skipentry}%
+}
+\defbibcheck{Student:NotUndergraduateSecondsupervisor}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{undergraduate}{\skipentry}{}%
+ \iffieldequalstr{role}{secondsupervisor}{}{\skipentry}%
+}
+\defbibcheck{Student:NotUndergraduateSupervisor}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{undergraduate}{\skipentry}{}%
+ \iffieldequalstr{role}{supervisor}{}{\skipentry}%
+}
+\defbibcheck{Student:NotUndergraduateNotExaminer}{%
+ \ifentrytype{student}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{undergraduate}{\skipentry}{}%
+ \iffieldequalstr{role}{internalexaminer}{\skipentry}{}%
+ \iffieldequalstr{role}{externalexaminer}{\skipentry}{}%
+}
+
+% TEACHING
+\defbibcheck{Teaching}{%
+ \ifentrytype{teaching}{}{\skipentry}%
+}
+\defbibcheck{Teaching:Graduate}{%
+ \ifentrytype{teaching}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{graduate}{}{\skipentry}%
+}
+\defbibcheck{Teaching:Undergraduate}{%
+ \ifentrytype{teaching}{}{\skipentry}%
+ \iffieldequalstr{entrysubtype}{undergraduate}{}{\skipentry}%
+}
+
+% Create a biblatex/biber MD5 hash from the parts of a name and store the hashes so that the name can be emphasized and/or deleted throughout the CV. If seems like \zap@space and ExplSyntax do not play nice together. There is probably a much cleaner way of doing this. Basically, the \highlightname macro concatenates the name parts, strips any spaces, calculates the hash, and then converts the hash to all lower case letters. The code does not handle periods in the name the same way that biblatex/biber does and therefore the input to \highlightname should probably not have periods.
+\newcommand{\highlightname}[4]{% family, given, prefix, suffix
+ \edef\cv@blx@highlightname@hash{\zap@space #1#2#3#4 \@empty}%
+ \ifxetex%
+ \expandafter\edef\expandafter\cv@blx@highlightname@hash\expandafter{%
+ \expandafter\mdfivesum\expandafter{%
+ \cv@blx@highlightname@hash%
+ }%
+ }%
+ \else%
+ \expandafter\edef\expandafter\cv@blx@highlightname@hash\expandafter{%
+ \expandafter\pdfmdfivesum\expandafter{%
+ \cv@blx@highlightname@hash%
+ }%
+ }%
+ \fi%
+ \cv@blx@highlightname%
+}
+
+\ExplSyntaxOn
+ \newcommand{\cv@blx@highlightname}{%
+ \edef\cv@blx@highlightname@hash{%
+ \text_lowercase:n{\cv@blx@highlightname@hash}%
+ }%
+ \listxadd{\cv@blx@highlightname@hash@list}{%
+ \cv@blx@highlightname@hash%
+ }%
+ }
+\ExplSyntaxOff
+
+% Emphasized a name throughout the CV. We patch the name formats and not the underlying bib macros, since this allows us to compare the name hash instead of the name parts. This seems more robust to things like initials and different name ordering schemes
+\newcommand{\cv@blx@highlightname@format}{\textbf}
+\newcommand{\cv@blx@highlightname@patch}{%
+ \begingroup% Needs to be ended by an \xapptonameformat
+ \xifinlist{\thefield{hash}}{\cv@blx@highlightname@hash@list}{%
+ \let\mkbibnamegiven=\cv@blx@highlightname@format%
+ \let\mkbibnamefamily=\cv@blx@highlightname@format%
+ \let\mkbibnameprefix=\cv@blx@highlightname@format%
+ \let\mkbibnamesuffix=\cv@blx@highlightname@format%
+ }{}%
+}
+\xpretonameformat{given-family}{\cv@blx@highlightname@patch}{}{}
+\xapptonameformat{given-family}{\endgroup}{}{}
+\xpretonameformat{family-given}{\cv@blx@highlightname@patch}{}{}
+\xapptonameformat{family-given}{\endgroup}{}{}
+\xpretonameformat{family-given/given-family}{\cv@blx@highlightname@patch}{}{}
+\xapptonameformat{family-given/given-family}{\endgroup}{}{}
+\xpretonameformat{initsonly}{\cv@blx@highlightname@patch}{}{}
+\xapptonameformat{initsonly}{\endgroup}{}{}
+
+% Delete a name from a list of names. Unlike the emphasizing the name, the deletion is done on a per type (i.e., author, editor, presenter) basis.
+\newcommand{\cv@blx@deletename}[1]{%
+ \expandafter\forlistloop\expandafter{\expandafter\cv@blx@deletename@do\expandafter{\NewValue}{#1}}{\cv@blx@highlightname@hash@list}%
+}
+\ExplSyntaxOn
+ \NewDocumentCommand{\cv@blx@deletename@do}{mmm}{% Name information, Type, Hash
+ \tl_set:Nn\l_tmpa_tl{#1}%
+ \str_if_in:nnTF{#1}{hash=#3}{%
+ \numdef\NewCount{\NewCount-1}%
+ \regex_replace_all:nnN{\cB\{\cB\{.*?hash=#3.*?\cE\}\cE\}\cE\}}{}\l_tmpa_tl%
+ \regex_replace_all:nnN{\cB\{\cB\{.*?hash=#3.*?\cE\}.*?givenun=0.*?\cE\}\cE\}}{}\l_tmpa_tl%
+ \edef\NewValue{\l_tmpa_tl}%
+ \blx@bbl@addfield{#2deleted}{1}%
+ }{}%
+ }
+\ExplSyntaxOff
+
+\newbibmacro{nameDeleted}{%
+ \iffieldequalstr{\currentname deleted}{1}{%
+ \bibstring{with}\addspace%
+ }{%
+ \bibstring{by}\addspace%
+ }%
+}
+\renewcommand{\cv@blx@tempa}[1]{%
+ \DeclareNameInputHandler{#1}{%
+ \iftoggle{cv@blx:delete:#1}{\cv@blx@deletename{#1}}{}%
+ }%
+ \DeclareNameWrapperFormat{#1}{%
+ \iftoggle{cv@blx:delete:#1}{\usebibmacro{nameDeleted}}{}%
+ ##1%
+ }%
+}
+\forcsvlist{\cv@blx@tempa}{afterword, annotator, author, bookauthor, %
+ commentator, editor, editora, editorb, editorc, foreword, holder, %
+ introduction, namea, nameb, namec, translator, shortauthor, %
+ shorteditor, advisor, committee, name, presenter%
+}
+
+% Some sections of a CV should have numbered items and some should not. We need to define unnumbered and numbered (with descending labels) bibliography environments. In order for this to work, we need to create a new totcounter every time a new bibliography is started. I think this breaks if there is more than one refsection in the CV, but I am not sure why there would be more than one refsection in a CV.
+\newcounter{cv@blx@bib}
+\newtotcounter{cv@blx@ref@0}
+\xpatchcmd{\printbibliography}{\begingroup}{%
+ \stepcounter{cv@blx@bib}%
+ \edef\@tempa{cv@blx@ref@\arabic{cv@blx@bib}}%
+ \expandafter\newtotcounter\expandafter{\@tempa}%
+ \begingroup
+}{}{}
+
+\newrobustcmd{\mkbibdown}[1]{%
+ \stepcounter{cv@blx@ref@\arabic{cv@blx@bib}}%
+ \begingroup%
+ \edef\@tempa{cv@blx@ref@\arabic{cv@blx@bib}}%
+ \number\numexpr%
+ \expandafter\totvalue\expandafter{\@tempa}+1-#1%
+ \relax%
+ \endgroup%
+}
+
+\DeclareFieldFormat{labelnumber}{\mkbibdown{#1}}
+\DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}}
+
+\newcommand{\cv@blx@list}{%
+ \setlength{\labelwidth}{\labelnumberwidth}%
+ \setlength{\leftmargin}{\labelwidth}%
+ \setlength{\labelsep}{\biblabelsep}%
+ \addtolength{\leftmargin}{\labelsep}%
+ \setlength{\itemsep}{\bibitemsep}%
+ \setlength{\parsep}{\bibparsep}%
+ \addtolength{\leftmargin}{\bibhang}%
+ \setlength{\itemindent}{-\bibhang}%
+}
+
+\newcommand{\cv@blx@sublist}{%
+ \setlength{\labelwidth}{\labelnumberwidth}%
+ \setlength{\leftmargin}{\labelwidth}%
+ \setlength{\labelsep}{\biblabelsep}%
+ \addtolength{\leftmargin}{\labelsep}%
+ \setlength{\itemsep}{\bibitemsep}%
+ \setlength{\parsep}{\bibparsep}%
+ \addtolength{\leftmargin}{2\bibhang}%
+ \setlength{\itemindent}{-\bibhang}%
+}
+
+\defbibenvironment{numbered}{%
+ \list{%
+ \printtext[labelnumberwidth]{%
+ \printfield{prefixnumber}%
+ \printfield{labelnumber}%
+ }%
+ }{\cv@blx@list}%
+ \renewcommand*{\makelabel}[1]{\hss##1}%
+}{\endlist}{\item}
+
+\defbibenvironment{unnumbered}{%
+ \list{}{\cv@blx@list}%
+ \renewcommand*{\makelabel}[1]{\hss##1}%
+}{\endlist}{\item}
+
+% Data inheritances need to be defined for the related types
+\DeclareDataInheritance{committee}{committee}{
+ \inherit{entrysubtype}{entrysubtype}
+ \noinherit{semesters}
+}
+
+\DeclareDataInheritance{school}{degree}{
+ \noinherit{degreelist}
+ \noinherit{gpa}
+}
+
+\DeclareDataInheritance{teaching}{teaching}{
+ \inherit{entrysubtype}{entrysubtype}
+}
+
+% Deal with the verbose style options
+\iftoggle{cv@blx:verbose:committee}{
+ \DeclareStyleSourcemap{
+ \maps[datatype = bibtex]{
+ \map[overwrite]{
+ \pertype{committee}
+ \step[fieldsource = semesters, fieldset = options,
+ fieldvalue = {skipbib = true}]
+ }
+ }
+ }
+}{
+ \DeclareStyleSourcemap{
+ \maps[datatype = bibtex]{
+ \map[overwrite]{
+ \pertype{committee}
+ \step[fieldsource = crossref, fieldset = options,
+ fieldvalue = {skipbib = true}]
+ }
+ }
+ }
+}
+
+\DeclareStyleSourcemap{
+ \maps[datatype = bibtex]{
+ \map[overwrite]{
+ \pertype{teaching}
+ \step[fieldsource = crossref, fieldset = options,
+ fieldvalue = {skipbib = true}]
+ }
+ }
+ \maps[datatype = bibtex]{
+ \map[overwrite]{
+ \pertype{degree}
+ \step[fieldsource = crossref, fieldset = options,
+ fieldvalue = {skipbib = true}]
+ }
+ }
+}
+
+\iftoggle{cv@blx:verbose:education}{
+ \toggletrue{cv@blx:education:advisor}
+ \toggletrue{cv@blx:education:committee}
+ \toggletrue{cv@blx:education:gpa}
+ \toggletrue{cv@blx:education:honors}
+ \toggletrue{cv@blx:education:major}
+ \toggletrue{cv@blx:education:minor}
+ \toggletrue{cv@blx:education:title}
+}{}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/biblatex-cv.bib b/macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/biblatex-cv.bib
new file mode 100644
index 0000000000..98583e3777
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/biblatex-cv.bib
@@ -0,0 +1,347 @@
+%@Abstract{Abstract:,
+ %Author = {},
+ %Title = {},
+ %Journaltitle = {},
+ %Date = {},
+ %Entrysubtype = {},
+ %PresentationType = {},
+ %Presenter = {},
+%}
+
+%@Committee{Committee:,
+ %Date = {},
+ %Entrysubtype = {},
+ %Title = {},
+ %Institution = {},
+ %Location = {},
+ %Department = {},
+ %Role = {},
+ %Semesters = {},
+ %crossref = {},
+%}
+
+%@School{School:,
+ %Date = {},
+ %Institution = {},
+ %Location = {},
+ %Department = {},
+ %GPA = {},
+ %Honors = {},
+ %DegreeList = {},
+%}
+
+%@Degree{Degree:,
+ %Date = {},
+ %Institution = {},
+ %Location = {},
+ %Department = {},
+ %Degree = {},
+ %GPA = {},
+ %Honors = {},
+ %Concentration = {},
+ %Advisor = {},
+ %Committee = {},
+ %Title = {},
+ %crossref = {},
+%}
+
+%@Funding{Funding:,
+ %Date = {},
+ %Entrysubtype = {},
+ %Status = {},
+ %Author = {},
+ %Funder = {},
+ %Title = {},
+ %Role = {},
+ %Amount = {},
+ %Currency = {},
+ %Number = {},
+ %Type = {},
+%}
+
+%@Presentation{Presentation:,
+ %Date = {},
+ %Entrysubtype = {},
+ %Author = {},
+ %PresentationType = {},
+ %Presenter = {},
+ %Title = {},
+ %Institution = {},
+ %Location = {},
+ %Department = {},
+%}
+
+%@Student{Student:,
+ %Date = {},
+ %Entrysubtype = {},
+ %Name = {},
+ %Role = {},
+ %Institution = {},
+ %Location = {},
+ %Department = {},
+%}
+
+%@Teaching{Teaching:,
+ %Date = {},
+ %Entrysubtype = {},
+ %Title = {},
+ %Department = {},
+ %Institution = {},
+ %Location = {},
+ %Number = {},
+ %NumLectures = {},
+ %NumStudents = {},
+ %Role = {},
+ %classes = {},
+%}
+
+@XData{Author:Me,
+ Author = {Doe, Jon},
+}
+
+@XData{Author:Us,
+ Author = {Doe, Jon and Smith, Alice and Jones, Bob},
+}
+
+@XData{Author:Them,
+ Author = {Smith, Alice and Jones, Bob},
+}
+
+@XData{Institution:Departmental,
+ Institution = {My Institution},
+ Location = {My City},
+ Department = {My Department},
+}
+
+@XData{Institution:External,
+ Institution = {Their Institution},
+ Location = {Their City},
+ Department = {Their Department},
+}
+
+@XData{Institution:Institutional,
+ Institution = {My Institution},
+ Location = {My City},
+}
+
+@XData{Presenters:Me,
+ Presenter = {Doe, Jon},
+}
+
+@XData{Presenters:Us,
+ Presenter = {Doe, Jon and Smith, Alice and Jones, Bob},
+}
+
+@XData{Presenters:Them,
+ Presenter = {Smith, Alice and Jones, Bob},
+}
+
+@Abstract{Abstract:PosterContributedJoint,
+ xdata = {Author:Us, Presenters:Me},
+ Title = {A Contributed Poster Abstract},
+ Journaltitle = {Journal of Poster Abstracts},
+ Date = {2020-01-01},
+ Entrysubtype = {poster},
+ PresentationType = {contributed},
+}
+
+@Abstract{Abstract:TalkInternalSolo,
+ xdata = {Author:Them, Presenters:Them},
+ Title = {An Internal Talk Abstract},
+ Journaltitle = {Journal of Talk Abstracts},
+ Date = {2019-01-01},
+ Entrysubtype = {talk},
+ PresentationType = {internal},
+}
+
+@Abstract{Abstract:TalkInvitedOther,
+ xdata = {Author:Me, Presenters:Us},
+ Title = {An Invited Talk Abstract},
+ Journaltitle = {Journal of Talk Abstracts},
+ Date = {2018-01-01},
+ Entrysubtype = {talk},
+ PresentationType = {invited},
+}
+
+@Committee{Committee:Departmental,
+ Semesters = {Committee:DepartmentalSemesterA, Committee:DepartmentalSemesterB},
+ xdata = {Institution:Departmental},
+ Date = {2010-23/2019-21},
+ Entrysubtype = {departmental},
+ Title = {An Example Departmental Committee With Semesters},
+
+ Role = {},
+}
+
+@Committee{Committee:DepartmentalSemesterA,
+ crossref = {Committee:Departmental},
+ Date = {2010-23/2015-21},
+ Role = {Secretary},
+}
+
+@Committee{Committee:DepartmentalSemesterB,
+ crossref = {Committee:Departmental},
+ Date = {2015-22/2019-21},
+ Role = {Chair},
+}
+
+@Committee{Committee:External,
+ xdata = {Institution:External},
+ Date = {2015-23},
+ Entrysubtype = {external},
+ Title = {An Example External Committee Without Semesters},
+ Role = {Consultant},
+}
+
+@Committee{Committee:Institutional,
+ xdata = {Institution:Institutional},
+ Date = {2017-21/2019-22},
+ Entrysubtype = {institutional},
+ Title = {An Example Institutional},
+ Role = {},
+}
+
+@School{School:Degree,
+ Date = {2010-23/2019-21},
+ Institution = {My Institution},
+ Location = {My City},
+ GPA = {3.5},
+ Honors = {Institution Honors},
+ DegreeList = {Degree:MS, Degree:PhD},
+}
+
+@Degree{Degree:PhD,
+ Date = {2019-21},
+ Department = {My PhD Department},
+ Degree = {PhD},
+ GPA = {4.0},
+ Honors = {PhD Honors},
+ Concentration = {PhD Concentration},
+ Advisor = {Jones, Alice},
+ Committee = {Jones, Alice and Smith, Bob},
+ Title = {My PhD Title},
+ crossref = {School:Degree},
+}
+
+@Degree{Degree:MS,
+ Date = {2012-21},
+ Department = {My MS Department},
+ Degree = {MS},
+ GPA = {3.0},
+ Advisor = {Smith, Bob},
+ Committee = {Jones, Alice and Smith, Bob},
+ Title = {My MS Title},
+ crossref = {School:Degree},
+}
+
+@School{School:NoDegree,
+ xdata = {Institution:External},
+ Date = {2009-21},
+ GPA = {2.0},
+ Honors = {My Other Honors},
+}
+
+@Funding{Funding:IndividualOngoing,
+ xdata = {Author:Us},
+ Date = {2019-01/2021-01},
+ Entrysubtype = {individual},
+ Status = {ongoing},
+ Funder = {Funding Agency},
+ Title = {A Grant Title},
+ Role = {pi},
+ Amount = {100,000,000},
+ Currency = {\$},
+ Number = {123-456-abc},
+ Type = {Research Grant},
+}
+
+@Funding{Funding:InstitutionalCompleted,
+ xdata = {Author:Us},
+ Date = {2010-01/2019-01},
+ Entrysubtype = {Institutional},
+ Status = {completed},
+ Funder = {A Different Funding Agency},
+ Title = {A Different Grant Title},
+ Role = {ci},
+ Amount = {1,000,000},
+ Currency = {\pounds},
+ Number = {abc-def-123},
+ Type = {Fellowship},
+}
+
+
+@Presentation{Presentation:PosterContributedJoint,
+ xdata = {Author:Us, Presenters:Me, Institution:External},
+ Title = {A Contributed Poster Presentation},
+ Date = {2020-01-01},
+ Entrysubtype = {poster},
+ PresentationType = {contributed},
+}
+
+@Presentation{Presentation:TalkInternalSolo,
+ xdata = {Author:Them, Presenters:Them, Institution:Departmental},
+ Title = {A Departmental Talk Presentation},
+ Date = {2019-01-01},
+ Entrysubtype = {talk},
+ PresentationType = {internal},
+}
+
+@Presentation{Presentation:TalkInvitedOther,
+ xdata = {Author:Me, Presenters:Us, Institution:Institutional},
+ Title = {An Institutional Invited Talk Presentation},
+ Date = {2018-01-01},
+ Entrysubtype = {talk},
+ PresentationType = {invited},
+}
+
+@Student{Student:SupervisorMS,
+ xdata = {Institution:Departmental},
+ Date = {2018-23/2020-21},
+ Entrysubtype = {masters},
+ Name = {Smith, Alice},
+ Role = {supervisor},
+}
+
+@Student{Student:InternalExaminerPhD,
+ xdata = {Institution:External},
+ Date = {2016-24/2018-22},
+ Entrysubtype = {phd},
+ Name = {Jones, Bob},
+ Role = {internalexaminer},
+}
+
+@Teaching{Teaching:Graduate,
+ xdata = {Institution:Departmental},
+ Date = {2020-23},
+ Entrysubtype = {graduate},
+ Title = {A Graduate Class},
+ Number = {EE401},
+ NumLectures = {36},
+ NumStudents = {100},
+ Role = {Instructor of Record},
+}
+
+@Teaching{Teaching:Undergraduate,
+ xdata = {Institution:Departmental},
+ Date = {2019-21/2020-22},
+ Entrysubtype = {undergraduate},
+ Title = {An Undergraduate Class},
+ Number = {EE101},
+ classes = {Teaching:Undergraduate20, Teaching:Undergraduate19},
+}
+
+@Teaching{Teaching:Undergraduate20,
+ crossref = {Teaching:Undergraduate},
+ Date = {2020-22},
+ NumLectures = {36},
+ NumStudents = {100},
+ Role = {Instructor of Record},
+}
+
+@Teaching{Teaching:Undergraduate19,
+ crossref = {Teaching:Undergraduate},
+ Date = {2019-21},
+ NumLectures = {13},
+ NumStudents = {10},
+ Role = {ta},
+}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/biblatex-cv.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/biblatex-cv.pdf
new file mode 100644
index 0000000000..6e7a8eb1b4
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/biblatex-cv.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/biblatex-cv.tex b/macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/biblatex-cv.tex
new file mode 100644
index 0000000000..0417630b45
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/biblatex-cv.tex
@@ -0,0 +1,416 @@
+% The header to this document is based on the biblatex.tex document. The ordering and style of the documentation also is based on biblatex.tex.
+\documentclass{ltxdockit}[2011/03/25]
+\usepackage{btxdockit}
+\usepackage{fontspec}
+\usepackage{hyperref}
+\usepackage{zref-xr}
+
+\setmonofont{Courier New}
+\setmainfont[Ligatures=TeX]{Linux Libertine O}
+\setsansfont[Ligatures=TeX]{Linux Biolinum O}
+\usepackage[american]{babel}
+\usepackage[strict]{csquotes}
+\usepackage{tabularx}
+\usepackage{longtable}
+\usepackage{booktabs}
+\usepackage{shortvrb}
+\usepackage{pifont}
+\usepackage{microtype}
+\usepackage{typearea}
+\usepackage{mdframed}
+\areaset[current]{370pt}{700pt}
+\lstset{
+ basicstyle=\ttfamily,
+ keepspaces=true,
+ upquote=true,
+ frame=single,
+ breaklines=true,
+ postbreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\color{red}\hookrightarrow\space}}
+}
+\KOMAoptions{numbers=noenddot}
+\addtokomafont{title}{\sffamily}
+\addtokomafont{disposition}{\spotcolor}
+\addtokomafont{descriptionlabel}{\spotcolor}
+\setkomafont{caption}{\bfseries\sffamily\spotcolor}
+\setkomafont{captionlabel}{\bfseries\sffamily\spotcolor}
+\pretocmd{\cmd}{\sloppy}{}{}
+\pretocmd{\bibfield}{\sloppy}{}{}
+\pretocmd{\bibtype}{\sloppy}{}{}
+\makeatletter
+\RedeclareSectionCommand[%
+ beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,%
+ afterskip=1.5ex \@plus .2ex,%
+]{paragraph}
+\RedeclareSectionCommand[%
+ beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,%
+ indent=\z@,%
+]{subparagraph}
+\makeatother
+
+\MakeAutoQuote{«}{»}
+\MakeAutoQuote*{<}{>}
+
+% DES: Moved turning \| into a shorthand for verbatim material until later since it breaks something in the biblatex package
+
+\newcommand*{\allowbreakhere}{\discretionary{}{}{}}
+
+\newcommand*{\biber}{\sty{biber}\xspace}
+\newcommand*{\biblatex}{\sty{biblatex}\xspace}
+\newcommand*{\biblatexml}{\sty{biblatexml}\xspace}
+\newcommand*{\biblatexhome}{http://sourceforge.net/projects/biblatex/}
+\newcommand*{\biblatexctan}{http://ctan.org/pkg/biblatex/}
+
+% DES: Moved \titlepage and \hypersetup to the end of the preamble
+
+% tables
+
+\newcolumntype{H}{>{\sffamily\bfseries\spotcolor}l}
+\newcolumntype{L}{>{\raggedright\let\\=\tabularnewline}p}
+\newcolumntype{R}{>{\raggedleft\let\\=\tabularnewline}p}
+\newcolumntype{C}{>{\centering\let\\=\tabularnewline}p}
+\newcolumntype{V}{>{\raggedright\let\\=\tabularnewline\ttfamily}p}
+
+\newcommand*{\sorttablesetup}{%
+ \tablesetup
+ \ttfamily
+ \def\new{\makebox[1.25em][r]{\ensuremath\rightarrow}\,}%
+ \def\alt{\par\makebox[1.25em][r]{\ensuremath\hookrightarrow}\,}%
+ \def\note##1{\textrm{##1}}}
+
+\newcommand{\tickmarkyes}{\Pisymbol{psy}{183}}
+\newcommand{\tickmarkno}{\textendash}
+\providecommand*{\textln}[1]{#1}
+\providecommand*{\lnstyle}{}
+
+% markup and misc
+
+\setcounter{secnumdepth}{4}
+
+\makeatletter
+
+\newenvironment{nameparts}
+ {\trivlist\item
+ \tabular{@{}ll@{}}}
+ {\endtabular\endtrivlist}
+
+\newenvironment{namedelims}
+ {\trivlist\item
+ \tabularx{\textwidth}{@{}c@{=}l>{\raggedright\let\\=\tabularnewline}X@{}}}
+ {\endtabularx\endtrivlist}
+
+\newenvironment{namesample}
+ {\def\delim##1##2{\@delim{##1}{\normalfont\tiny\bfseries##2}}%
+ \def\@delim##1##2{{%
+ \setbox\@tempboxa\hbox{##1}%
+ \@tempdima=\wd\@tempboxa
+ \wd\@tempboxa=\z@
+ \box\@tempboxa
+ \begingroup\spotcolor
+ \setbox\@tempboxa\hb@xt@\@tempdima{\hss##2\hss}%
+ \vrule\lower1.25ex\box\@tempboxa
+ \endgroup}}%
+ \ttfamily\trivlist
+ \setlength\itemsep{0.5\baselineskip}}
+ {\endtrivlist}
+
+\makeatother
+
+\newrobustcmd*{\Deprecated}{%
+ \textcolor{spot}{\margnotefont Deprecated}}
+\newrobustcmd*{\DeprecatedMark}{%
+ \leavevmode\marginpar{\Deprecated}}
+\newrobustcmd*{\LF}{%
+ \textcolor{spot}{\margnotefont Label field}}
+\newrobustcmd*{\LFMark}{%
+ \leavevmode\marginpar{\LF}}
+\newrobustcmd*{\CSdelim}{%
+ \textcolor{spot}{\margnotefont Context Sensitive}}
+\newrobustcmd*{\CSdelimMark}{%
+ \leavevmode\marginpar{\CSdelim}}
+
+
+\newcommand*{\seestyleexample}[1]{%
+ \leavevmode
+ \marginpar{%
+ \raggedright
+ \footnotesize
+ Style example:\\
+ \href{file:examples/#1.pdf}{local},
+ \href{http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/#1.pdf}
+ {online}.}%
+ \ignorespaces}
+
+% following snippet is based on code by Michael Ummels (TeX Stack Exchange)
+% <http://tex.stackexchange.com/a/13073/8305>
+\makeatletter
+ \newcommand\fnurl@[1]{\footnote{\url@{#1}}}
+ \DeclareRobustCommand{\fnurl}{\hyper@normalise\fnurl@}
+\makeatother
+
+\hyphenation{%
+ star-red
+ bib-lio-gra-phy
+ white-space
+}
+
+% DES: Begin additions/changes to biblatex.tex preamble
+\titlepage{%
+ title={Bib\LaTeX\ Style for Creating a Curriculum Vitae},
+ subtitle={Datatypes and Formatting Macros},
+ url={https://github.com/danielshub/biblatex-cv/},
+ author={Daniel E. Shub},
+ email={daniel.e.shub@gmail.com},
+ revision={0.01},
+ date={\today}%
+}
+
+\hypersetup{%
+ pdftitle={The biblatex-cv manual},
+ pdfsubject={Bib\LaTeX\ Style for Creating a Curriculum Vitae},
+ pdfauthor={Daniel E. Shub},
+ pdfkeywords={latex, biblatex, cv, style}
+}
+
+\usepackage{biblatex-cv}
+\highlightname{Doe}{Jon}{}{}
+\addbibresource{biblatex-cv.bib}
+
+\newcommand{\exampitem}[1]{\begingroup%
+ \par\itemsep0.5\itemsep\item%
+ Default Output: \par%
+ \printbibliography[env = unnumbered, resetnumbers = true, check = #1]%
+\endgroup}
+
+\MakeShortVerb{\|}
+
+\begin{document}
+\nocite{*}
+\printtitlepage
+\tableofcontents
+
+\section{Introduction}
+\subsection{About}
+This package is a \biblatex\ style for creating an academic curriculum vitae (CV) from a \bibtex\ \file{.bib} file using \biber\slash\biblatex. In addition to the standard publication types, an academic CV contains information about funding, teaching, mentoring, and other accomplishments. Depending on the purpose of the CV, the grouping of the items within a category changes. For example, when applying for jobs, it is often desirable to group teaching by whether it is at the undergraduate or graduate level (or maybe by class size), but when applying for promotion, you may need to group teaching depending on if the classes were inside/outside your department. The same goes for mentoring. In some cases it may make sense to group by the program/department the students/post-docs were enrolled and in other cases it may make sense to group undergraduate students separately. The purpose of this package is to harness the power of \biber\slash\biblatex\ to automatically group items on a CV and ensure consistent formatting of those items. The package implements a citation style (\file{biblatex-cv.cbx}), a references section style (\file{biblatex-cv.bbx}), a data model (\file{biblatex-cv.dbx}) that includes enhancements and additional entry types over the standard data model, and a string localization file (\file{american-cv.lbx}). It also includes a standard \latex\ package (\file{biblatex-cv.sty}) which provides useful interfaces for grouping items on the CV. Localization support is provided for CV specific strings in the accompanying \file{american-cv.lbx} file.
+
+The \sty{biblatex-cv} data model includes a number of additional entry types beyond those provided by the standard \biblatex\ data model. The \sty{biblatex-cv} data model, however, does not include all possible entry types that might appear on a CV. For example, it lacks an entry type related to employment, even though every CV likely includes employment history. The additional data types that are included in the \sty{biblatex-cv} data model were chosen based on the perceived likelihood that an individual might want to tailor the formatting, grouping, and/or ordering of the items of a particular entry type for a particular purpose. Future versions of the \sty{biblatex-cv} data model will likely include additional entry types and hopefully someday it will be possible to fully generate an academic CV directly from a \file{.bib} file.
+
+\subsection{License}
+Copyright \textcopyright\ 2020-- Daniel E. Shub. Permission is granted to copy, distribute and\slash or modify this software under the terms of the \lppl, version~1.3.\fnurl{http://www.latex-project.org/lppl.txt}. The current maintainer is Daniel Shub.
+
+\subsection{Feedback}
+Bug reports, comments and ideas are welcome. Please use the project page on GitHub to report bugs and submit feature requests.\fnurl{https://github.com/danielshub/biblatex-cv/}.
+
+\subsection{Acknowledgments}
+This package was motivated by the amazing improvements \bibtex\slash\biblatex\ provides over \bibtex\ for managing bibliographies. The data model and formatting macros provided by \biblatex\ allows a user with a good working knowledge of \latex\ to design new bibliography and citation styles. The \sty{biblatex-publist}\fnurl{https://github.com/jspitz/biblatex-publist} style provided a lot of inspiration of for this package and shows the flexiblity of \biblatex.
+
+\section{Use}
+This package is available at \url{https://github.com/danielshub/biblatex-cv/}. To install manually, you can download it and then put the \file{.cbx}, \file{.bbx}, \file{.lbx}, \file{.dbx}, and \file{.sty} files in your texmf tree (???). An example document is provided at the end of this document, but briefly, you specify the style in the usual way when loading \biblatex. While the style can be loaded just like any other \biblatex\ style, it is best to load it with |\usepackage{biblatex-cv}|. The \sty{biblatex-cv} package loads \biblatex\ with useful options as well as providing macros that are useful for grouping items in a CV. It can be loaded with:
+
+\begin{ltxcode}
+\usepackage[american]{babel}
+\usepackage{biblatex-cv}
+\end{ltxcode}
+
+\subsection{Package options}
+The verbosity of the output can be controlled by passing options to \sty{biblatex-cv}. These options include
+\begin{ltxcode}
+verbose-committee
+verbose-education
+verbose-teaching
+verbose-lists
+\end{ltxcode}
+
+\noindent The options |verbose-committee|, |verbose-education|, and |verbose-teaching| respectively control how verbose the lists of committees, education, and teaching are. The |verbose-lists| option is the same as passing |verbose-committee|, |verbose-education|, and |verbose-teaching|.
+
+\subsection{Package and Base Styles}
+ The citation style (\path{biblatex-cv.cbx}) is an unmodified version of the \biblatex\ |authoryear| citation style. The bibliography style (\path{biblatex-cv.bbx}) is based on the corresponding \biblatex\ |authoryear| style, but it patches a couple of the standard macros to provide additional functionality. The bibliography style essentially just adds bibliography drivers for the new entry types and provides a number of |toggles| to control the information that is presented. These |toggles| are in the form |cv@blx@ENTRYTYPE:FIELD|. The package (\path{biblatex-cv.sty}) provides macros for controlling the grouping and format of the items on the CV. The |\highlightname| macro is used to identify a particular name for special treatment. By default the name is made bold face in lists of authors and deleted from lists of presenters. The package also provides |numbered| and |unnumbered| bibliography environments. The numbers decrease in the |numbered| environment.
+
+\section{Database Guide}
+This package contains the following files:
+\begin{description}
+ \item[\path{american-cv.lbx}] The |biblatex-cv| localization files. This file provides language-specific macros for some fixed strings commonly used in academic CVs.
+ \item[\path{biblatex-cv.bbx}] The \sty{biblatex-cv} bibliography style. It is based on the standard \biblatex\ |authoryear| style but provides bibliography drivers for the new entry types and some minor modifications to the standard entry types.
+ \item[\path{biblatex-cv.bib}] The \file{.bib} entries used to provided the examples in this document.
+ \item[\path{biblatex-cv.cbx}] The \sty{biblatex-cv} citations style. It is just the standard \biblatex\ |authoryear| style.
+ \item[\path{biblatex-cv.dbx}] The \sty{biblatex-cv} data model. It is based on the standard \biblatex\ data model but provides enhancements and additional entry types to allow users to utilize more natural entry type and field names for certain entries.
+ \item[\path{biblatex-cv.sty}] A \latex\ package that provides macros for controlling the grouping and format of the items on the CV.
+ \item[\path{biblatex-cv.tex}] This document.
+ \item[\path{cv.tex}] An example CV populated by the entries in \path{biblatex-cv.bib}.
+\end{description}
+
+\subsection{New Entry Types}
+This section gives an overview of the novel entry types supported by the \sty{biblatex-cv} package data model along with the fields supported by each type. The lists below indicate the fields supported by each entry type. Note that the <required> fields are not strictly required in all cases. The fields marked as <optional> are optional in a technical sense. The \sty{biblatex-cv} package data model defines a few constraints for the format of certain fields. These are only validated against the data model with \biber's \opt{--validate-datamodel} option, however, the grouping features provided by the \sty{biblatex-cv} package assume the data model has been validated. Some generic fields like \bibfield{abstract} and \bibfield{annotation} or \bibfield{label} and \bibfield{shorthand} are not included in the lists below because they are independent of the entry type. See the \sty{biblatex-cv} data model specification in the file \file{biblatex-cv.dbx} for a complete specification.
+
+\begin{typelist}
+ \typeitem{abstract}
+ A published abstract in a journal, proceedings, or other location. While an abstract is often associated with a presentation, only a single entry should be made in the database since there is no way to automatically suppress the duplicate output. This entry type nearly identical to the \bibtype{article} entry type except it has the additional mandatory fields \bibfield{entrysubtype}, \bibfield{presentationtype}, and \bibfield{presenter}. The output format is also similar to that of the \bibtype{article} entry type. To work with the built in bibliography filters, the field \bibfield{entrysubtype} is constrained to be |poster| or |talk|.
+ \reqitem{author, title, journaltitle, year/date, entrysubtype, presentationtype, presenter}
+ \optitem{translator, annotator, commentator, subtitle, titleaddon, editor, editora, editorb, editorc, journalsubtitle, issuetitle, issuesubtitle, language, origlanguage, series, volume, number, eid, issue, month, pages, version, note, issn, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+ \exampitem{Abstract}
+
+ \typeitem{committee}
+ A committee entry is designed to reflect administrative service committees that have been served on. The field \bibfield{title} is the name of the committee. To work with the built in bibliography filters, the field \bibfield{entrysubtype} is constrained to be |departmental|, |external|, or |institutional|.
+ \reqitem{date, entrysubtype, title, institution}
+ \optitem{location, department, role, semesters}
+ \exampitem{Committee}
+
+ \typeitem{school}
+ A school is place where one studied and possibly earned a \bibtype{degree}. It is closely coupled with the \bibtype{degree} entry type.
+ \reqitem{date, institution, location}
+ \optitem{department, degreelist, gpa, honors}
+
+ \typeitem{degree}
+ A degree is something you earn at a \bibtype{school}. It is closely coupled with the \bibtype{school} entry type.
+ \reqitem{date, institution, location}
+ \optitem{department, degree, gpa, honors, major, minor, concentration, advisor, committee, title}
+ \exampitem{Education}
+
+ \typeitem{funding}
+ An entry type for recording funding and grants. To work with the built in bibliography filters, the field \bibfield{entrysubtype} is constrained to be |individual| or |institutional| and the field \bibfield{status} is constrained to be |completed|, |ongoing|, |pending|, |submitted|, or |unsuccessful|.
+ \reqitem{date, entrysubtype, status, author, funder}
+ \optitem{title, role, amount, currency, number, type}
+ \exampitem{Funding}
+
+ \typeitem{presentation}
+ A typically unpublished presentation from a conference or seminar, or other event. While a presentation is often associated with an abstract, only a single entry should be made in the database since there is no way to automatically suppress the duplicate output. To work with the built in bibliography filters, the field \bibfield{entrysubtype} is constrained to be |poster| or |talk|.
+ \reqitem{date, entrysubtype, author, presentationtype, presenter, title, institution, location}
+ \optitem{department}
+ \exampitem{Presentation}
+
+ \typeitem{student}
+ An entry type for students and other individuals that you hae been a mentor to or examined. To work with the built in bibliography filters, the field \bibfield{entrysubtype} is constrained to be |masters|, |phd|, |postdoc|, or |undergraduate| and the field \bibfield{role} is constrained to be |externalexaminer|, |internalexaminer|, |secondsupervisor|, or |supervisor|.
+ \reqitem{date, entrysubtype, role, name, institution, location}
+ \optitem{department}
+ \exampitem{Student}
+
+ \typeitem{teaching}
+ An entry type for classes that you have taught. To work with the built in bibliography filters, the field \bibfield{entrysubtype} is constrained to be |graduate| or |undergraduate|. The optional field \bibfield{classes} can be used in conjunction with the field \bibfield{crossref} when you have taught multiple sections of a particular class or have taught it over multiple years.
+ \reqitem{date, entrysubtype, title, department, institution, location}
+ \optitem{number, numlectures, numstudents, role, classes}
+ \exampitem{Teaching}
+
+\end{typelist}
+
+\subsection{Modified Entry Types}
+This section gives an overview of the modifications made to the standard entry types. Changes have been made to both the underlying data model and its constraints as well as the bibliography drivers and the underlying macros that format the output. The bibliography drivers for all entry types except the \bibtype{shorthand} and \bibtype{set} entry types, have been modified to not print the field \bibfield{note} in the standard location, but rather before the page reference and related type information. The field \bibfield{note} is now provided along with bibliometric information. The bibliometrics information is currently limited to the field \bibfield{numcites}.
+
+\begin{typelist}
+ \typeitem{article}
+ This is the standard \bibtype{article} entry type modified to have an additional mandatory field \bibfield{numcites}.
+ \typeitem{unpublished}
+ This is the standard \bibtype{unpublished} entry type modified to have an additional optional field \bibfield{journaltitle}.
+ \typeitem{unpublished}
+ This is the standard \bibtype{thesis} entry type but modified to work with the built in bibliography filters by constraining the field \bibfield{type} to be |doctoralthesis|, |mastersthesis|, or |undergradthesis|.
+\end{typelist}
+
+\subsection{New Entry Fields}
+\begin{fieldlist}
+ \listitem{advisor}{name} The advisor(s) for the entry type \bibtype{degree}.
+
+ \listitem{committee}{name} The committee member(s) for the entry type \bibtype{degree}.
+
+ \listitem{name}{name} The name of the student for the entry type \bibtype{student}. While technically a list, it is probably not advisable to use it as such and each \bibtype{student} entry should be for a single student.
+
+ \listitem{presenter}{name} The presenter(s) of a piece of work for the entry types \bibtype{abstract} and \bibtype{presentation}.
+
+ \listitem{concentration}{literal} A list of concentration areas for the entry type \bibtype{degree}.
+
+ \listitem{honors}{literal} A list of honors associated with the entry type \bibtype{degree}.
+
+ \listitem{minor}{literal} A list of minors associated with the entry type \bibtype{degree}.
+
+ \fielditem{amount}{integer} The amount of money for the entry type \bibtype{funding}.
+
+ \fielditem{numcites}{integer} The number of citations for a particular item.
+
+ \fielditem{numlectures}{integer} The number of lectures/classes for the entry type \bibtype{teaching}.
+
+ \fielditem{numstudents}{integer} The number of students in a class for the entry type \bibtype{teaching}.
+
+ \fielditem{currency}{literal} The currency of the field \bibfield{amount}.
+
+ \fielditem{degree}{literal} The degree earned for the entry type \bibtype{degree}.
+
+ \fielditem{department}{literal} An additional field that allows finer grain control of the \bibfield{institution} and \bibfield{location}. Unlike \bibfield{institution} and \bibfield{location}, \bibfield{department} is a field and not a list.
+
+ \fielditem{funder}{literal} The name of the funding institute for the entry type \bibtype{funding}.
+
+ \fielditem{gpa}{literal} The grade point average for the entry types \bibtype{degree} and \bibtype{school}.
+
+ \fielditem{major}{literal} The major for the entry type \bibtype{degree}.
+
+
+ \fielditem{presentationtype}{literal} The type of presentation for the entry types \bibtype{abstract} and \bibtype{presentation}. To work with the built in bibliography filters, the field should be constrained to be |contributed|, |internal|, |invited|, |job|, or |keynote|.
+
+ \fielditem{role}{key} The role (e.g., chair or secretary) that was served for entry type \bibtype{committee}.
+
+ \fielditem{status}{key} The status of the entry type \bibtype{funding}.
+
+ \fielditem{classes}{separated list of entrykeys} A comma separated list of keys to other \bibtype{teaching} entries. This can be useful if you taught a class multiple semesters and/or multiple sections of a class.
+
+ \fielditem{degreelist}{separated list of entrykeys} A comma separated list of \bibtype{degree} entries earned at the corresponding \bibtype{school}.
+
+ \fielditem{semesters}{separated list of entrykeys} a comma separated list of keys to other committee entries. This can be useful if you served on a committee for multiple years serving different roles.
+
+\end{fieldlist}
+
+\section{Example}
+The following example will create a boring looking CV. There is no reason you cannot make the formatting nicer. The purpose of this package is to control the sorting, grouping, and formatting of the items on the CV and not the CV itself.
+
+\begin{ltxcode}
+\documentclass{article}
+\usepackage[american]{babel}
+\usepackage{biblatex-cv}
+
+\highlightname{Doe}{Jon}{}{}
+\addbibresource{biblatex-cv.bib}
+
+\begin{document}
+ \nocite{*}
+ \section*{Education}
+ \printbibliography[env = unnumbered, resetnumbers = true, check = Education]
+
+ \section*{Funding}
+ \printbibliography[env = numbered, resetnumbers = true, check = Funding]
+
+ \section*{Abstracts}
+ \printbibliography[env = numbered, resetnumbers = true, check = Abstract]
+
+ \section*{Research Presentations}
+ \printbibliography[env = numbered, resetnumbers = true, check = Presentation]
+
+ \section*{Teaching}
+ \printbibliography[env = unnumbered, resetnumbers = true, check = Teaching]
+
+ \section*{Service}
+ \printbibliography[env = unnumbered, resetnumbers = true, check = Committee]
+
+ \section*{Mentoring}
+ \printbibliography[env = unnumbered, resetnumbers = true, check = Student]
+\end{document}
+\end{ltxcode}
+
+If instead of showing all your teaching together, you want to group by graduate and undergraduate teaching, that is as simply as changing |check = Teaching| to |check = Teaching:Graduate| and |check = Teaching:Undergraduate|. Grouping by the institute where the teaching was done is a little harder, since we do not know where you have taught. First you have to define the checks:
+\begin{ltxcode}
+\defbibcheck{Teaching:Oxford}{%
+ \ifentrytype{teaching}{}{\skipentry}%
+ \iffieldequalstr{institution}{Oxford}{}{\skipentry}%
+}
+\defbibcheck{Teaching:Cambridge}{%
+ \ifentrytype{teaching}{}{\skipentry}%
+ \iffieldequalstr{institution}{Cambridge}{}{\skipentry}%
+}
+\end{ltxcode}
+
+\noindent and then you can use |check = Teaching:Oxford| and |check = Teaching:Cambridge|. Of course if you group by university, you may not want to include the university in the reference. That can be controlled with |\togglefalse{cv@blx:teaching:institution}| and if you want to get rid of the department and location, there are toggles for that too. There are lots of checks and toggles predefined in \sty{biblatex-cv}. just look through the \file{biblatex-cv.sty} to see if what you need exists. If not, there is hopefully an example that will get you close.
+\end{document}
+
+% arara: clean: { extensions: [ aux, bbl, bcf, blg, out, run.xml, toc ] }
+% arara: clean: { extensions: [ log, pdf ] }
+% arara: xelatex: { options: [ '-halt-on-error' ], interaction: batchmode }
+% arara: biber: { options: [ '--validate_datamodel' ] }
+% arara: xelatex: { options: [ '-halt-on-error' ], interaction: batchmode }
+% arara: --> until !found('log', 'Rerun to get cross-references right.')
+% arara: --> && !found('log', 'There were undefined references.')
+% arara: clean: { extensions: [ aux, bbl, bcf, blg, out, run.xml, toc ] }
+% arara: clean: { extensions: [ log ] }
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/cv.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/cv.pdf
new file mode 100644
index 0000000000..43a922c32c
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/cv.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/cv.tex b/macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/cv.tex
new file mode 100644
index 0000000000..bb1fc0a10b
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-cv/doc/cv.tex
@@ -0,0 +1,40 @@
+\documentclass{article}
+\usepackage[american]{babel}
+\usepackage{biblatex-cv}
+
+\highlightname{Doe}{Jon}{}{}
+\addbibresource{biblatex-cv.bib}
+
+\begin{document}
+ \nocite{*}
+ \section*{Education}
+ \printbibliography[env = unnumbered, resetnumbers = true, check = Education]
+
+ \section*{Funding}
+ \printbibliography[env = numbered, resetnumbers = true, check = Funding]
+
+ \section*{Abstracts}
+ \printbibliography[env = numbered, resetnumbers = true, check = Abstract]
+
+ \section*{Research Presentations}
+ \printbibliography[env = numbered, resetnumbers = true, check = Presentation]
+
+ \section*{Teaching}
+ \printbibliography[env = unnumbered, resetnumbers = true, check = Teaching]
+
+ \section*{Service}
+ \printbibliography[env = unnumbered, resetnumbers = true, check = Committee]
+
+ \section*{Mentoring}
+ \printbibliography[env = unnumbered, resetnumbers = true, check = Student]
+\end{document}
+
+% arara: clean: { extensions: [ aux, bbl, bcf, blg, out, run.xml, toc ] }
+% arara: clean: { extensions: [ log, pdf ] }
+% arara: pdflatex: { options: [ '-halt-on-error' ], interaction: batchmode }
+% arara: biber: { options: [ '--validate_datamodel' ] }
+% arara: pdflatex: { options: [ '-halt-on-error' ], interaction: batchmode }
+% arara: --> until !found('log', 'Rerun to get cross-references right.')
+% arara: --> && !found('log', 'There were undefined references.')
+% arara: clean: { extensions: [ aux, bbl, bcf, blg, out, run.xml, toc ] }
+% arara: clean: { extensions: [ log ] }