summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-02-22 23:11:46 +0000
committerKarl Berry <karl@freefriends.org>2019-02-22 23:11:46 +0000
commitb4568bc71e054f3d1fd6404b45d2322631778284 (patch)
treee10afb3b4b681fc68a193a8dfb07a81a6b5d6922
parentddd7b1d08d0466b2b6b871fa121da39360689af2 (diff)
biblatex-publist (22feb19)
git-svn-id: svn://tug.org/texlive/trunk@50085 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/biblatex-publist/README10
-rw-r--r--Master/texmf-dist/doc/latex/biblatex-publist/biblatex-publist.pdfbin311050 -> 316645 bytes
-rw-r--r--Master/texmf-dist/doc/latex/biblatex-publist/biblatex-publist.tex110
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/publist.bbx696
-rw-r--r--Master/texmf-dist/tex/latex/biblatex-publist/publist.cbx4
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
index 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
Binary files differ
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)]