diff options
author | Karl Berry <karl@freefriends.org> | 2021-06-02 20:58:00 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-06-02 20:58:00 +0000 |
commit | c7de3b443718d91144c1f540ec7afeae418d0a2a (patch) | |
tree | e03c8b1954e1fd53a8025bb9c4287a4196d0cd78 /Master/texmf-dist/tex/latex/biblatex-cv | |
parent | 151a999843d462fa0b1dc04bffc407fee5096d10 (diff) |
biblatex-cv (2jun21)
git-svn-id: svn://tug.org/texlive/trunk@59433 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/biblatex-cv')
5 files changed, 1954 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/biblatex-cv/american-cv.lbx b/Master/texmf-dist/tex/latex/biblatex-cv/american-cv.lbx new file mode 100644 index 00000000000..76022c74475 --- /dev/null +++ b/Master/texmf-dist/tex/latex/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/Master/texmf-dist/tex/latex/biblatex-cv/biblatex-cv.bbx b/Master/texmf-dist/tex/latex/biblatex-cv/biblatex-cv.bbx new file mode 100644 index 00000000000..aa1865367cb --- /dev/null +++ b/Master/texmf-dist/tex/latex/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/Master/texmf-dist/tex/latex/biblatex-cv/biblatex-cv.cbx b/Master/texmf-dist/tex/latex/biblatex-cv/biblatex-cv.cbx new file mode 100644 index 00000000000..80cff4e9ff8 --- /dev/null +++ b/Master/texmf-dist/tex/latex/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/Master/texmf-dist/tex/latex/biblatex-cv/biblatex-cv.dbx b/Master/texmf-dist/tex/latex/biblatex-cv/biblatex-cv.dbx new file mode 100644 index 00000000000..745ab411bc9 --- /dev/null +++ b/Master/texmf-dist/tex/latex/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/Master/texmf-dist/tex/latex/biblatex-cv/biblatex-cv.sty b/Master/texmf-dist/tex/latex/biblatex-cv/biblatex-cv.sty new file mode 100644 index 00000000000..834d7724aaf --- /dev/null +++ b/Master/texmf-dist/tex/latex/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} +}{} |