From d231c6331f53a048d29c2f847254a9f56d5ee2dd Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Thu, 3 Jun 2021 03:02:31 +0000
Subject: CTAN sync 202106030302

---
 .../biblatex-contrib/biblatex-cv/biblatex-cv.sty   | 776 +++++++++++++++++++++
 1 file changed, 776 insertions(+)
 create mode 100644 macros/latex/contrib/biblatex-contrib/biblatex-cv/biblatex-cv.sty

(limited to 'macros/latex/contrib/biblatex-contrib/biblatex-cv/biblatex-cv.sty')

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}
+}{}
-- 
cgit v1.2.3

