From d231c6331f53a048d29c2f847254a9f56d5ee2dd Mon Sep 17 00:00:00 2001 From: Norbert Preining 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