diff options
-rw-r--r-- | Master/texmf-dist/doc/latex/biblatex-publist/README | 10 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/biblatex-publist/biblatex-publist.pdf | bin | 311050 -> 316645 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/biblatex-publist/biblatex-publist.tex | 110 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/biblatex-publist/publist.bbx | 696 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/biblatex-publist/publist.cbx | 4 |
5 files changed, 579 insertions, 241 deletions
diff --git a/Master/texmf-dist/doc/latex/biblatex-publist/README b/Master/texmf-dist/doc/latex/biblatex-publist/README index cd816f0c81c..e04237f488e 100644 --- a/Master/texmf-dist/doc/latex/biblatex-publist/README +++ b/Master/texmf-dist/doc/latex/biblatex-publist/README @@ -45,6 +45,16 @@ instructions. == CHANGES == +* V. 1.15 (2019-02-22): + - Add support for omitting multiple authors. + - Fix documentation issues. + +* V. 1.14 (2019-02-21): + - Add support for highlighting multiple authors. + - Fix handling of non-ASCII names. + - Use \DeclareStyleSourcemap rather that \DeclareSourcemap. + - Update sorting documentation in the wake of biblatex changes. + * V. 1.13 (2018-11-30): - Introduce new sorting templates that ignore names. - CHANGE OF OUTPUT! Use ydt tempate by default. diff --git a/Master/texmf-dist/doc/latex/biblatex-publist/biblatex-publist.pdf b/Master/texmf-dist/doc/latex/biblatex-publist/biblatex-publist.pdf Binary files differindex e1cc9d86323..c1a1a44c340 100644 --- a/Master/texmf-dist/doc/latex/biblatex-publist/biblatex-publist.pdf +++ b/Master/texmf-dist/doc/latex/biblatex-publist/biblatex-publist.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex-publist/biblatex-publist.tex b/Master/texmf-dist/doc/latex/biblatex-publist/biblatex-publist.tex index 02f0ce8d278..cf65eddbd59 100644 --- a/Master/texmf-dist/doc/latex/biblatex-publist/biblatex-publist.tex +++ b/Master/texmf-dist/doc/latex/biblatex-publist/biblatex-publist.tex @@ -54,6 +54,17 @@ citecolor=black } +% Tweak the TOC (make it more compact) +\usepackage{tocloft} +\setlength{\cftaftertoctitleskip}{6pt} +\setlength{\cftbeforesecskip}{3pt} +\setlength{\cftbeforesubsecskip}{0pt} +\renewcommand{\cfttoctitlefont}{\normalsize\bfseries} +\renewcommand{\cftsecfont}{\small\bfseries} +\renewcommand{\cftsecpagefont}{\small\bfseries} +\renewcommand{\cftsubsecfont}{\small} +\renewcommand{\cftsubsecpagefont}{\small} + % Some semantic markup \makeatletter \def\jmacro{\@ifstar\@@jmacro\@jmacro} @@ -89,7 +100,7 @@ \thanks{Please report issues via \protect\url{https://github.com/jspitz/biblatex-publist}.}% } -\date{Version 1.13, 2018/11/30} +\date{Version 1.15, 2019/02/22} \maketitle \begin{abstract} @@ -102,6 +113,8 @@ The package requires at least version 3.8 of the \bibltx\ package\footnote{For \ \url{http://www.ctan.org/pkg/biblatex}.} and \texttt{biber} (the respective version as required by \bibltx). \end{abstract} +\tableofcontents + \section{Aim of the package} The \bpl\ package ships a \emph{biblatex bibliography style file} ({*}.bbx) @@ -124,10 +137,10 @@ style file, \emph{publist.bst}% see also \cite{ttb}.}, which helps a lot if you want to produce a publication list with Bib\TeX. The \bpl\ package is the result of the aim of emulating the features of \emph{publist.bst} with \bibltx's means. It partly draws on -Markey's conceptual ideas. Bug reports, comments and ideas are welcome.\filbreak +Markey's conceptual ideas. Bug reports, comments and ideas are welcome. -\section{Loading the package} +\section{Usage} \subsection{Standard usage\label{sec:standard-usage}} @@ -138,23 +151,24 @@ The standard way of using the package is to load the style file via \end{lstlisting} The \jcsmacro*{plauthorname} macro\footnote{The macro was named \jfcsmacro{omitname} until v.\,1.4 of the \bpl\ package. The old macro still works, but is marked as deprecated.} -(at least with the mandatory \emph{surname} argument) needs to be given once. -It informs the style file which name it should suppress or highlight in the +(at least with the mandatory \emph{surname} argument) needs to be given (at least\footnote{See +sec.~\ref{sec:multiauthors} for the case of handling multiple authors and name variants.}) once. +It informs the style file which name(s) it should suppress or highlight in the author\slash editor list (usually yours). -With the default settings, the author\slash editor name will be omitted completely -for all of your publications where you are the sole author or editor, as in: +With the default settings, the author\slash editor name(s) will be omitted completely +for all of publications which are authored or edited only by the specified person(s), as in: \begin{quote} \textbf{2012.} Some recent trends in gardening. In: \emph{Gardening Practice} 56, pp.~34--86. \end{quote} -If there are co-authors\slash co-editors, your name will be filtered +If there are co-authors\slash co-editors, your name(s) will be filtered out and the collaborators added in parentheses, as in: \begin{quote} \textbf{1987} (with John Doe and Mary Hall). Are there new trends in gardening? In: \emph{Gardening Practice} 24, pp.~10--15. \end{quote} -If \joption{plauthorhandling=highlight} is used (see next section), the plauthor +If \joption{plauthorhandling=highlight} is used (see next section), the plauthor(s) will be printed in bold face instead, as in: \begin{quote} Doe, John, \textbf{Myself, Me} and Hall, Mary, \textbf{1987}. Are there new trends @@ -162,7 +176,7 @@ will be printed in bold face instead, as in: \end{quote} % Note that \jcsmacro{plauthorname} expects the name constituents as they are recorded in the -database (special characters expanded). The option \joption{plauthorfirstinit} (see next section), +database (special characters will be expanded). The option \joption{plauthorfirstinit} (see next section), however, allows you to pass only an initial character instead of a first name. @@ -229,7 +243,41 @@ Of course, the solution does not help if there is an entry with same surname and \end{description} -\clearpage + +\subsection{Multiple authors and\slash or name variants}\label{sec:multiauthors} + +If multiple \jcsmacro{plauthorname} specifications have been entered (or a \jcsmacro{plauthorname} specification +in addition to a specification via the options \joption{plauthorname}, \joption{plauthorname} and +\joption{plauthornameprefix}), all of them will be considered. + +Thus it is possible to highlight multiple authors in the publication +list (for instance to mark contributions of a research team): +\begin{lstlisting}[moretexcs={[2]{plauthorname}}] +\usepackage[style=publist,plauthorhandling=highlight]{biblatex} +\plauthorname[John]{Doe} +\plauthorname[Mary][van]{Smith} +\plauthorname{Wittgenstein} +\end{lstlisting} +% +Multiple specifications can also be used to deal with name variants: +\begin{lstlisting}[moretexcs={[2]{plauthorname}}] +\plauthorname[Bill]{Gates} +\plauthorname[William]{Gates} +\plauthorname[William Henry]{Gates} +\plauthorname[William H.]{Gates} +\end{lstlisting} +% +Since the latter is also useful with \joption{plauthorhandling=omit}, this mode also considers multiple specifications. +By entering something such as the former, it is even possible to omit more than one and different authors from the entries +(and \bpl\ will take care of the change in the author separation this involves; think of final \emph{and} vs. \emph{comma}, +which have to be adjusted accordingly if names are omitted). However, it does not strike me sensible to do so (in other words, +if you need to deal with a \emph{team} of authors, you should really consider to use \joption{plauthorhandling=highlight}). + +Note that this also applies to filtering (see sec.~\ref{sec:filtering}), i.\,e., the \joption{mine} filter considers +entries authored by \emph{any} of the specified persons. + + +\section{Customization} \subsection{Auxiliary macros and lengths}\label{sec:auxmacros} @@ -277,7 +325,6 @@ Note, further, that the order of author's and editor's given and family names is differ from what you expect with specific base styles. To change the order, use the package option \joption{nameorder} (see sec.~\ref{sec:addopts}). -\clearpage \section{Localization} @@ -334,7 +381,7 @@ The suggested procedure is to maintain separate bib files for each category, say \emph{mymonographs.bib}, \emph{myarticles.bib}, \emph{myproceedings.bib}.% \footnote{But see sec.~\ref{sec:filtering} for an alternative.} Then a typical file would look like example~\ref{example} (p.~\pageref{example}). - +% \begin{lstlisting}[caption={Typical document}, float, frame=single, @@ -403,6 +450,9 @@ which has to be passed to \jfcsmacro{printbibliography}, as in: \nocite{*} \printbibliography[heading=none,filter=mine] \end{lstlisting} +% +This will effectively print only publications which have been authored or edited by the +person(s) specified as via \jcsmacro{plauthorname} (or the corresponding option). Of course, you can also use other filter possibilities provided by \bibltx, such as filtering by type or by keyword. So if you want @@ -469,15 +519,17 @@ The following templates, with and without author sorting, are provided: In order to use any of these, or another sorting template provided by \bibltx\, use \bibltx's \jfmacro{sorting} option, which can be passed either globally (via \joption{sorting=<template>} as a \bibltx\ option) or locally -(via \joption{sorting=<template>} as a \jfcsmacro{printbibliography} option). +(by means of a \jfcsmacro{newrefcontext} macro with the option \joption{sorting=<template>}). So, to sort your talks in descending order by full date in your CV, you would use either \begin{lstlisting}[moretexcs={[1]{printbibliography}}] \usepackage[style=publist,sorting=ddt]{biblatex} \end{lstlisting} or -\begin{lstlisting}[moretexcs={[1]{printbibliography}}] -\printbibliography[heading=none,sorting=ddt] +\begin{lstlisting}[moretexcs={[3]{printbibliography,newrefcontext,endrefcontext}}] +\newrefcontext[sorting=ddt] +\printbibliography[heading=none] +\endrefcontext \end{lstlisting} \clearpage @@ -485,6 +537,20 @@ or \section{Revision Log} \begin{description} + \item [{V. 1.15 (2019-02-22):}]~ + \begin{itemize} + \item Add support for omitting multiple authors. See sec.~\ref{sec:multiauthors}. + \item Fix documentation issues. + \end{itemize} + + \item [{V. 1.14 (2019-02-21):}]~ + \begin{itemize} + \item Add support for highlighting multiple authors. See sec.~\ref{sec:multiauthors}. + \item Fix handling of non-ASCII names. + \item Use \jfcsmacro{DeclareStyleSourcemap} rather that \jfcsmacro{DeclareSourcemap}. + \item Update sorting documentation in the wake of \bibltx\ changes. + \end{itemize} + \item [{V. 1.13 (2018-11-30):}]~ \begin{itemize} \item Introduce new sorting templates that ignore names. See sec.~\ref{sec:sorttemplates}. @@ -515,14 +581,14 @@ or \jcsmacro{refsection}s. \item Documentation improvements. \end{itemize} - + \item [{V.~1.9 (2018-03-01):}]~ \begin{itemize} \item New option \joption{plnumbered} that allows to omit the numbering of the publication list items \item Documentation improvements. \end{itemize} - +\clearpage \item [{V.~1.8 (2017-11-14):}]~ \begin{itemize} \item Adapt to \bibltx\ 3.8. This version is now required. @@ -536,7 +602,7 @@ or \item \texttt{year+labelyear} $\Rightarrow$ \texttt{bpl:year+labelyear} \end{itemize} \end{itemize} -\clearpage + \item [{V.~1.7 (2017-04-12):}]~ \begin{itemize} \item Output marginyear before the author list. This prevents it from being vertically @@ -566,10 +632,10 @@ or \item Assure the margin text always starts uppercased (relevant for pubstates). \item Minor corrections to the manual. \end{itemize} +\clearpage + \item [{V.~1.3 (2016-08-06):}]~ -\item [{V.~1.3 (2016-08-06):}]~ - -\begin{itemize} + \begin{itemize} \item It is now possible to change the base style that is used by \bpl. See sec.~\ref{sec:basestyle}. \item Proper sorting of pubstates. \item Add possibility to increase the indentation of items (by means of the length \jmacro{extralabelnumberwidth}). See sec.~\ref{sec:auxmacros}. diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/publist.bbx b/Master/texmf-dist/tex/latex/biblatex-publist/publist.bbx index 4b61d0bfaa1..8370a95a202 100644 --- a/Master/texmf-dist/tex/latex/biblatex-publist/publist.bbx +++ b/Master/texmf-dist/tex/latex/biblatex-publist/publist.bbx @@ -25,8 +25,8 @@ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\def\bpl@version{1.13} -\def\bpl@rdate{2018/11/30} +\def\bpl@version{1.15} +\def\bpl@rdate{2019/02/22} \ProvidesFile{publist.bbx}[\bpl@rdate\space v.\bpl@version\space biblatex bibliography style (JSP)] @@ -160,6 +160,73 @@ % +% Helper functions +% + +% +% Removing braces from names (courtesy of egreg at +% http://tex.stackexchange.com/a/79583/19291) +% and normalize spaces +\def\bpl@normalize#1#2{% + \begingroup + \def\bibnamedelima{ }% + \def\bibnamedelimb{ }% + \def\IeC##1{##1}% + \protected@edef\@tempa{#1}% + \gdef\@gtempa{}% + \expandafter\bpl@@normalize\@tempa\@nil + \endgroup + \let#2\@gtempa +} +\def\bpl@@normalize#1{% + \ifx#1\@nil\else + \expandafter\gdef\expandafter\@gtempa\expandafter{\@gtempa#1}% + \expandafter\bpl@@normalize + \fi +} +% +% Check first token of macro +% (based on a suggestion by Qrrbrbirlbel at +% https://tex.stackexchange.com/a/132254) +\newcommand*{\iffirstinitialsequal}{% + \@expandtwoargs\if@startswith} +\newcommand*{\if@startswith}[2]{% + \if\@car#1.\@nil\@car#2.\@nil + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +% +% Split plauthors list item +\def\bpl@lsurname{} +\def\bpl@lfirstname{} +\def\bpl@lvonpart{} +\def\jsp@splitpllist#1{% + \begingroup + \edef\@tempa{#1}% + \expandafter\endgroup + \expandafter\jsp@@splitpllist\@tempa\relax% +} +\def\jsp@@splitpllist#1,#2,#3\relax{% + \global\def\bpl@lfirstname{#1}% + \global\def\bpl@lvonpart{#2}% + \global\def\bpl@lsurname{#3}% +} +% +% Fully expanded comparison +% (adapted from scrbase.sty) +\newcommand\bpl@ifstreq[2]{% + \begingroup\edef\@tempa{#1}\edef\@tempb{#2}% + \ifx\@tempa\@tempb + \endgroup\expandafter\@firstoftwo + \else + \endgroup\expandafter\@secondoftwo + \fi +} + + +% % Customization settings % @@ -169,6 +236,9 @@ \def\bpl@ofirstname{} \def\bpl@ovonpart{} % +% List to store multiple pl authors (for highlight only) +\def\bpl@plauthors{} +% % Manual way to specify publication list author name \def\plauthorname{% \@ifnextchar[% @@ -181,10 +251,7 @@ {\plauthorname@ii{#1}[]}% } \def\plauthorname@ii#1[#2]#3{% - % Do stuff - \def\bpl@osurname{#3} - \ifx\@empty#1\else\def\bpl@ofirstname{#1}\fi - \ifx\@empty#2\else\def\bpl@ovonpart{#2}\fi + \listgadd{\bpl@plauthors}{#1,#2,#3} } % @@ -272,45 +339,10 @@ % -% Helper functions: -% Removing braces from names (courtesy of egreg at -% http://tex.stackexchange.com/a/79583/19291) -% and normalize spaces -\def\bpl@normalize#1#2{% - \begingroup - \def\bibnamedelima{ }% - \def\bibnamedelimb{ }% - \def\IeC##1{##1}% - \protected@edef\@tempa{#1}% - \gdef\@gtempa{}% - \expandafter\bpl@@normalize\@tempa\@nil - \endgroup - \let#2\@gtempa -} -\def\bpl@@normalize#1{% - \ifx#1\@nil\else - \expandafter\gdef\expandafter\@gtempa\expandafter{\@gtempa#1}% - \expandafter\bpl@@normalize - \fi -} -% Check first token of macro -% (based on a suggestion by Qrrbrbirlbel at -% https://tex.stackexchange.com/a/132254) -\newcommand*{\iffirstinitialsequal}{% - \@expandtwoargs\if@startswith} -\newcommand*{\if@startswith}[2]{% - \if\@car#1.\@nil\@car#2.\@nil - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi -} - - -% % Bibliography filter % % Inspired by http://tex.stackexchange.com/a/28555/19291 +% \DeclareBibliographyCategory{filtered} \DeclareIndexNameFormat{authorfiltered}{% @@ -320,16 +352,40 @@ \bpl@normalize{\bpl@osurname}{\bpl@esurname}% \bpl@normalize{\bpl@ofirstname}{\bpl@efirstname}% \bpl@normalize{\bpl@ovonpart}{\bpl@evonpart}% + % Check if we are dealing with a plauthor + % First the plauthorname as set via option \ifboolexpr{ - test { \ifdefstrequal{\bpl@esurname}{\bpl@tsurname} } + test { \bpl@ifstreq{\bpl@esurname}{\bpl@tsurname} } and - ( test { \ifdefstrequal{\bpl@efirstname}{\bpl@tfirstname} } or test { \ifdefstring{\bpl@ofirstname}{} } + ( test { \bpl@ifstreq{\bpl@efirstname}{\bpl@tfirstname} } or test { \ifdefstring{\bpl@ofirstname}{} } or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl@efirstname}{\bpl@tfirstname} } ) ) and - ( test { \ifdefstrequal{\bpl@evonpart}{\bpl@tvonpart} } or test { \ifdefstring{\bpl@ovonpart}{} }) } - {\addtocategory{filtered}{\thefield{entrykey}}} - {}} + ( test { \bpl@ifstreq{\bpl@evonpart}{\bpl@tvonpart} } or test { \ifdefstring{\bpl@ovonpart}{} }) } + {\addtocategory{filtered}{\thefield{entrykey}}}% + {}% + % Then the name(s) set via macro + \def\bpl@lsurname{}% + \def\bpl@lfirstname{}% + \def\bpl@lvonpart{}% + \renewcommand*{\do}[1]{% + \jsp@splitpllist{##1}% + \bpl@normalize{\bpl@lsurname}{\bpl@elsurname}% + \bpl@normalize{\bpl@lfirstname}{\bpl@elfirstname}% + \bpl@normalize{\bpl@lvonpart}{\bpl@elvonpart}% + \ifboolexpr{ + test { \bpl@ifstreq{\bpl@elsurname}{\bpl@tsurname} } + and + ( test { \bpl@ifstreq{\bpl@elfirstname}{\bpl@tfirstname} } or test { \ifdefstring{\bpl@lfirstname}{} } + or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl@lfirstname}{\bpl@tfirstname} } ) + ) + and + ( test { \bpl@ifstreq{\bpl@elvonpart}{\bpl@tvonpart} } or test { \ifdefstring{\bpl@lvonpart}{} }) } + {\addtocategory{filtered}{\thefield{entrykey}}}% + {}% + }% + \dolistloop{\bpl@plauthors}% +} \DeclareIndexNameFormat{editorfiltered}{% \edef\bpl@tsurname{\namepartfamily}% @@ -338,21 +394,49 @@ \bpl@normalize{\bpl@osurname}{\bpl@esurname}% \bpl@normalize{\bpl@ofirstname}{\bpl@efirstname}% \bpl@normalize{\bpl@ovonpart}{\bpl@evonpart}% + % Check if we are dealing with a plauthor + % First the plauthorname as set via option \ifboolexpr{ - test { \ifdefstrequal{\bpl@esurname}{\bpl@tsurname} } + test { \bpl@ifstreq{\bpl@esurname}{\bpl@tsurname} } and - ( test { \ifdefstrequal{\bpl@efirstname}{\bpl@tfirstname} } or test { \ifdefstring{\bpl@ofirstname}{} } + ( test { \bpl@ifstreq{\bpl@efirstname}{\bpl@tfirstname} } or test { \ifdefstring{\bpl@ofirstname}{} } or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl@efirstname}{\bpl@tfirstname} } ) ) and - ( test { \ifdefstrequal{\bpl@evonpart}{\bpl@tvonpart} } or test { \ifdefstring{\bpl@ovonpart}{} }) } - {\addtocategory{filtered}{\thefield{entrykey}}} - {}} + ( test { \bpl@ifstreq{\bpl@evonpart}{\bpl@tvonpart} } or test { \ifdefstring{\bpl@ovonpart}{} }) } + {\addtocategory{filtered}{\thefield{entrykey}}}% + {}% + % Then the name(s) set via macro + \def\bpl@lsurname{}% + \def\bpl@lfirstname{}% + \def\bpl@lvonpart{}% + \renewcommand*{\do}[1]{% + \jsp@splitpllist{##1}% + \bpl@normalize{\bpl@lsurname}{\bpl@elsurname}% + \bpl@normalize{\bpl@lfirstname}{\bpl@elfirstname}% + \bpl@normalize{\bpl@lvonpart}{\bpl@elvonpart}% + \ifboolexpr{ + test { \bpl@ifstreq{\bpl@elsurname}{\bpl@tsurname} } + and + ( test { \bpl@ifstreq{\bpl@elfirstname}{\bpl@tfirstname} } or test { \ifdefstring{\bpl@lfirstname}{} } + or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl@lfirstname}{\bpl@tfirstname} } ) + ) + and + ( test { \bpl@ifstreq{\bpl@elvonpart}{\bpl@tvonpart} } or test { \ifdefstring{\bpl@lvonpart}{} }) } + {\addtocategory{filtered}{\thefield{entrykey}}}% + {}% + }% + \dolistloop{\bpl@plauthors}% +} \DeclareIndexNameFormat[inbook,inproceedings,incollection]{editorfiltered}{}% \DeclareDelimFormat{bplfinalnamedelim}{% - \ifnumgreater{\value{liststop}}{3}{\finalandcomma}{}% + \ifnumgreater{\value{nonplauthors}}{2}{\finalandcomma}{}% + \addspace\bibstring{and}\space} + +\DeclareDelimFormat{bplfinalnamedelimed}{% + \ifnumgreater{\value{nonpleditors}}{2}{\finalandcomma}{}% \addspace\bibstring{and}\space} \AtDataInput{% @@ -362,204 +446,382 @@ \defbibfilter{mine}{category=filtered} + % -% Remove or embolden omitted name in author and editor lists +% Count non-plauthors % -\newtoggle{myselfprec} -\newtoggle{hadmyself} -\newtoggle{ismyself} -\DeclareNameFormat{author}{% - \if@hlauthor% - % Embolden omitted author + +\newcounter{nonplauthors} + +\DeclareIndexNameFormat{nonplauthorcount}{% + \newtoggle{havenonplauthor}% + \toggletrue{havenonplauthor}% \bpl@normalize{\namepartfamily}{\bpl@tsurname}% \bpl@normalize{\namepartgiven}{\bpl@tfirstname}% \bpl@normalize{\namepartprefix}{\bpl@tvonpart}% \bpl@normalize{\bpl@osurname}{\bpl@esurname}% \bpl@normalize{\bpl@ofirstname}{\bpl@efirstname}% \bpl@normalize{\bpl@ovonpart}{\bpl@evonpart}% + % Check if we are dealing with a plauthor + % First the plauthorname as set via option \ifboolexpr{ - test { \ifdefstrequal{\bpl@esurname}{\bpl@tsurname} } + test { \bpl@ifstreq{\bpl@esurname}{\bpl@tsurname} } and - ( test { \ifdefstrequal{\bpl@efirstname}{\bpl@tfirstname} } or test { \ifdefstring{\bpl@ofirstname}{} } - or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl@efirstname}{\bpl@tfirstname} } ) + ( test { \bpl@ifstreq{\bpl@efirstname}{\bpl@tfirstname} } or test { \ifdefstring{\bpl@ofirstname}{} } + or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl@efirstname}{\bpl@tfirstname} } ) ) and - ( test { \ifdefstrequal{\bpl@evonpart}{\bpl@tvonpart} } or test { \ifdefstring{\bpl@ovonpart}{} }) } - {\global\toggletrue{ismyself}}{\global\togglefalse{ismyself}}% - \ifthenelse{\value{listcount}=1}{}{% - \ifnumless{\value{listcount}}{\value{liststop}}% - {\multinamedelim}% - {\finalnamedelim}% - }% - \iftoggle{ismyself}{\plauthorhl{% - \if@givenfirst% given name first - \ifgiveninits - {\ifdefvoid{\namepartgiveni}{}{\namepartgiveni\addspace}}% - {\ifdefvoid{\namepartgiven}{}{\namepartgiven\addspace}}% - \ifdefvoid{\namepartprefix}{}{\namepartprefix\addspace}% - \namepartfamily% - \else% family name first - \ifdefvoid{\namepartprefix}{}{\namepartprefix\addspace}% - \namepartfamily% - \ifgiveninits - {\ifdefvoid{\namepartgiveni}{}{\addcomma\addspace\namepartgiveni\addspace}}% - {\ifdefvoid{\namepartgiven}{}{\addcomma\addspace\namepartgiven\isdot\addspace}}% - \fi - }}{% - \if@givenfirst% given name first - \ifgiveninits - {\ifdefvoid{\namepartgiveni}{}{\namepartgiveni\addspace}}% - {\ifdefvoid{\namepartgiven}{}{\namepartgiven\addspace}}% - \ifdefvoid{\namepartprefix}{}{\namepartprefix\addspace}% - \namepartfamily% - \else% family name first - \ifdefvoid{\namepartprefix}{}{\namepartprefix\addspace}% - \namepartfamily% - \ifgiveninits - {\ifdefvoid{\namepartgiveni}{}{\addcomma\addspace\namepartgiveni\addspace}}% - {\ifdefvoid{\namepartgiven}{}{\addcomma\addspace\namepartgiven\isdot\addspace}}% - \fi - }% - \usebibmacro{name:andothers}% - \else% \if@hlauthor false - \ifthenelse{\value{listcount}=1}{\ifthenelse{\value{author}>1}{\bibopenparen\bibstring{with}\addspace}{}}{}% - % Exclude omitted author - \bpl@normalize{\namepartfamily}{\bpl@tsurname}% - \bpl@normalize{\namepartgiven}{\bpl@tfirstname}% - \bpl@normalize{\namepartprefix}{\bpl@tvonpart}% + ( test { \bpl@ifstreq{\bpl@evonpart}{\bpl@tvonpart} } or test { \ifdefstring{\bpl@ovonpart}{} }) } + {\togglefalse{havenonplauthor}}% + {}% + % Then the name(s) set via macro + \def\bpl@lsurname{}% + \def\bpl@lfirstname{}% + \def\bpl@lvonpart{}% + \renewcommand*{\do}[1]{% + \jsp@splitpllist{##1}% + \bpl@normalize{\bpl@lsurname}{\bpl@elsurname}% + \bpl@normalize{\bpl@lfirstname}{\bpl@elfirstname}% + \bpl@normalize{\bpl@lvonpart}{\bpl@elvonpart}% + \ifboolexpr{ + test { \bpl@ifstreq{\bpl@elsurname}{\bpl@tsurname} } + and + ( test { \bpl@ifstreq{\bpl@elfirstname}{\bpl@tfirstname} } or test { \ifdefstring{\bpl@lfirstname}{} } + or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl@lfirstname}{\bpl@tfirstname} } ) + ) + and + ( test { \bpl@ifstreq{\bpl@elvonpart}{\bpl@tvonpart} } or test { \ifdefstring{\bpl@lvonpart}{} }) } + {\togglefalse{havenonplauthor}}% + {}% + }% + \dolistloop{\bpl@plauthors}% + \iftoggle{havenonplauthor}{\stepcounter{nonplauthors}}{}% +} + +\newcounter{nonpleditors} + +\DeclareIndexNameFormat{nonpleditorcount}{% + \newtoggle{havenonplauthor}% + \toggletrue{havenonplauthor}% + \edef\bpl@tsurname{\namepartfamily}% + \edef\bpl@tfirstname{\namepartgiven}% + \edef\bpl@tvonpart{\namepartprefix}% \bpl@normalize{\bpl@osurname}{\bpl@esurname}% \bpl@normalize{\bpl@ofirstname}{\bpl@efirstname}% \bpl@normalize{\bpl@ovonpart}{\bpl@evonpart}% + % Check if we are dealing with a plauthor + % First the plauthorname as set via option \ifboolexpr{ - test { \ifdefstrequal{\bpl@esurname}{\bpl@tsurname} } + test { \bpl@ifstreq{\bpl@esurname}{\bpl@tsurname} } and - ( test { \ifdefstrequal{\bpl@efirstname}{\bpl@tfirstname} } or test { \ifdefstring{\bpl@ofirstname}{} } + ( test { \bpl@ifstreq{\bpl@efirstname}{\bpl@tfirstname} } or test { \ifdefstring{\bpl@ofirstname}{} } or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl@efirstname}{\bpl@tfirstname} } ) - ) + ) and - ( test { \ifdefstrequal{\bpl@evonpart}{\bpl@tvonpart} } or test { \ifdefstring{\bpl@ovonpart}{} }) } - {\global\toggletrue{myselfprec}\global\toggletrue{hadmyself}% - \ifthenelse{\value{listcount}=1\AND\value{liststop}=1} - {\stepcounter{liststop}}{}} - {\ifthenelse{\value{listcount}=1}{\global\togglefalse{hadmyself}}{% - \ifboolexpr{ - test { \iftoggle{myselfprec} } + ( test { \bpl@ifstreq{\bpl@evonpart}{\bpl@tvonpart} } or test { \ifdefstring{\bpl@ovonpart}{} }) } + {\togglefalse{havenonplauthor}}% + {}% + % Then the name(s) set via macro + \def\bpl@lsurname{}% + \def\bpl@lfirstname{}% + \def\bpl@lvonpart{}% + \renewcommand*{\do}[1]{% + \jsp@splitpllist{##1}% + \bpl@normalize{\bpl@lsurname}{\bpl@elsurname}% + \bpl@normalize{\bpl@lfirstname}{\bpl@elfirstname}% + \bpl@normalize{\bpl@lvonpart}{\bpl@elvonpart}% + \ifboolexpr{ + test { \bpl@ifstreq{\bpl@elsurname}{\bpl@tsurname} } and - test { \ifnumless{\value{listcount}}{3} } } - {}{% - \ifnumless{\value{listcount}}{\value{liststop}-1}% - {\multinamedelim}% - {\iftoggle{hadmyself}{% - \ifnumless{\value{listcount}}{\value{liststop}}% - {\multinamedelim}% - {\bplfinalnamedelim}} - {\bplfinalnamedelim}}% - }% - }% - \ifgiveninits - {\ifdefvoid{\namepartgiveni}{}{\namepartgiveni\addspace}}% - {\ifdefvoid{\namepartgiven}{}{\namepartgiven\addspace}}% - \ifdefvoid{\namepartprefix}{}{\namepartprefix\addspace}% - \global\togglefalse{myselfprec}% - \namepartfamily}% - \usebibmacro{name:andothers}% - \ifthenelse{\value{listcount}=\value{liststop}\AND\value{author}>1}{\unspace\bibcloseparen}{}% - \fi% end of \if@hlauthor else condition + ( test { \bpl@ifstreq{\bpl@elfirstname}{\bpl@tfirstname} } or test { \ifdefstring{\bpl@lfirstname}{} } + or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl@lfirstname}{\bpl@tfirstname} } ) + ) + and + ( test { \bpl@ifstreq{\bpl@elvonpart}{\bpl@tvonpart} } or test { \ifdefstring{\bpl@lvonpart}{} }) } + {\togglefalse{havenonplauthor}}% + {}% + }% + \dolistloop{\bpl@plauthors}% + \iftoggle{havenonplauthor}{\stepcounter{nonpleditors}}{}% } -\DeclareNameFormat{editor}{% - \if@hlauthor - % Embolden omitted editor - \bpl@normalize{\namepartfamily}{\bpl@tsurname}% - \bpl@normalize{\namepartgiven}{\bpl@tfirstname}% - \bpl@normalize{\bpl@osurname}{\bpl@esurname}% - \bpl@normalize{\bpl@ofirstname}{\bpl@efirstname}% - \ifboolexpr{ - test { \ifdefstrequal{\bpl@esurname}{\bpl@tsurname} } +\newcounter{nonplauthor} +\newcounter{nonpleditor} +\AtEveryBibitem{% + \setcounter{nonplauthors}{0}% + \setcounter{nonpleditors}{0}% + \setcounter{nonplauthor}{0}% + \setcounter{nonpleditor}{0}% + \indexnames[nonplauthorcount]{author}% + \indexnames[nonpleditorcount]{editor}% +} + +% +% Remove or highlight plauthorname in author and editor lists +% +\newtoggle{plauthorprecedes} +\newtoggle{hadplauthor} +\newtoggle{isplauthor} + + +\DeclareNameFormat{author}{% + \bpl@normalize{\namepartfamily}{\bpl@tsurname}% + \bpl@normalize{\namepartgiven}{\bpl@tfirstname}% + \bpl@normalize{\namepartprefix}{\bpl@tvonpart}% + \bpl@normalize{\bpl@osurname}{\bpl@esurname}% + \bpl@normalize{\bpl@ofirstname}{\bpl@efirstname}% + \bpl@normalize{\bpl@ovonpart}{\bpl@evonpart}% + % Check if we are dealing with a plauthor + % First the plauthorname as set via option + \ifboolexpr{ + test { \bpl@ifstreq{\bpl@esurname}{\bpl@tsurname} } and - ( test { \ifdefstrequal{\bpl@efirstname}{\bpl@tfirstname} } or test { \ifdefstring{\bpl@ofirstname}{} } - or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl@efirstname}{\bpl@tfirstname} } ) + ( test { \bpl@ifstreq{\bpl@efirstname}{\bpl@tfirstname} } or test { \ifdefstring{\bpl@ofirstname}{} } + or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl@efirstname}{\bpl@tfirstname} } ) ) and - ( test { \ifdefstrequal{\bpl@evonpart}{\bpl@tvonpart} } or test { \ifdefstring{\bpl@ovonpart}{} }) } - {\global\toggletrue{ismyself}}{\global\togglefalse{ismyself}} + ( test { \bpl@ifstreq{\bpl@evonpart}{\bpl@tvonpart} } or test { \ifdefstring{\bpl@ovonpart}{} }) } + {\global\toggletrue{isplauthor}}{\global\togglefalse{isplauthor}}% + % Then the name(s) set via macro + \def\bpl@lsurname{}% + \def\bpl@lfirstname{}% + \def\bpl@lvonpart{}% + \renewcommand*{\do}[1]{% + \jsp@splitpllist{##1}% + \bpl@normalize{\bpl@lsurname}{\bpl@elsurname}% + \bpl@normalize{\bpl@lfirstname}{\bpl@elfirstname}% + \bpl@normalize{\bpl@lvonpart}{\bpl@elvonpart}% + \ifboolexpr{ + test { \bpl@ifstreq{\bpl@elsurname}{\bpl@tsurname} } + and + ( test { \bpl@ifstreq{\bpl@elfirstname}{\bpl@tfirstname} } or test { \ifdefstring{\bpl@lfirstname}{} } + or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl@lfirstname}{\bpl@tfirstname} } ) + ) + and + ( test { \bpl@ifstreq{\bpl@elvonpart}{\bpl@tvonpart} } or test { \ifdefstring{\bpl@lvonpart}{} }) } + {\global\toggletrue{isplauthor}}{}% + }% + \dolistloop{\bpl@plauthors}% + % + % First case: plauthorhandling=highlight + \if@hlauthor% + % Highlight plauthor(s) \ifthenelse{\value{listcount}=1}{}{% - \ifnumless{\value{listcount}}{\value{liststop}-1}% - {\multinamedelim}% - {\finalnamedelim}% + \ifnumless{\value{listcount}}{\value{liststop}}% + {\multinamedelim}% + {\finalnamedelim}% }% - \iftoggle{ismyself}{\plauthorhl{% + \iftoggle{isplauthor}{% + \plauthorhl{% + \if@givenfirst% given name first + \ifgiveninits + {\ifdefvoid{\namepartgiveni}{}{\namepartgiveni\addspace}}% + {\ifdefvoid{\namepartgiven}{}{\namepartgiven\addspace}}% + \ifdefvoid{\namepartprefix}% + {}% + {\namepartprefix\addspace}% + \namepartfamily% + \else% family name first + \ifdefvoid{\namepartprefix}% + {}% + {\namepartprefix\addspace}% + \namepartfamily% + \ifgiveninits + {\ifdefvoid{\namepartgiveni}{}{\addcomma\addspace\namepartgiveni\addspace}}% + {\ifdefvoid{\namepartgiven}{}{\addcomma\addspace\namepartgiven\isdot\addspace}}% + \fi + }% + }{% \if@givenfirst% given name first - \ifgiveninits - {\ifdefvoid{\namepartgiveni}{}{\namepartgiveni\addspace}}% - {\ifdefvoid{\namepartgiven}{}{\namepartgiven\addspace}}% - \ifdefvoid{\namepartprefix}{}{\namepartprefix\addspace}% - \namepartfamily% - \else% family name first - \ifdefvoid{\namepartprefix}{}{\namepartprefix\addspace}% - \namepartfamily% - \ifgiveninits - {\ifdefvoid{\namepartgiveni}{}{\addcomma\addspace\namepartgiveni\addspace}}% - {\ifdefvoid{\namepartgiven}{}{\addcomma\addspace\namepartgiven\isdot\addspace}}% - \fi - }}{% - \if@givenfirst% given name first - \ifgiveninits - {\ifdefvoid{\namepartgiveni}{}{\namepartgiveni\addspace}}% - {\ifdefvoid{\namepartgiven}{}{\namepartgiven\addspace}}% - \ifdefvoid{\namepartprefix}{}{\namepartprefix\addspace}% - \namepartfamily% + \ifgiveninits + {\ifdefvoid{\namepartgiveni}{}{\namepartgiveni\addspace}}% + {\ifdefvoid{\namepartgiven}{}{\namepartgiven\addspace}}% + \ifdefvoid{\namepartprefix}% + {}% + {\namepartprefix\addspace}% + \namepartfamily% \else% family name first - \ifdefvoid{\namepartprefix}{}{\namepartprefix\addspace}% - \namepartfamily% - \ifgiveninits - {\ifdefvoid{\namepartgiveni}{}{\addcomma\addspace\namepartgiveni\addspace}}% - {\ifdefvoid{\namepartgiven}{}{\addcomma\addspace\namepartgiven\isdot\addspace}}% - \fi + \ifdefvoid{\namepartprefix}% + {}% + {\namepartprefix\addspace}% + \namepartfamily% + \ifgiveninits + {\ifdefvoid{\namepartgiveni}{}{\addcomma\addspace\namepartgiveni\addspace}}% + {\ifdefvoid{\namepartgiven}{}{\addcomma\addspace\namepartgiven\isdot\addspace}}% + \fi }% \usebibmacro{name:andothers}% - \else% \if@hlauthor false - \ifthenelse{\value{listcount}=1}{\ifthenelse{\value{editor}>1}{\bibopenparen\bibstring{with}\addspace}{}}{}% - % Exclude omitted author - \bpl@normalize{\namepartfamily}{\bpl@tsurname}% - \bpl@normalize{\namepartgiven}{\bpl@tfirstname}% - \bpl@normalize{\bpl@osurname}{\bpl@esurname}% - \bpl@normalize{\bpl@ofirstname}{\bpl@efirstname}% - \ifboolexpr{ - test { \ifdefstrequal{\bpl@esurname}{\bpl@tsurname} } + % + % Second case: plauthorhandling=omit + \else% \if@hlauthor false + \ifthenelse{\value{listcount}=1}% + {\ifthenelse{\value{nonplauthors}>0}% + {\bibopenparen\bibstring{with}\addspace}% + {}% + \iftoggle{isplauthor}% + {\global\toggletrue{plauthorprecedes}}% + {\global\togglefalse{plauthorprecedes}}% + }% + {}% + % Exclude omitted author + \iftoggle{isplauthor}% + {% <- TRUE condition + \global\toggletrue{hadplauthor}% + }% <- end TRUE condition + {% <- FALSE condition + \stepcounter{nonplauthor}% + \ifthenelse{\value{listcount}=1}% + {\global\togglefalse{hadplauthor}}% + {% + \iftoggle{plauthorprecedes}% + {}% + {% + \ifnumless{\value{nonplauthor}}{\value{nonplauthors}}% + {\multinamedelim}% + {\bplfinalnamedelim}% + }% + }% + \ifgiveninits + {\ifdefvoid{\namepartgiveni}{}{\namepartgiveni\addspace}}% + {\ifdefvoid{\namepartgiven}{}{\namepartgiven\addspace}}% + \ifdefvoid{\namepartprefix}{}{\namepartprefix\addspace}% + \global\togglefalse{plauthorprecedes}% + \namepartfamily% + }% <- end FALSE condition + % + \usebibmacro{name:andothers}% + \ifthenelse{\value{nonplauthors}>0\AND\value{listcount}=\value{liststop}}{\unspace\bibcloseparen}{}% + \fi% end of \if@hlauthor else condition +} + +\DeclareNameFormat{editor}{% + \bpl@normalize{\namepartfamily}{\bpl@tsurname}% + \bpl@normalize{\namepartgiven}{\bpl@tfirstname}% + \bpl@normalize{\namepartprefix}{\bpl@tvonpart}% + \bpl@normalize{\bpl@osurname}{\bpl@esurname}% + \bpl@normalize{\bpl@ofirstname}{\bpl@efirstname}% + \bpl@normalize{\bpl@ovonpart}{\bpl@evonpart}% + % Check if we are dealing with a plauthor + % First the plauthorname as set via option + \ifboolexpr{ + test { \bpl@ifstreq{\bpl@esurname}{\bpl@tsurname} } and - ( test { \ifdefstrequal{\bpl@efirstname}{\bpl@tfirstname} } or test { \ifdefstring{\bpl@ofirstname}{} } - or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl@efirstname}{\bpl@tfirstname} } ) + ( test { \bpl@ifstreq{\bpl@efirstname}{\bpl@tfirstname} } or test { \ifdefstring{\bpl@ofirstname}{} } + or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl@efirstname}{\bpl@tfirstname} } ) ) and - ( test { \ifdefstrequal{\bpl@evonpart}{\bpl@tvonpart} } or test { \ifdefstring{\bpl@ovonpart}{} }) } - {\global\toggletrue{myselfprec}\global\toggletrue{hadmyself}% - \ifthenelse{\value{listcount}=1\AND\value{liststop}=1} - {\stepcounter{liststop}}{}} - {\ifthenelse{\value{listcount}=1}{\global\togglefalse{hadmyself}}{% - \ifboolexpr{ - test { \iftoggle{myselfprec} } - and - test { \ifnumless{\value{listcount}}{3} } } - {}{% - \ifnumless{\value{listcount}}{\value{liststop}-1}% - {\multinamedelim}% - {\iftoggle{hadmyself}{% - \ifnumless{\value{listcount}}{\value{liststop}}% - {\multinamedelim}% - {\bplfinalnamedelim}} - {\bplfinalnamedelim}}% - }% + ( test { \bpl@ifstreq{\bpl@evonpart}{\bpl@tvonpart} } or test { \ifdefstring{\bpl@ovonpart}{} }) } + {\global\toggletrue{isplauthor}}{\global\togglefalse{isplauthor}}% + % Then the name(s) set via macro + \def\bpl@lsurname{}% + \def\bpl@lfirstname{}% + \def\bpl@lvonpart{}% + \renewcommand*{\do}[1]{% + \jsp@splitpllist{##1}% + \bpl@normalize{\bpl@lsurname}{\bpl@elsurname}% + \bpl@normalize{\bpl@lfirstname}{\bpl@elfirstname}% + \bpl@normalize{\bpl@lvonpart}{\bpl@elvonpart}% + \ifboolexpr{ + test { \bpl@ifstreq{\bpl@elsurname}{\bpl@tsurname} } + and + ( test { \bpl@ifstreq{\bpl@elfirstname}{\bpl@tfirstname} } or test { \ifdefstring{\bpl@lfirstname}{} } + or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl@lfirstname}{\bpl@tfirstname} } ) + ) + and + ( test { \bpl@ifstreq{\bpl@elvonpart}{\bpl@tvonpart} } or test { \ifdefstring{\bpl@lvonpart}{} }) } + {\global\toggletrue{isplauthor}}{}% + }% + \dolistloop{\bpl@plauthors}% + % + % First case: plauthorhandling=highlight + \if@hlauthor + % Highlight omitted editor + \ifthenelse{\value{listcount}=1}{}{% + \ifnumless{\value{listcount}}{\value{liststop}-1}% + {\multinamedelim}% + {\finalnamedelim}% + }% + \iftoggle{isplauthor}{% + \plauthorhl{% + \if@givenfirst% given name first + \ifgiveninits + {\ifdefvoid{\namepartgiveni}{}{\namepartgiveni\addspace}}% + {\ifdefvoid{\namepartgiven}{}{\namepartgiven\addspace}}% + \ifdefvoid{\namepartprefix}% + {}% + {\namepartprefix\addspace}% + \namepartfamily% + \else% family name first + \ifdefvoid{\namepartprefix}% + {}% + {\namepartprefix\addspace}% + \namepartfamily% + \ifgiveninits + {\ifdefvoid{\namepartgiveni}{}{\addcomma\addspace\namepartgiveni\addspace}}% + {\ifdefvoid{\namepartgiven}{}{\addcomma\addspace\namepartgiven\isdot\addspace}}% + \fi }% - \ifgiveninits - {\ifdefvoid{\namepartgiveni}{}{\namepartgiveni\addspace}}% - {\ifdefvoid{\namepartgiven}{}{\namepartgiven\addspace}}% - \ifdefvoid{\namepartprefix}{}{\namepartprefix\addspace}% - \global\togglefalse{myselfprec}% - \namepartfamily}% - \usebibmacro{name:andothers}% - \ifthenelse{\value{listcount}=\value{liststop}\AND\value{editor}>1}{\unspace\bibcloseparen}{}% - \fi% end of \if@hlauthor else condition + }{% + \if@givenfirst% given name first + \ifgiveninits + {\ifdefvoid{\namepartgiveni}{}{\namepartgiveni\addspace}}% + {\ifdefvoid{\namepartgiven}{}{\namepartgiven\addspace}}% + \ifdefvoid{\namepartprefix}% + {}% + {\namepartprefix\addspace}% + \namepartfamily% + \else% family name first + \ifdefvoid{\namepartprefix}% + {}% + {\namepartprefix\addspace}% + \namepartfamily% + \ifgiveninits + {\ifdefvoid{\namepartgiveni}{}{\addcomma\addspace\namepartgiveni\addspace}}% + {\ifdefvoid{\namepartgiven}{}{\addcomma\addspace\namepartgiven\isdot\addspace}}% + \fi + }% + \usebibmacro{name:andothers}% + % + % Second case: plauthorhandling=omit + \else% \if@hlauthor false + \ifthenelse{\value{listcount}=1}% + {\ifthenelse{\value{nonpleditors}>0}% + {\bibopenparen\bibstring{with}\addspace}% + {}% + \iftoggle{isplauthor}% + {\global\toggletrue{plauthorprecedes}}% + {\global\togglefalse{plauthorprecedes}}% + }% + {}% + % Exclude omitted editor + \iftoggle{isplauthor}% + {% <- TRUE condition + \global\toggletrue{hadplauthor}% + }% <- end TRUE condition + {% <- FALSE condition + \stepcounter{nonpleditor}% + \ifthenelse{\value{listcount}=1}% + {\global\togglefalse{hadplauthor}}% + {% + \iftoggle{plauthorprecedes}% + {}% + {% + \ifnumless{\value{nonpleditor}}{\value{nonpleditors}}% + {\multinamedelim}% + {\bplfinalnamedelimed}% + }% + }% + \ifgiveninits + {\ifdefvoid{\namepartgiveni}{}{\namepartgiveni\addspace}}% + {\ifdefvoid{\namepartgiven}{}{\namepartgiven\addspace}}% + \ifdefvoid{\namepartprefix}{}{\namepartprefix\addspace}% + \global\togglefalse{plauthorprecedes}% + \namepartfamily% + }% <- end FALSE condition + % + \usebibmacro{name:andothers}% + \ifthenelse{\value{nonpleditors}>0\AND\value{listcount}=\value{liststop}}{\unspace\bibcloseparen}{}% + \fi% end of \if@hlauthor else condition } \DeclareNameFormat{bookauthor}{% @@ -1045,7 +1307,7 @@ % ignore author constellation on extralabel assignment. \if@hlauthor \else -\DeclareSourcemap{ +\DeclareStyleSourcemap{ \maps[datatype=bibtex]{ \map[overwrite]{ \step[fieldset=shortauthor, fieldvalue={1111}] diff --git a/Master/texmf-dist/tex/latex/biblatex-publist/publist.cbx b/Master/texmf-dist/tex/latex/biblatex-publist/publist.cbx index a2a20dcfa26..4313e0a20dd 100644 --- a/Master/texmf-dist/tex/latex/biblatex-publist/publist.cbx +++ b/Master/texmf-dist/tex/latex/biblatex-publist/publist.cbx @@ -26,8 +26,8 @@ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\def\bpl@version{1.13} -\def\bpl@rdate{2018/11/30} +\def\bpl@version{1.15} +\def\bpl@rdate{2019/02/22} \ProvidesFile{publist.cbx}[\bpl@rdate\space v.\bpl@version\space biblatex citation style (JSP)] |