texlive[50085] Master/texmf-dist: biblatex-publist (22feb19)

commits+karl at tug.org commits+karl at tug.org
Sat Feb 23 00:11:47 CET 2019


Revision: 50085
          http://tug.org/svn/texlive?view=revision&revision=50085
Author:   karl
Date:     2019-02-23 00:11:46 +0100 (Sat, 23 Feb 2019)
Log Message:
-----------
biblatex-publist (22feb19)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/biblatex-publist/README
    trunk/Master/texmf-dist/doc/latex/biblatex-publist/biblatex-publist.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex-publist/biblatex-publist.tex
    trunk/Master/texmf-dist/tex/latex/biblatex-publist/publist.bbx
    trunk/Master/texmf-dist/tex/latex/biblatex-publist/publist.cbx

Modified: trunk/Master/texmf-dist/doc/latex/biblatex-publist/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex-publist/README	2019-02-22 23:11:28 UTC (rev 50084)
+++ trunk/Master/texmf-dist/doc/latex/biblatex-publist/README	2019-02-22 23:11:46 UTC (rev 50085)
@@ -45,6 +45,16 @@
 
 == 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.

Modified: trunk/Master/texmf-dist/doc/latex/biblatex-publist/biblatex-publist.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex-publist/biblatex-publist.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex-publist/biblatex-publist.tex	2019-02-22 23:11:28 UTC (rev 50084)
+++ trunk/Master/texmf-dist/doc/latex/biblatex-publist/biblatex-publist.tex	2019-02-22 23:11:46 UTC (rev 50085)
@@ -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 @@
 \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 @@
 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 @@
 \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 @@
 \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,8 +243,42 @@
 
 \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}
 
 The appearance of the \emph{marginyear} is controlled by the
@@ -277,7 +325,6 @@
 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 @@
 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 @@
 \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,7 +519,7 @@
 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}}]
@@ -476,8 +526,10 @@
 \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 @@
 \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,7 +581,7 @@
 		\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
@@ -522,7 +588,7 @@
 		      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 @@
 	    	\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 @@
 		\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}.

Modified: trunk/Master/texmf-dist/tex/latex/biblatex-publist/publist.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-publist/publist.bbx	2019-02-22 23:11:28 UTC (rev 50084)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-publist/publist.bbx	2019-02-22 23:11:46 UTC (rev 50085)
@@ -25,8 +25,8 @@
 %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-\def\bpl at version{1.13}
-\def\bpl at rdate{2018/11/30}
+\def\bpl at version{1.15}
+\def\bpl at rdate{2019/02/22}
 
 \ProvidesFile{publist.bbx}[\bpl at rdate\space v.\bpl at 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 at normalize#1#2{%
+  \begingroup
+  \def\bibnamedelima{ }%
+  \def\bibnamedelimb{ }%
+  \def\IeC##1{##1}%
+  \protected at 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 at startswith}
+\newcommand*{\if at startswith}[2]{%
+  \if\@car#1.\@nil\@car#2.\@nil
+     \expandafter\@firstoftwo
+  \else
+     \expandafter\@secondoftwo
+  \fi
+}
+%
+% Split plauthors list item
+\def\bpl at lsurname{}
+\def\bpl at lfirstname{}
+\def\bpl at lvonpart{}
+\def\jsp at splitpllist#1{%
+    \begingroup
+    \edef\@tempa{#1}%
+    \expandafter\endgroup
+    \expandafter\jsp@@splitpllist\@tempa\relax%
+}
+\def\jsp@@splitpllist#1,#2,#3\relax{%
+   \global\def\bpl at lfirstname{#1}%
+   \global\def\bpl at lvonpart{#2}%
+   \global\def\bpl at lsurname{#3}%
+}
+%
+% Fully expanded comparison
+% (adapted from scrbase.sty)
+\newcommand\bpl at 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 at ofirstname{}
 \def\bpl at ovonpart{}
 %
+% List to store multiple pl authors (for highlight only)
+\def\bpl at plauthors{}
+%
 % Manual way to specify publication list author name
 \def\plauthorname{%
    \@ifnextchar[%
@@ -181,10 +251,7 @@
      {\plauthorname at ii{#1}[]}%
 }
 \def\plauthorname at ii#1[#2]#3{%
-  % Do stuff
-  \def\bpl at osurname{#3}
-  \ifx\@empty#1\else\def\bpl at ofirstname{#1}\fi
-  \ifx\@empty#2\else\def\bpl at ovonpart{#2}\fi
+    \listgadd{\bpl at 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 at normalize#1#2{%
-  \begingroup
-  \def\bibnamedelima{ }%
-  \def\bibnamedelimb{ }%
-  \def\IeC##1{##1}%
-  \protected at 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 at startswith}
-\newcommand*{\if at 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 at normalize{\bpl at osurname}{\bpl at esurname}%
    \bpl at normalize{\bpl at ofirstname}{\bpl at efirstname}%
    \bpl at normalize{\bpl at ovonpart}{\bpl at evonpart}%
+   % Check if we are dealing with a plauthor
+   % First the plauthorname as set via option
    \ifboolexpr{
-      test { \ifdefstrequal{\bpl at esurname}{\bpl at tsurname} }
+      test { \bpl at ifstreq{\bpl at esurname}{\bpl at tsurname} }
       and
-      ( test { \ifdefstrequal{\bpl at efirstname}{\bpl at tfirstname} } or test { \ifdefstring{\bpl at ofirstname}{} }
+      ( test { \bpl at ifstreq{\bpl at efirstname}{\bpl at tfirstname} } or test { \ifdefstring{\bpl at ofirstname}{} }
         or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl at efirstname}{\bpl at tfirstname} } ) 
       )
       and
-      ( test { \ifdefstrequal{\bpl at evonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at ovonpart}{} }) }
-    {\addtocategory{filtered}{\thefield{entrykey}}}
-    {}}
+      ( test { \bpl at ifstreq{\bpl at evonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at ovonpart}{} }) }
+    {\addtocategory{filtered}{\thefield{entrykey}}}%
+    {}%
+    % Then the name(s) set via macro
+    \def\bpl at lsurname{}%
+    \def\bpl at lfirstname{}%
+    \def\bpl at lvonpart{}%
+    \renewcommand*{\do}[1]{%
+        \jsp at splitpllist{##1}%
+        \bpl at normalize{\bpl at lsurname}{\bpl at elsurname}%
+        \bpl at normalize{\bpl at lfirstname}{\bpl at elfirstname}%
+        \bpl at normalize{\bpl at lvonpart}{\bpl at elvonpart}%
+        \ifboolexpr{
+              test { \bpl at ifstreq{\bpl at elsurname}{\bpl at tsurname} }
+              and
+              ( test { \bpl at ifstreq{\bpl at elfirstname}{\bpl at tfirstname} } or test { \ifdefstring{\bpl at lfirstname}{} }
+                or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl at lfirstname}{\bpl at tfirstname} } )
+              )
+              and
+              ( test { \bpl at ifstreq{\bpl at elvonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at lvonpart}{} }) }
+            {\addtocategory{filtered}{\thefield{entrykey}}}%
+            {}%
+    }%
+   \dolistloop{\bpl at plauthors}%
+}
 
 \DeclareIndexNameFormat{editorfiltered}{%
    \edef\bpl at tsurname{\namepartfamily}%
@@ -338,22 +394,50 @@
    \bpl at normalize{\bpl at osurname}{\bpl at esurname}%
    \bpl at normalize{\bpl at ofirstname}{\bpl at efirstname}%
    \bpl at normalize{\bpl at ovonpart}{\bpl at evonpart}%
+   % Check if we are dealing with a plauthor
+   % First the plauthorname as set via option
    \ifboolexpr{
-      test { \ifdefstrequal{\bpl at esurname}{\bpl at tsurname} }
+      test { \bpl at ifstreq{\bpl at esurname}{\bpl at tsurname} }
       and
-      ( test { \ifdefstrequal{\bpl at efirstname}{\bpl at tfirstname} } or test { \ifdefstring{\bpl at ofirstname}{} }
+      ( test { \bpl at ifstreq{\bpl at efirstname}{\bpl at tfirstname} } or test { \ifdefstring{\bpl at ofirstname}{} }
         or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl at efirstname}{\bpl at tfirstname} } ) 
       )
       and
-      ( test { \ifdefstrequal{\bpl at evonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at ovonpart}{} }) }
-    {\addtocategory{filtered}{\thefield{entrykey}}}
-    {}}
+      ( test { \bpl at ifstreq{\bpl at evonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at ovonpart}{} }) }
+    {\addtocategory{filtered}{\thefield{entrykey}}}%
+    {}%
+    % Then the name(s) set via macro
+    \def\bpl at lsurname{}%
+    \def\bpl at lfirstname{}%
+    \def\bpl at lvonpart{}%
+    \renewcommand*{\do}[1]{%
+        \jsp at splitpllist{##1}%
+        \bpl at normalize{\bpl at lsurname}{\bpl at elsurname}%
+        \bpl at normalize{\bpl at lfirstname}{\bpl at elfirstname}%
+        \bpl at normalize{\bpl at lvonpart}{\bpl at elvonpart}%
+        \ifboolexpr{
+              test { \bpl at ifstreq{\bpl at elsurname}{\bpl at tsurname} }
+              and
+              ( test { \bpl at ifstreq{\bpl at elfirstname}{\bpl at tfirstname} } or test { \ifdefstring{\bpl at lfirstname}{} }
+                or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl at lfirstname}{\bpl at tfirstname} } )
+              )
+              and
+              ( test { \bpl at ifstreq{\bpl at elvonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at lvonpart}{} }) }
+            {\addtocategory{filtered}{\thefield{entrykey}}}%
+            {}%
+    }%
+   \dolistloop{\bpl at 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{%
   \indexnames[authorfiltered]{author}%
@@ -362,15 +446,16 @@
 
 \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 at hlauthor%
-   % Embolden omitted author
+
+\newcounter{nonplauthors}
+
+\DeclareIndexNameFormat{nonplauthorcount}{%
+   \newtoggle{havenonplauthor}%
+   \toggletrue{havenonplauthor}%
    \bpl at normalize{\namepartfamily}{\bpl at tsurname}%
    \bpl at normalize{\namepartgiven}{\bpl at tfirstname}%
    \bpl at normalize{\namepartprefix}{\bpl at tvonpart}%
@@ -377,189 +462,366 @@
    \bpl at normalize{\bpl at osurname}{\bpl at esurname}%
    \bpl at normalize{\bpl at ofirstname}{\bpl at efirstname}%
    \bpl at normalize{\bpl at ovonpart}{\bpl at evonpart}%
+   % Check if we are dealing with a plauthor
+   % First the plauthorname as set via option
    \ifboolexpr{
-      test { \ifdefstrequal{\bpl at esurname}{\bpl at tsurname} }
+      test { \bpl at ifstreq{\bpl at esurname}{\bpl at tsurname} }
       and
-      ( test { \ifdefstrequal{\bpl at efirstname}{\bpl at tfirstname} } or test { \ifdefstring{\bpl at ofirstname}{} }
-        or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl at efirstname}{\bpl at tfirstname} } )
+      ( test { \bpl at ifstreq{\bpl at efirstname}{\bpl at tfirstname} } or test { \ifdefstring{\bpl at ofirstname}{} }
+        or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl at efirstname}{\bpl at tfirstname} } ) 
       )
       and
-      ( test { \ifdefstrequal{\bpl at evonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at ovonpart}{} }) }
-          {\global\toggletrue{ismyself}}{\global\togglefalse{ismyself}}%
-   \ifthenelse{\value{listcount}=1}{}{%
-       \ifnumless{\value{listcount}}{\value{liststop}}%
-          {\multinamedelim}%
-          {\finalnamedelim}%
-   }%
-   \iftoggle{ismyself}{\plauthorhl{%
-      \if at 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 at 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 at hlauthor false
-   \ifthenelse{\value{listcount}=1}{\ifthenelse{\value{author}>1}{\bibopenparen\bibstring{with}\addspace}{}}{}%
-   % Exclude omitted author
-   \bpl at normalize{\namepartfamily}{\bpl at tsurname}%
-   \bpl at normalize{\namepartgiven}{\bpl at tfirstname}%
-   \bpl at normalize{\namepartprefix}{\bpl at tvonpart}%
+      ( test { \bpl at ifstreq{\bpl at evonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at ovonpart}{} }) }
+    {\togglefalse{havenonplauthor}}%
+    {}%
+    % Then the name(s) set via macro
+    \def\bpl at lsurname{}%
+    \def\bpl at lfirstname{}%
+    \def\bpl at lvonpart{}%
+    \renewcommand*{\do}[1]{%
+        \jsp at splitpllist{##1}%
+        \bpl at normalize{\bpl at lsurname}{\bpl at elsurname}%
+        \bpl at normalize{\bpl at lfirstname}{\bpl at elfirstname}%
+        \bpl at normalize{\bpl at lvonpart}{\bpl at elvonpart}%
+        \ifboolexpr{
+              test { \bpl at ifstreq{\bpl at elsurname}{\bpl at tsurname} }
+              and
+              ( test { \bpl at ifstreq{\bpl at elfirstname}{\bpl at tfirstname} } or test { \ifdefstring{\bpl at lfirstname}{} }
+                or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl at lfirstname}{\bpl at tfirstname} } )
+              )
+              and
+              ( test { \bpl at ifstreq{\bpl at elvonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at lvonpart}{} }) }
+            {\togglefalse{havenonplauthor}}%
+            {}%
+    }%
+   \dolistloop{\bpl at plauthors}%
+   \iftoggle{havenonplauthor}{\stepcounter{nonplauthors}}{}%
+}
+
+\newcounter{nonpleditors}
+
+\DeclareIndexNameFormat{nonpleditorcount}{%
+   \newtoggle{havenonplauthor}%
+   \toggletrue{havenonplauthor}%
+   \edef\bpl at tsurname{\namepartfamily}%
+   \edef\bpl at tfirstname{\namepartgiven}%
+   \edef\bpl at tvonpart{\namepartprefix}%
    \bpl at normalize{\bpl at osurname}{\bpl at esurname}%
    \bpl at normalize{\bpl at ofirstname}{\bpl at efirstname}%
    \bpl at normalize{\bpl at ovonpart}{\bpl at evonpart}%
+   % Check if we are dealing with a plauthor
+   % First the plauthorname as set via option
    \ifboolexpr{
-      test { \ifdefstrequal{\bpl at esurname}{\bpl at tsurname} }
+      test { \bpl at ifstreq{\bpl at esurname}{\bpl at tsurname} }
       and
-      ( test { \ifdefstrequal{\bpl at efirstname}{\bpl at tfirstname} } or test { \ifdefstring{\bpl at ofirstname}{} }
+      ( test { \bpl at ifstreq{\bpl at efirstname}{\bpl at tfirstname} } or test { \ifdefstring{\bpl at ofirstname}{} }
         or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl at efirstname}{\bpl at tfirstname} } ) 
-      ) 
+      )
       and
-      ( test { \ifdefstrequal{\bpl at evonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at 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 at ifstreq{\bpl at evonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at ovonpart}{} }) }
+    {\togglefalse{havenonplauthor}}%
+    {}%
+    % Then the name(s) set via macro
+    \def\bpl at lsurname{}%
+    \def\bpl at lfirstname{}%
+    \def\bpl at lvonpart{}%
+    \renewcommand*{\do}[1]{%
+        \jsp at splitpllist{##1}%
+        \bpl at normalize{\bpl at lsurname}{\bpl at elsurname}%
+        \bpl at normalize{\bpl at lfirstname}{\bpl at elfirstname}%
+        \bpl at normalize{\bpl at lvonpart}{\bpl at elvonpart}%
+        \ifboolexpr{
+              test { \bpl at ifstreq{\bpl at elsurname}{\bpl at 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 at hlauthor else condition
+              ( test { \bpl at ifstreq{\bpl at elfirstname}{\bpl at tfirstname} } or test { \ifdefstring{\bpl at lfirstname}{} }
+                or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl at lfirstname}{\bpl at tfirstname} } )
+              )
+              and
+              ( test { \bpl at ifstreq{\bpl at elvonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at lvonpart}{} }) }
+            {\togglefalse{havenonplauthor}}%
+            {}%
+    }%
+   \dolistloop{\bpl at plauthors}%
+   \iftoggle{havenonplauthor}{\stepcounter{nonpleditors}}{}%
 }
 
-\DeclareNameFormat{editor}{%
- \if at hlauthor
-   % Embolden omitted editor
-   \bpl at normalize{\namepartfamily}{\bpl at tsurname}%
-   \bpl at normalize{\namepartgiven}{\bpl at tfirstname}%
-   \bpl at normalize{\bpl at osurname}{\bpl at esurname}%
-   \bpl at normalize{\bpl at ofirstname}{\bpl at efirstname}%
-   \ifboolexpr{
-      test { \ifdefstrequal{\bpl at esurname}{\bpl at 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 at normalize{\namepartfamily}{\bpl at tsurname}%
+  \bpl at normalize{\namepartgiven}{\bpl at tfirstname}%
+  \bpl at normalize{\namepartprefix}{\bpl at tvonpart}%
+  \bpl at normalize{\bpl at osurname}{\bpl at esurname}%
+  \bpl at normalize{\bpl at ofirstname}{\bpl at efirstname}%
+  \bpl at normalize{\bpl at ovonpart}{\bpl at evonpart}%
+  % Check if we are dealing with a plauthor
+  % First the plauthorname as set via option
+  \ifboolexpr{
+      test { \bpl at ifstreq{\bpl at esurname}{\bpl at tsurname} }
       and
-      ( test { \ifdefstrequal{\bpl at efirstname}{\bpl at tfirstname} } or test { \ifdefstring{\bpl at ofirstname}{} }
-        or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl at efirstname}{\bpl at tfirstname} } ) 
+      ( test { \bpl at ifstreq{\bpl at efirstname}{\bpl at tfirstname} } or test { \ifdefstring{\bpl at ofirstname}{} }
+        or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl at efirstname}{\bpl at tfirstname} } )
       )
       and
-      ( test { \ifdefstrequal{\bpl at evonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at ovonpart}{} }) }
-          {\global\toggletrue{ismyself}}{\global\togglefalse{ismyself}}
+      ( test { \bpl at ifstreq{\bpl at evonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at ovonpart}{} }) }
+      {\global\toggletrue{isplauthor}}{\global\togglefalse{isplauthor}}%
+  % Then the name(s) set via macro
+  \def\bpl at lsurname{}%
+  \def\bpl at lfirstname{}%
+  \def\bpl at lvonpart{}%
+  \renewcommand*{\do}[1]{%
+     \jsp at splitpllist{##1}%
+     \bpl at normalize{\bpl at lsurname}{\bpl at elsurname}%
+     \bpl at normalize{\bpl at lfirstname}{\bpl at elfirstname}%
+     \bpl at normalize{\bpl at lvonpart}{\bpl at elvonpart}%
+     \ifboolexpr{
+           test { \bpl at ifstreq{\bpl at elsurname}{\bpl at tsurname} }
+           and
+           ( test { \bpl at ifstreq{\bpl at elfirstname}{\bpl at tfirstname} } or test { \ifdefstring{\bpl at lfirstname}{} }
+             or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl at lfirstname}{\bpl at tfirstname} } )
+           )
+           and
+           ( test { \bpl at ifstreq{\bpl at elvonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at lvonpart}{} }) }
+          {\global\toggletrue{isplauthor}}{}%
+  }%
+  \dolistloop{\bpl at plauthors}%
+  %
+  % First case: plauthorhandling=highlight
+  \if at 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 at 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 at 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
-       }}{%
-         \if at 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
+              \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 at hlauthor false
-   \ifthenelse{\value{listcount}=1}{\ifthenelse{\value{editor}>1}{\bibopenparen\bibstring{with}\addspace}{}}{}%
-   % Exclude omitted author
-   \bpl at normalize{\namepartfamily}{\bpl at tsurname}%
-   \bpl at normalize{\namepartgiven}{\bpl at tfirstname}%
-   \bpl at normalize{\bpl at osurname}{\bpl at esurname}%
-   \bpl at normalize{\bpl at ofirstname}{\bpl at efirstname}%
-   \ifboolexpr{
-      test { \ifdefstrequal{\bpl at esurname}{\bpl at tsurname} }
+  %
+  % Second case: plauthorhandling=omit
+  \else% \if at 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 at hlauthor else condition
+}
+
+\DeclareNameFormat{editor}{%
+  \bpl at normalize{\namepartfamily}{\bpl at tsurname}%
+  \bpl at normalize{\namepartgiven}{\bpl at tfirstname}%
+  \bpl at normalize{\namepartprefix}{\bpl at tvonpart}%
+  \bpl at normalize{\bpl at osurname}{\bpl at esurname}%
+  \bpl at normalize{\bpl at ofirstname}{\bpl at efirstname}%
+  \bpl at normalize{\bpl at ovonpart}{\bpl at evonpart}%
+  % Check if we are dealing with a plauthor
+  % First the plauthorname as set via option
+  \ifboolexpr{
+      test { \bpl at ifstreq{\bpl at esurname}{\bpl at tsurname} }
       and
-      ( test { \ifdefstrequal{\bpl at efirstname}{\bpl at tfirstname} } or test { \ifdefstring{\bpl at ofirstname}{} }
-        or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl at efirstname}{\bpl at tfirstname} } ) 
+      ( test { \bpl at ifstreq{\bpl at efirstname}{\bpl at tfirstname} } or test { \ifdefstring{\bpl at ofirstname}{} }
+        or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl at efirstname}{\bpl at tfirstname} } )
       )
       and
-      ( test { \ifdefstrequal{\bpl at evonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at 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 at ifstreq{\bpl at evonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at ovonpart}{} }) }
+      {\global\toggletrue{isplauthor}}{\global\togglefalse{isplauthor}}%
+  % Then the name(s) set via macro
+  \def\bpl at lsurname{}%
+  \def\bpl at lfirstname{}%
+  \def\bpl at lvonpart{}%
+  \renewcommand*{\do}[1]{%
+     \jsp at splitpllist{##1}%
+     \bpl at normalize{\bpl at lsurname}{\bpl at elsurname}%
+     \bpl at normalize{\bpl at lfirstname}{\bpl at elfirstname}%
+     \bpl at normalize{\bpl at lvonpart}{\bpl at elvonpart}%
+     \ifboolexpr{
+           test { \bpl at ifstreq{\bpl at elsurname}{\bpl at tsurname} }
+           and
+           ( test { \bpl at ifstreq{\bpl at elfirstname}{\bpl at tfirstname} } or test { \ifdefstring{\bpl at lfirstname}{} }
+             or ( test { \iftoggle{firstinit} } and test{ \iffirstinitialsequal{\bpl at lfirstname}{\bpl at tfirstname} } )
+           )
+           and
+           ( test { \bpl at ifstreq{\bpl at elvonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at lvonpart}{} }) }
+          {\global\toggletrue{isplauthor}}{}%
+  }%
+  \dolistloop{\bpl at plauthors}%
+  %
+  % First case: plauthorhandling=highlight
+  \if at hlauthor
+      % Highlight omitted editor
+      \ifthenelse{\value{listcount}=1}{}{%
+          \ifnumless{\value{listcount}}{\value{liststop}-1}%
+              {\multinamedelim}%
+              {\finalnamedelim}%
+      }%
+      \iftoggle{isplauthor}{%
+          \plauthorhl{%
+              \if at 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 at hlauthor else condition
+      }{%
+          \if at 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 at 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 at hlauthor else condition
 }
 
 \DeclareNameFormat{bookauthor}{%
@@ -1045,7 +1307,7 @@
 % ignore author constellation on extralabel assignment.
 \if at hlauthor
 \else
-\DeclareSourcemap{
+\DeclareStyleSourcemap{
   \maps[datatype=bibtex]{
     \map[overwrite]{
        \step[fieldset=shortauthor, fieldvalue={1111}]

Modified: trunk/Master/texmf-dist/tex/latex/biblatex-publist/publist.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-publist/publist.cbx	2019-02-22 23:11:28 UTC (rev 50084)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-publist/publist.cbx	2019-02-22 23:11:46 UTC (rev 50085)
@@ -26,8 +26,8 @@
 %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-\def\bpl at version{1.13}
-\def\bpl at rdate{2018/11/30}
+\def\bpl at version{1.15}
+\def\bpl at rdate{2019/02/22}
 
 \ProvidesFile{publist.cbx}[\bpl at rdate\space v.\bpl at version\space
                            biblatex citation style (JSP)]



More information about the tex-live-commits mailing list