texlive[64802] Master/texmf-dist: biblatex-publist (24oct22)

commits+karl at tug.org commits+karl at tug.org
Mon Oct 24 21:34:57 CEST 2022


Revision: 64802
          http://tug.org/svn/texlive?view=revision&revision=64802
Author:   karl
Date:     2022-10-24 21:34:56 +0200 (Mon, 24 Oct 2022)
Log Message:
-----------
biblatex-publist (24oct22)

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
    trunk/Master/texmf-dist/tex/latex/biblatex-publist/publist.dbx

Modified: trunk/Master/texmf-dist/doc/latex/biblatex-publist/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex-publist/README	2022-10-24 19:34:41 UTC (rev 64801)
+++ trunk/Master/texmf-dist/doc/latex/biblatex-publist/README	2022-10-24 19:34:56 UTC (rev 64802)
@@ -46,6 +46,25 @@
 
 == CHANGES ==
 
+* V. 2.0 (2022-10-24):
+	- Provide \ExecutePublistOptions to change (most) biblatex-publist options
+	  on the fly.
+	- Properly support reverse numbering even if filtering is done (#38).
+	- Add plnumgroup environment to temporarily suspend plnumbering=local.
+	- Add new macro \setplnum (#39).
+	- Rename macro \shiftbplnum to \shiftplnum (old macro kept for compatibility).
+	- Fix with \shiftplnum with ascending enumeration.
+	- Introduce one option (plnumbering) that replaces the previous two
+	  (plnumbered + reversenumbering). Old options are kept for compatibility.
+	- Introduce one multichoice option (linktitles) that replaces the previous
+	  options (linktitleall, linktitledoi, linktitleurl, linktitleisbn,
+	  linktitleissn). Old options are kept for compatibility.
+	- Rename option boldyear to hlyear. Old option kept for compatibility.
+	- Allow customization of the highlighting set with hlyear.
+	- Introduce plsorting option.
+	- Add support for OpenAccess information.
+	- Add support for Journal Impact Factor.
+
 * V. 1.27 (2022-10-03):
 	- Fix once more plauthor check with non-ASCII chars and macros.
 

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	2022-10-24 19:34:41 UTC (rev 64801)
+++ trunk/Master/texmf-dist/doc/latex/biblatex-publist/biblatex-publist.tex	2022-10-24 19:34:56 UTC (rev 64802)
@@ -1,3 +1,4 @@
+% !TeX spellcheck = en_US
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %% File biblatex-publist.tex
 %%
@@ -35,6 +36,7 @@
 	basicstyle={\small\ttfamily},
 	frame=single}
 \usepackage{babel}
+\usepackage{csquotes}
 \usepackage{url}
 \usepackage[svgnames]{xcolor}
 \usepackage[unicode=true]{hyperref}
@@ -64,20 +66,29 @@
 \renewcommand{\cftsecpagefont}{\small\bfseries}
 \renewcommand{\cftsubsecfont}{\small}
 \renewcommand{\cftsubsecpagefont}{\small}
+\renewcommand{\cftsubsubsecfont}{\small}
+\renewcommand{\cftsubsubsecpagefont}{\small}
 
 % Some semantic markup
 \makeatletter
+\newcommand*\@marginmacro[2][]{%
+	\marginpar{\IfBlankTF{#1}{}{\hspace*{#1em}}\raggedleft\small\textcolor{Maroon}{\texttt{#2}}}%
+}
 \def\jmacro{\@ifstar\@@jmacro\@jmacro}
-\newcommand*\@marginmacro[1]{\marginpar{\small\texttt{#1}}}
 \newcommand*\@jmacro[1]{\textbf{\texttt{#1}}}
-\newcommand*\@@jmacro[1]{\@jmacro{#1}\@marginmacro{#1}}
+\newcommand*\@@jmacro[2][]{\@jmacro{#2}\IfBlankTF{#1}{\@marginmacro{#2}}{\@marginmacro[#1]{#2}}}
 \def\jcsmacro{\@ifstar\@@jcsmacro\@jcsmacro}
 \newcommand*\@jcsmacro[1]{\@jmacro{\textbackslash{#1}}}
-\newcommand*\@@jcsmacro[1]{\@@jmacro{\textbackslash{#1}}}
+\newcommand*\@@jcsmacro[2][]{\IfBlankTF{#1}{\@@jmacro{\textbackslash{#2}}}{\@@jmacro[#1]{\textbackslash{#2}}}}
 \newcommand*\joption[1]{\textbf{\texttt{#1}}}
 \newcommand*\jfoption[1]{\texttt{#1}}
 \newcommand*\jfmacro[1]{\texttt{#1}}
 \newcommand*\jfcsmacro[1]{\jfmacro{\textbackslash{#1}}}
+\def\jenviron{\@ifstar\@@jenviron\@jenviron}
+\newcommand*\@jenviron[1]{\textbf{\texttt{#1}}}
+\newcommand*\@@jenviron[1]{\marginpar{\raggedleft\small\textcolor{Maroon}{\texttt{#1}}}%
+	\textbf{\texttt{\textbackslash begin\{#1\}$\ldots$\textbackslash end\{#1\}}}%
+}
 \newcommand*\bpl{\texttt{biblatex-publist}}
 \newcommand*\bibltx{\texttt{biblatex}}
 \makeatother
@@ -102,15 +113,16 @@
 \thanks{Please report issues via \protect\url{https://github.com/jspitz/biblatex-publist}.}%
 }
 
-\date{Version 1.27 2022/10/03}
+\date{Version 2.0, 2022/10/24}
 \maketitle
 
 \begin{abstract}
 \noindent The \bpl\ package provides a \bibltx\ \cite{bibltx} style file
-for publication lists, i.\,e., a bibliography containing one's own
-publications. It draws on \bibltx's \emph{authoryear} style by default
-(which can be changed), but provides some extra features needed for publication lists,
-such as the omission or highlighting of the own name from\slash in author or editor data.
+for publication lists -- a bibliography listing one's own
+publications. It employs \bibltx's \emph{author\-year} style by default
+(which can be changed), but provides extra features needed for publication lists,
+such as the omission or highlighting of the own name from\slash in author or editor data
+and specific numbering.
 The package requires at least version 3.8 of \bibltx\ and \texttt{biber}
 (the respective version as required by \bibltx).
 \end{abstract}
@@ -117,7 +129,7 @@
 
 \tableofcontents
 
-\section{Aim of the package}
+\section{Aim of the Package}
 
 The \bpl\ package provides a \bibltx\ bibliography style specifically for academic publication lists.
 Such lists, which are a central part of the academic CV, contain all or selected
@@ -131,7 +143,7 @@
 
 Given the fact that maintaining a publication list is a routine task
 in an academian's life, it is surprising how few specified solutions
-exist to generate such lists (particularly from Bib\TeX\ data). For
+are at disposal to generate such lists (particularly from Bib\TeX\ data). For
 classic Bib\TeX, Nicolas Markey provides (off CTAN) a Bib\TeX\ style file
 dedicated to that task, \emph{publist.bst}%
 \footnote{See \url{http://www.lsv.fr/~markey/BibTeX/publist/publist.bst}
@@ -140,7 +152,8 @@
 The \bpl\ package started off as the attempt to emulate the features of
 \emph{publist.bst} with \bibltx's means; it thus partly draws on
 its conceptual ideas. Meanwhile, however, it has significantly exceeded
-that initial goal and provides many more features than \emph{publist.bst}.
+that initial goal and provides many more features than \emph{publist.bst},
+thereby accounting for my own needs and for requests that reached me.
 
 The list of features includes:
 
@@ -150,10 +163,12 @@
 	\item Filter publications of specific authors from heterogeneous bibliography databases
 	\item Date-centric sorting (as typical for publication lists)
 	\item Number items in ascending or descending order, globally or sectional
-	\item Highlight year of publication
-	\item Indicate year of publication (sets) in the margin
+	\item Highlight the year of publication
+	\item Optionally indicate the year of publication (sets) in the margin
 	\item Clickable titles, linking to the URL, DOI, or a web catalog
 	\item Indicate if/how a title has been peer-reviewed
+	\item Mark OpenAccess publications
+	\item Give bibliometric information (journal impact factor)
 	\item List reviews of specific titles
 	\item Adjustable base bibliography style
 \end{itemize}
@@ -162,22 +177,24 @@
 If you miss a specific feature, feel free to suggest it via
 \url{https://github.com/jspitz/biblatex-publist/issues}.
 
-\subsection*{Caveats}
+\subsection*{Requirements and Caveats}
 
 Note that \bpl\ relies on rather advanced features of \bibltx\ for some of its own features.
 These are only available with the \texttt{biber} backend of \bibltx. Hence \bpl\ requires
 the use of \texttt{biber} as well -- the \texttt{bibtex} backend won't work!
+Furthermore, the package employs some newer \LaTeXe\ and \texttt{latex3} features. So a quite
+recent \LaTeX\ distribution is required.
 
-Also note that the aim of \bpl\ is to generate publication lists, so it is not suitable
+Also note that the aim of \bpl\ is to generate publication lists, so it is \emph{not suitable}
 for normal bibliographies. Specifically, while basic citing works, more advanced
 forms of citing may break or not produce the expected result. The reason is that
-\bpl\ needs to perform internal tweaks (e.\,g., to \textsf{shortauthor} and
-\textsf{labelname}) which might bite you with customized cite formats.
+\bpl\ needs to perform internal tweaks (e.\,g., to \textsf{shortauthor},
+\textsf{labelname} and numbering) which might bite you with customized cite formats.
 
 
 \section{Usage}
 
-\subsection{Standard usage\label{sec:standard-usage}}
+\subsection{Standard Usage\label{sec:standard-usage}}
 
 The standard way of using the package is to load the style file via
 \begin{lstlisting}[moretexcs={[1]{plauthorname}}]
@@ -189,9 +206,10 @@
 (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). 
+author\slash editor list or which entries it should retrieve from a database. In other words,
+it defines the name(s) of the person(s) whose publications are listed.
 
-With the default settings, the author\slash editor name(s) will be omitted completely
+By default, the author\slash editor name(s) will be omitted completely
 for all 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
@@ -211,7 +229,7 @@
 \end{quote}
 %
 Note that \jcsmacro{plauthorname} expects the name constituents as they are recorded in the
-database (special characters will be expanded). The option \joption{plauthorfirstinit} (see next section),
+database (special characters are handled). The option \joption{plauthorfirstinit} (see next section),
 however, allows you to pass only an initial character instead of a first name.
 
 If you want to refer to an item number, use \jcsmacro*{citeitem}\jmacro{\{<key>\}} within your publication list.
@@ -218,9 +236,8 @@
 This will print the item number in square brackets (like the \jfcsmacro{cite} command in numeric citation styles),
 but as opposed to normal \jfcsmacro{cite} it also considers all numbering tweaks you make via the \bpl\ options.
 
-\condbr{4}
 
-\subsection{Additional options}\label{sec:addopts}
+\subsection{Additional Options}\label{sec:addopts}
 
 Currently, the following additional options are provided (next to the
 options provided by the \bibltx\ package itself%
@@ -231,55 +248,69 @@
 \item [{\joption{plauthornameprefix=<von-part>}}] ~
 
 This is an alternative to the \jcsmacro{plauthorname} macro
-described in sec.~\ref{sec:standard-usage}.\footnote{The options were called \jfoption{omitname}, \jfoption{omitfirstname} and \jfoption{omitnameprefix} until v.\,1.4
-of \bpl. The old options still work, but are marked as deprecated.} However, due to the
-way bibliography options are implemented in \bibltx, this only works
-if your name does not consist of non-ASCII characters. Hence, the
-\jcsmacro{plauthorname} macro is the recommended way.
+described in sec.~\ref{sec:standard-usage} to set the publication list author.%
+\footnote{The options were called \jfoption{omitname}, \jfoption{omitfirstname} and \jfoption{omitnameprefix}
+	until v.\,1.4 of \bpl. The old options still work, but are marked as deprecated.}
+As opposed to the macro, however, the options do not provide for multiple authors and name variants
+(see sec.~\ref{sec:multiauthors}).
 
 \item [{\joption{plauthorhandling{[}=omit|highlight{]}}}] default: \emph{omit}.
 
 By default, the publist author (as defined with \jmacro{plauthor}) is omitted from
 the author or editor list. If you use the option \joption{plauthorhandling=highlight},
-it is highlighted instead (i.\,e., set in bold face by default; see sec.~\ref{sec:auxmacros} how to change that).
+it is highlighted instead (set in bold face by default; see sec.~\ref{sec:auxmacros} how to change that).
 
 \item [{\joption{nameorder{[}=family-given|given-family{]}}}] default: \emph{family-given}.
 
-By default, the author and editor names with \joption{plauthorhandling=highlight} are output in the order ``Lastname, Given Names''.
-To change the order to ``Given Names Lastname'', pass the option \joption{nameorder=given-family} to \bibltx.
+By default, the author and editor names with \joption{plauthorhandling=highlight} are output in the order \enquote{Lastname, Given Names}.
+To change the order to \enquote{Given Names Lastname}, pass the option \joption{nameorder=given-family} to \bibltx.
 
-\item [{\joption{boldyear{[}=true|false{]}}}] default: \emph{true}.
+\item [{\joption{hlyear{[}=true|false{]}}}] default: \emph{true}.\footnote{%
+   Named \joption{boldyear} up to \bpl\ 1.27. The old option is till supported.}
 
-By default, the year (or pubstate, if no year is given) is printed in bold face.
-To prevent this, pass the
-option \joption{boldyear=false} to \bibltx.
+By default, the year (or pubstate, if no year is given) is highlighted (printed in bold face).
+To prevent this, pass the option \joption{hlyear=false} to \bibltx. The form of highlighting
+can be customized as well (see sec.~\ref{sec:auxmacros}).
 
-\item [{\joption{pubstateextra{[}=true|false{]}}}] default: \emph{false}.
-
-If this is \texttt{true}, the extradate marker (a, b etc.) is also appended to pubstates if there are multiple
-indentical pubstates (e.\,g., \emph{Forthcoming(a)}, \emph{Forthcoming(b)})
-
 \item [{\joption{marginyear{[}=true|false{]}}}] default: \emph{false}.
 
 With this option set to \joption{true}, the publication year (or pubstate) will
 be printed in the margin once a new year starts. The option also has
-the effect that all marginpars are printed ``reversed'', i.\,e.
+the effect that all marginpars are printed \enquote{reversed}, i.\,e.
 on the left side in one-sided documents (via \jfcsmacro{reversemarginpar}).
 
-\item [{\joption{plnumbered{[}=true|false|reset{]}}}] default: \emph{true}.
+\item [{\joption{pubstateextra{[}=true|false{]}}}] default: \emph{false}.
 
-By default, the publication list is numbered continuously. If you divide your publication list into sections by means of
-\jfcsmacro{refsection}s (as documented in section~\ref{sec:example}), you will thus get a global numbering over all sections.
+If this is \texttt{true}, the extradate marker (a, b etc.) is also appended to pubstates if there are multiple
+indentical pubstates; e.\,g., \emph{Forthcoming(a)}, \emph{Forthcoming(b)}.
 
-If you prefer the numbering to start from 1 at each section instead, set this option to \joption{reset}.
+\item [{\joption{plsorting{[}=sorting scheme{]}}}] default: \emph{ydt}.
 
-If you do not want to have any numbers at all, set this option to \joption{false}.
+This option works like the \joption{sorting} option you know from \bibltx. It is provided since \bpl\ sets its
+own sorting schemes (differently depending on \joption{plauthorhandling}) and thus overrides any setting made
+via \bibltx. You can overwrite those settings here yourself and set an own sorting scheme (see also sec.~\ref{sec:sorting}).
 
-\item [{\joption{reversenumbering{[}=true|false{]}}}] default: \emph{false}.
+\item [{\joption{plnumbering{[}=global|local|global-descending|local-descending|none{]}}}] default: \emph{global}.%
+\footnote{Up to \bpl\ 1.27, numbering was controlled by two separate options, \joption{plnumbered} and \joption{reversenumbering}.
+These options (and their differently named values) are still supported, but you get a warning if you use them and are encouraged
+to use the new options.}
 
-If this option is \joption{true}, the entries will be numbered in descending order, starting from the total
-number of entries back to 1. Also works with \joption{plnumbered=reset}.
+By default, the publication list is numbered in continuous ascending order. If you divide your publication list into sections
+by means of \jfcsmacro{refsection}s (as documented in section~\ref{sec:example}), you will thus get a global numbering over
+all sections.
 
+If you prefer the numbering to start from 1 at each section instead, set this option to \joption{local}.
+
+If you prefer descending rather than ascending enumeration, starting from the total
+number of entries back to 1 (either globally or within each section), use the \joption{*-descending} variants.
+
+If you do not want to have any numbers at all, set this option to \joption{none}.
+
+Note that if you use descending enumeration, \bpl\ will have to do a full counting of all printed items first
+in order to calculate the numbering properly (considering any filtering you might have done).
+For this calculation, a specific auxiliary file, \emph{<filename>.bpx}, is used. The package will warn you if more
+\texttt{latex} runs are required. See sec.~\ref{sec:numbers} for details.
+
 \item [{\joption{plauthorfirstinit{[}=true|false{]}}}] default: \emph{false}.
 
 If you set this option to \joption{true}, you can (and are supposed to) pass only an initial character as first name value of
@@ -290,7 +321,18 @@
 works of colleagues with the same surname (maybe your family members), which you will not want to mark as your own's.
 Of course, the solution does not help if there is an entry with same surname and same first name initial (such as \textsc{Jane Doe}).
 
+\item [{\joption{jifinfo{[}=true|false{]}}}] default: \emph{false}.
 
+If this option is \joption{true}, the journal impact factor, as specified via the \texttt{impactfactor} field
+(see section~\ref{sec:impactfactor}), will be appended to the entries.
+
+\item [{\joption{oainfo{[}=simple|verbose|none{]}}}] default: \emph{none}.
+
+If \joption{simple} or \joption{verbose} is selected, open-access information, as specified via the \texttt{openaccess} field
+(see section~\ref{sec:openaccess}), will be appended to the entries. With \joption{verbose}, different OpenAccess strategies
+(\enquote*{gold}, \enquote*{green}) will be differentiated in the output.
+
+
 \item [{\joption{prinfo{[}=true|false{]}}}] default: \emph{true}.
 
 If this option is \joption{true}, peer review information, as specified via the \texttt{peerreview} field
@@ -298,42 +340,135 @@
 
 \end{description}
 %
-The following options are available if \textsf{hyperref} is loaded:
+The following option is available if \textsf{hyperref} is loaded:
 
 \begin{description}
 
-\item [{\joption{linktitleall{[}=true|false{]}}}] default: \emph{false}.
+\item [{\joption{linktitles={[}all|doi|url|isbn|issn|none{]}}}] default: \emph{none}.
 
 Turns the title (and subtitle, if available) into a clickable hyperlink to either the DOI, the URL, the ISBN,
-or the ISSN (the latter two via customizable search provider), if any of these is available. See section~\ref{sec:clicktitles}
-for details.
+or the ISSN (the latter two via customizable search provider), if any of these is available.\footnote{%
+Up to v.\,1.27, \bpl\ provided a range of boolean options for this task. These are still supported, but considered deprecated.
+} The option \joption{all} activates all these targets, \joption{none} deactivates them.
+To enable several targets, multiple values might be passed to the option, embraced and separated by comma
+(e.\,g., \joption{linktitles=\{doi, isbn,issn\}}). If an entry provides several targets, the first found from
+the order DOI \textrightarrow\ URL \textrightarrow\ ISBN \textrightarrow\ ISSN is used, so the order passed to the
+option does not matter, except for  \joption{all} and  \joption{none}, which activate or deactivate all at their
+position in the chain (and options that follow might re-enable them, as in \joption{linktitles=\{none,url\}}).
+See section~\ref{sec:clicktitles} for details.
 
-\item [{\joption{linktitledoi{[}=true|false{]}}}] default: \emph{false}.
+\end{description}
+%
+All options listed here should be passed directly to \bibltx\ via \jfcsmacro{usepackage} when loading \bibltx, and they apply to the whole
+document.
 
-Turns the title (and subtitle, if available) into a clickable hyperlink to the DOI, if available. See section~\ref{sec:clicktitles}
-for details.
+For most options, it is possible to change them (repeatedly) within the document. To this end, the macro
+\jcsmacro*[-3]{ExecutePublistOptions} is provided. It takes a comma-separated list of options as its mandatory argument
+and can be used (repeatedly) in preamble or anywhere in the document body.
+The executed options apply as of the next bibliography (\jfcsmacro{printbibliography}) that follows.
+Options that \emph{cannot} be changed within a document that way are \joption{plnumbering} and \joption{pubstateextra},
+as these options employ features that can only be set once per document.
+However, please refer to sec.~\ref{sec:numbers} on how to address some frequently requested numbering changes.
 
-\item [{\joption{linktitleurl{[}=true|false{]}}}] default: \emph{false}.
+Also note that 
+\begin{itemize}
+	\setlength\itemsep{0pt}
+	\item with the \joption{plauthor*} options, as opposed to repeated \jcsmacro{plauthorname} calls,
+	      repeated setting of these name options respectively \emph{overwrite}, and not extend, the previous name
+	      settings.
+	\item With \joption{plauthorhandling}, \bpl\ uses different sorting schemes for \joption{omit} (\texttt{ydt})
+	      and \joption{highlight} (\texttt{yndt}), considering the names as sorting factor only in the latter case
+	      (cf. sec.~\ref{sec:sorting}).
+	      Changing this option within a document, however, does \emph{not} adjust the sorting scheme if you use
+	      refsections (to make it work, \jfcsmacro{newrefcontext[sorting=<sorting scheme>]} will have to be set
+	      within each refsection). This is a \bibltx\ limitation which also applies to \joption{plsorting}.
+\end{itemize}
 
-Turns the title (and subtitle, if available) into a clickable hyperlink to the URL, if available. See section~\ref{sec:clicktitles}
-for details.
+\subsection{Numbers Games}\label{sec:numbers}
 
-\item [{\joption{linktitleisbn{[}=true|false{]}}}] default: \emph{false}.
+Among the peculiarities of publication lists is the greater variety of numbering conventions, as compared
+with normal bibliographies in academic works. If a numeric citation style is used in the latter, the items are
+as a rule numbered in ascending order, and each entry has a unique number. The main function of the
+number here is to provide fast access from a reference to the referred entry, and a continuous ascending
+enumeration fits this purpose best.
 
-Turns the title (and subtitle, if available) into a clickable hyperlink to the ISBN (via customizable search provider), if available.
-See section~\ref{sec:clicktitles} for details.
+In publication lists, this is only a secondary function of the number, as publication lists are not meant for citing.
+The main function here is, in fact, \emph{metrical}. In our increasingly metricalized academic cultures, and against the
+backdrop of the \enquote{publish or perish} imperative scholars find themselves confronted with, the sheer number
+of publications a scholar has is, next to weighted references to them (e.\,g., the\emph{ h-index}), social capital.
+The numbering of items in publication lists is thus, if you will, a sort of account balance.
 
-\item [{\joption{linktitleissn{[}=true|false{]}}}] default: \emph{false}.
+Now since publication genres (e.\,g., journal papers vs. chapters)
+are usually valued differently (\enquote*{impact!}), many people prefer to have a more differentiated balance in
+the sense that the publication lists should swiftly tell the reader how many papers, monographs, chapters, etc.,
+a person has published. Hence those people prefer to number their publications by section rather than continuously.
 
-Turns the title (and subtitle, if available) into a clickable hyperlink to the ISSN (via customizable search provider), if available.
-See section~\ref{sec:clicktitles} for details.
+On the other hand, since publication lists are often ordered reversely chronological, many people also prefer
+to have a reversely ordered (descending) numbering, either globally over the whole list or, again, by section.
 
+The \bpl\ package accounts for these needs and provides, via the option \joption{plnumbering}, five different numbering variants:
+\begin{enumerate}\setlength{\itemsep}{0pt}
+	\item Global ascending numbers (that continue across sections) [\emph{default}]
+	\item Global descending numbers [\joption{plnumbering=global-descending}]
+	\item Local ascending numbers (that are reset to 1 in each section) [\joption{plnumbering=local}]
+	\item Local descending numbers [\joption{plnumbering=local-descending}]
+	\item No numbers at all [\joption{plnumbering=none}]
+\end{enumerate} 
+%
+Particularly reverse numbering is, technically, a bit of a challenge; \bibltx, for reasons, does not provide this
+feature out of the box. In order to do descending numbering one has to know the number of entries in the
+publication list, or in individual sections, before the first number can get assigned. Since items can be
+filtered out, for instance via \bibltx's \joption{filter} or \joption{keyword} options, \bibltx\ itself
+only knows this number after all entries have been processed for output. Yet since it only provides for
+ascending numbers, \bibltx\ does not (need to) store this knowledge, and thus, it is not readily available
+to \bpl.
 
-\end{description}
+Thus, with \joption{plnumbering=global-descending} and \joption{plnumbering=local-descending}, \bpl\ will first
+count all printed entries, globally and per section, write the results in an auxiliary file (\emph{<filename>.bpx}),
+and then do at least one additional pass in order to fix the numbering. This requires additional \texttt{latex}
+cycles, but you will be given a warning if the numbering is not yet fully resolved.
 
+Now in addition to these mentioned variants, some people still need a more fine-grained control over the numbering.
+For instance, some scholars want to list both their publications and their conference papers (talks) in the
+same document, but separately numbered. Both publications and talks might themselves be divided into different
+sections (\emph{monographs}, \emph{papers}, $\ldots$; \emph{keynotes}, \emph{invited talks}, $\ldots$) which, however,
+should be numbered continuously within their category. So \joption{plnumbering=local} alone does not produce
+the desired result.
 
-\subsection{Handling multiple authors and\slash or name variants}\label{sec:multiauthors}
+For this case, \bpl\ provides two alternative and slightly different features: First, an environment
+\jenviron*{plnumgroup}.
+All sections you embrace by this in the context of \joption{plnumbering=local} are numbered continuously,
+so resetting is suspended within this environment. This works both with ascending and descending enumeration.
 
+In the ascending case only, the macro \jcsmacro*{setplnum} is useful as a (more flexible) alternative.
+It allows you to set the first label number of the next bibliography section that follows to a specific
+(arbitrary) value.
+All following numbers ascend or descend from this new value.
+The adjustment applies to all following bibliography sections with continuous numbering, i.\,e., if
+a \joption{global} numbering scheme is used.
+With \joption{local} numbering, by contrast, following sections continue to be reset.
+In all cases, the macro can be used repeatedly for re-adjustments in forthcoming sections.
+
+So in the use case mentioned above, inserting \verb|\setplnum{1}| before the first section that lists
+conference papers, together with \joption{plnumbering=global} (the default), will provide the desired result
+(provided that ascending numbering is wished for). The desired result will also be achieved by embracing
+all publication-related sections in a \jenviron{plnumgroup} environment and and all conference-paper-related
+sections in another one, while using \joption{plnumbering=local} or \joption{plnumbering=local-descending}.
+This second approach, as opposed to the former, also works for descending enumeration.
+
+The macro \jcsmacro*{shiftplnum}, by contrast with \jcsmacro{setplnum}, provides a way to adjust the
+subsequent numbering in a \emph{relative} way.
+It takes a positive or negative integer value that determines how much and in which direction the adjustment
+shall take place (e.\,g., \verb|\shiftpblnum{2}| or \verb|\shiftplnum{-1}|). This might be useful if you
+insert items in the list manually or in some very specific settings. Again, this macro can be used
+repeatedly  and applies to all subsequent items as of the next section that follows. As opposed to
+\jcsmacro{setplnum}, the shifting also persists with \joption{local} numbering schemes.
+
+For the numbering output by \jfcsmacro{citeitem}, analogous shifting can be done via the macro
+\jcsmacro*{shiftciteitem}.
+
+\subsection{Handling 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.
@@ -365,7 +500,7 @@
 entries authored or edited by any and all specified persons.
 
 
-\subsection{Truncation of name lists}\label{sec:trunc}
+\subsection{Truncation of Name Lists}\label{sec:trunc}
 
 Truncation of name lists via the \jfoption{maxnames} and \jfoption{minnames} \bibltx\ options is supported.
 However, it works a bit differently than normal truncation, since the publication list authors have to be
@@ -390,8 +525,29 @@
 \newcommand*\plnameomission{\bibellipsis\addcomma\addspace}
 \end{lstlisting}
 
-\subsection{Adding Peer Review Information}\label{sec:peerreview}
+\subsection{Adding Specific Entry-Related Information}
 
+Publication lists usually contain some information which is not commonly given in normal
+bibliographies, information that is supposed to help ranking the author (bibliometrics; the
+peer review procedures publications have been subject to) or their publication strategy (e.\,g.,
+OpenAcess). To allow for this, \bpl\ provides some extra features which will be described in what
+follows. Please also refer to sec.~\ref{sec:auxmacros} for some customization possibilities. 
+
+\subsubsection{Journal Impact Factor}\label{sec:impactfactor}
+
+Although the meaningfulness of this measure has been heavily challenged, scholars in many fields are
+supposed to give the impact factor (citation ratio) of the journals they have published in.
+Thus, \bpl\ provides a specific database field, \texttt{impactfactor}, in which you can store
+this value and maybe specify the metrics used.
+
+If you publish in a journal repeatedly, it might make sense to store the journal name and impact factor
+in a specific \texttt{@xdata} subset (please refer to the \bibltx\ documentation for details on such subsets).
+
+If the option \joption{jifinfo} is true, then \bpl\ will append the respective information to the entries.
+A specific localizable bibkey is used for this purpose (see section~\ref{sec:localization}).
+
+\subsubsection{Peer Review}\label{sec:peerreview}
+
 It is common, and sometimes mandatory, to add information to publication list entries indicating if
 and how listed work has been subject to peer review.
 To this end, \bpl\ provides a specific database field, \texttt{peerreview}, in which you can use
@@ -413,9 +569,31 @@
 the shorthands, you can also enter arbitrary text to the \texttt{peerreview} field, which is then output
 as is (and not localized).
 
+
+\subsubsection{OpenAccess Strategies}\label{sec:openaccess}
+
+Some people also want, or need, to indicate whether and which (some of) their publications have
+been published \enquote*{OpenAccess}, that is, free of charges and other access barriers.
+To this end, \bpl\ provides a specific database field, \texttt{openaccess}, in which you can use
+the following shorthands:
+
+\begin{itemize}\setlength{\itemsep}{0pt}
+	\item{\texttt{true}} -- Indicates that this publication has been published OpenAccess, no matter which strategy
+	\item{\texttt{gold}} -- Indicates that this publication has been published OpenAccess from the beginning (\enquote*{gold} strategy)
+	\item{\texttt{green}} -- Indicates that a secondary version of this publication has been made openly accessible on a public document
+	      server (repository) (\enquote*{green} strategy)
+\end{itemize}
+%
+If you use the option \joption{oainfo=verbose} or \joption{oainfo=simple}, then \bpl\ will append the respective information to the entries.
+In the former case, \enquote*{gold} and \enquote*{green} publications will be differentiated, in the latter, this differentiation is
+not done.
+Specific localizable bibkeys are used for this purpose (see section~\ref{sec:localization}). Instead of
+the shorthands, you can also enter arbitrary text to the \texttt{openaccess} field, which is then output
+as is (and not localized).
+
 \section{Customization}
 
-\subsection{Auxiliary macros and lengths}\label{sec:auxmacros}
+\subsection{Auxiliary Macros and Lengths}\label{sec:auxmacros}
 
 The appearance of the \emph{marginyear} is controlled by the
 \jcsmacro*{plmarginyear} macro, which has the following default definition:
@@ -427,6 +605,15 @@
 If you want to change the appearance, just redefine this macro via
 \jfcsmacro{renewcommand{*}}.
 
+The highlighting of the year within the entry, if \joption{hlyear=false} has not been set,
+is controlled by the \jcsmacro*{plyearhl} macro, which has the following default definition:
+\begin{lstlisting}[moretexcs={[2]{providecommand,plyearhl,mkbibbold}}]
+\providecommand*\plyearhl[1]{%
+	\mkbibbold{#1}%
+}
+\end{lstlisting}
+If you need another form of highlighting, redefine this macro via \jfcsmacro{renewcommand{*}}.
+
 The highlighting of the publication list author, if \joption{plauthorhandling=highlight} has been set,
 is controlled by the \jcsmacro*{plauthorhl} macro, which has the following default definition:
 \begin{lstlisting}[moretexcs={[2]{providecommand,plauthorhl,mkbibbold}}]
@@ -441,16 +628,19 @@
 This might be needed for long bibliographies (> 99 entries) in order to adjust to the extra
 space the item number needs.
 
-If you need to adjust the numbering of items manually, you can do so with the macro \jcsmacro*{shiftbplnum}.
-It takes a positive or negative integer value that determines how much and in which direction it is shifted
-(e.\,g., \verb|\shiftpblnum{2}| or \verb|\shiftbplnum{-1}|). This can be used repeatedly, anywhere, and applies
-to all subsequent items.
-For the numbering output by \jfcsmacro{citeitem}, analogous shifting can be done by
-\jcsmacro*{shiftciteitem}.
+The separator between extra information (peer review, OpenAccess) can be redefined.
+The default definition is:
+\begin{lstlisting}[moretexcs={[4]{plextrainfosep,addsemicolon,addspace}}]
+\newcommand*\plextrainfosep{\addsemicolon\addspace}
+\end{lstlisting}
+%
+The embracing of extra information (brackets by default) can be customized by changing
+\begin{lstlisting}[moretexcs={[4]{DeclareFieldFormat,mkbibbrackets}}]
+\DeclareFieldFormat{plextrainfo}{\mkbibbrackets{#1}}
+\end{lstlisting}
 
+\subsection{Using a Different Base Style}\label{sec:basestyle}
 
-\subsection{Using a different base style}\label{sec:basestyle}
-
 By default, \bpl\ loads \bibltx's \emph{authoryear} style, and it has been written
 to work with that style. However, it is possible to try a diffent base style, if
 \emph{author\-year} does not fit your needs.\condbreak{2\baselineskip}
@@ -469,13 +659,12 @@
 use the package option \joption{nameorder} (see sec.~\ref{sec:addopts}).
 
 
-\subsection{Clickable titles}\label{sec:clicktitles}
+\subsection{Clickable Titles}\label{sec:clicktitles}
 
-With the options \joption{linktitledoi}, \joption{linktitleurl}, \joption{linktitleisbn}, \joption{linktitleissn}
-or the combining option \joption{linktitleall}, titles and subtitles are turned into clickable hyperlinks if
-the \textsf{hyperref} package is loaded, and the respective data is there, i.\,e., if either the DOI field,
-the URL field, the ISBN field or the ISSN field is defined for the given entry (checked in this order if multiple
-of these options or \joption{linktitleall} are used).
+With the option \joption{linktitles} (see sec.~\ref{sec:addopts}), titles and subtitles are turned into clickable
+hyperlinks if the \textsf{hyperref} package is loaded, and the respective data is there, i.\,e., if either the
+DOI field, the URL field, the ISBN field or the ISSN field is defined for the given entry (checked in this order
+if multiple of these targets are enabled or \joption{linktitles=all} is used).
 
 With URL and DOI, direct links are created. With ISBN or ISSN, a link to a search provider is created instead
 (\textsf{worldcat} by default). The search provider can be customized by redefining the following macros:
@@ -486,9 +675,9 @@
 %
 where \verb|#1| is a placeholder for the ISBN or ISSN, respectively.
 
-Note that the output of URLs, DOIs, ISBNs and ISSNs is not affected by the \joption{linktitle} options,
-so you might get redundant output. To control (e.\,g., omit) them, use the \joption{url}, \joption{doi}
-and \joption{isbn} biblatex options. 
+Note that the \joption{linktitles} option does not have any affect on whether URLs, DOIs, ISBNs and ISSNs
+are printed, so you might get redundant output. To control (e.\,g., omit) them, use the \joption{url},
+\joption{doi} and \joption{isbn} biblatex options. 
 
 \section{Localization}\label{sec:localization}
 
@@ -496,19 +685,24 @@
 The following additional localization keys (\jfcsmacro{bibstrings})
 are added by the package:
 \begin{itemize}
-\item \emph{with}: the preposition ``with'' that precedes the list of
-                   co-authors by default (i.\,e., with \joption{plauthorhandling=omit}).
-\item \emph{parttranslationof}: the expression ``partial translation of''
-                   for entries referring to partially translated work via \bibltx's
-       ``related entries'' feature (see sec.~\ref{sec:partial-translations}).
-\item \emph{peerreview:sb}: the phrase ``single blind peer review''.
-\item \emph{peerreview:db}: the phrase ``double blind peer review''.
-\item \emph{peerreview:op}: the phrase ``open peer review''.
-\item \emph{peerreview:co}: the phrase ``collaborative peer review''.
-\item \emph{peerreview:cc}: the phrase ``cascading peer review''.
-\item \emph{peerreview:tp}: the phrase ``third-party peer review''.
-\item \emph{peerreview:pp}: the phrase ``post-publication peer review''.
-\item \emph{peerreview:no}: the phrase ``no peer review''.
+\setlength{\itemsep}{0pt}
+\item \emph{impactfactor}: the expression \enquote{impact factor}.
+\item \emph{openaccess:true}: the expression \enquote{OpenAccess}.
+\item \emph{openaccess:gold}: the phrase \enquote{OpenAccess (gold)}.
+\item \emph{openaccess:green}: the phrase \enquote{OpenAccess (green)}.
+\item \emph{parttranslationof}: the expression \enquote{partial translation of}
+       for entries referring to partially translated work via \bibltx's
+      \enquote*{related entries} feature (see sec.~\ref{sec:partial-translations}).
+\item \emph{peerreview:sb}: the phrase \enquote{single blind peer review}.
+\item \emph{peerreview:db}: the phrase \enquote{double blind peer review}.
+\item \emph{peerreview:op}: the phrase \enquote{open peer review}.
+\item \emph{peerreview:co}: the phrase \enquote{collaborative peer review}.
+\item \emph{peerreview:cc}: the phrase \enquote{cascading peer review}.
+\item \emph{peerreview:tp}: the phrase \enquote{third-party peer review}.
+\item \emph{peerreview:pp}: the phrase \enquote{post-publication peer review}.
+\item \emph{peerreview:no}: the phrase \enquote{no peer review}.
+\item \emph{with}: the preposition \enquote{with} that precedes the list of
+       co-authors by default (i.\,e., with \joption{plauthorhandling=omit}).
 \end{itemize}
 Currently, these additional localization keys are available in the following
 languages: English, French and German.%
@@ -520,7 +714,7 @@
 The following extensions of standard \bibltx\ features are provided.
 
 
-\subsection{Review bibliography type}\label{sec:review-bibliography-type}
+\subsection{Review Bibliography Type}\label{sec:review-bibliography-type}
 
 Although a \emph{review} entry type is provided by \bibltx, this
 type is treated as an alias for \emph{article}. The \bpl\ package
@@ -534,15 +728,15 @@
 (see sec.~\ref{sec:example} for an example).
 
 
-\subsection{Partial translations}\label{sec:partial-translations}
+\subsection{Partial Translations}\label{sec:partial-translations}
 
-A new ``related entry'' type \emph{parttranslationof} is provided.
+A new \enquote{related entry} type \emph{parttranslationof} is provided.
 This is an addition to the \emph{translationof} related entry type
 \bibltx\ itself provides. Please refer to the \bibltx\ manual \cite{bibltx}
-on what ``related entries'' are and how to use them.
+on what \enquote{related entries} are and how to use them.
 
 
-\section{An example}\label{sec:example}
+\section{An Example}\label{sec:example}
 
 Publication lists are usually categorized by genre (monographs, articles,
 book chapters, etc.). For this task, the use of \jfmacro{refsections} (see \cite[sec 3.7.4]{bibltx} for details) is
@@ -596,9 +790,10 @@
 \end{lstlisting}
 %
 If you want to add other people's reviews of your work, add a section
-such as the following:
+as shown in example~\ref{example2}.
 \begin{lstlisting}[caption={Adding foreign reviews},
-		  moretexcs={[4]{bibfont,subsubsection,printbibliography,newrefsection}}]
+	               label={example2},
+		           moretexcs={[4]{bibfont,subsubsection,printbibliography,newrefsection}}]
 \subsubsection*{Reviews of my thesis}
 \newrefsection[mythesis-reviews]
 \renewcommand\bibfont{\small}
@@ -625,24 +820,16 @@
 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).
 
-If you do not use reverse numbering (see below), you can also use other filter
-possibilities provided by \bibltx, such as filtering by type or by keyword.
-So if you want to extract all of your articles from a larger database with entries
-of diverse type and authors, specify:
+You can also use other filter possibilities provided by \bibltx, such as filtering by type
+or by keyword. So if you want to extract all of your articles from a larger database with
+entries of diverse type and authors, specify:
 \begin{lstlisting}[moretexcs={[1]{printbibliography}}]
 \printbibliography[heading=none,filter=mine,type=article]
 \end{lstlisting}
 %
 Note that this method sometimes requires several reruns of \texttt{latex}
-to fix the numbering (with standard ascending numbers).
+to fix the numbering.
 
-With reverse (descending) numbering (\joption{reversenumbering=true}),
-the numbering does not correctly work if you filter by type or keyword.
-If you need descending numbering, please resort to separated bibliography databases
-(as advised in sec.~\ref{sec:example}) rather than to \joption{type} or
-\joption{keyword} filtering!
-
-
 \section{Sorting\label{sec:sorting}}
 
 
@@ -682,7 +869,7 @@
 The following templates, with and without author sorting, are provided:
 \begin{itemize}
  \item \jmacro{ddt}: Sort by full \textbf{d}ate (\textbf{d}escending)
-        and \textbf{t}itle (both ascending).
+        and \textbf{t}itle (ascending).
  \item \jmacro{ddnt}: Sort by full \textbf{d}ate (\textbf{d}escending),
         author \textbf{n}ame and \textbf{t}itle (both ascending).
  \item \jmacro{dt}: Sort by full \textbf{d}ate and \textbf{t}itle (all ascending).
@@ -695,27 +882,61 @@
        (all ascending).
 \end{itemize}
 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
-(by means of a \jfcsmacro{newrefcontext} macro with the option \joption{sorting=<template>}).
+use \bpl's \jmacro{plsorting} option, which can be passed globally
+as a \bibltx\ option or locally by means of \jcsmacro{ExecutePublistOptions}.
+Alternatively, you can also use a \jfcsmacro{newrefcontext} macro with the option
+\jfoption{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}
+\usepackage[style=publist,plsorting=ddt]{biblatex}
 \end{lstlisting}
 or
+\begin{lstlisting}[moretexcs={[3]{printbibliography,ExecutePublistOptions}}]
+\ExecutePublistOptions{plsorting=ddt}
+\printbibliography[heading=none]
+\end{lstlisting}
+or
 \begin{lstlisting}[moretexcs={[3]{printbibliography,newrefcontext,endrefcontext}}]
 \newrefcontext[sorting=ddt]
 \printbibliography[heading=none]
 \endrefcontext
 \end{lstlisting}
+%
+Note that if you use refsections, local sorting changes will only apply to the current
+refsection.
 
-\condbr{4}
-
 \section{Revision Log}
 
 \begin{description}
 	
+	\item [{V. 2.0 (2022/10/24):}]~
+	\begin{itemize}
+		\item Provide \jcsmacro{ExecutePublistOptions} to change (most) \bpl\ options
+		      on the fly (see sec.~\ref{sec:addopts}).
+		\item Properly support reverse (descending) numbering even if filtering is done.
+		\item Add \jenviron{plnumgroup} environment to temporarily suspend 
+		      \joption{plnumbering=local} (see sec.~\ref{sec:numbers}).
+		\item Add new macro\jcsmacro{setplnum} (see sec.~\ref{sec:numbers}).
+		\item Rename macro \jcsmacro{shiftbplnum} to \jcsmacro{shiftplnum}
+		      (old macro kept for compatibility).
+		\item Fix macro \jcsmacro{shiftplnum} with ascending numbering.
+		\item Introduce one option (\joption{plnumbering}) that replaces the previous two
+		      separated options (\joption{plnumbered} + \joption{reversenumbering}).
+		      Old options are kept for compatibility.
+		\item Introduce one multichoice option (\joption{linktitles}) that replaces the previous
+		      options (\joption{linktitleall}, \joption{linktitledoi}, \joption{linktitleurl},
+		      \joption{linktitleisbn},\\ \joption{linktitleissn}).
+    	      Old options are kept for compatibility.
+    	\item Rename option \joption{boldyear} to \joption{hlyear}.
+              Old option kept for compatibility.
+    	\item Allow customization of the highlighting set with \joption{hlyear}.
+    	      See sec.~\ref*{sec:auxmacros}.
+    	\item Introduce \joption{plsorting} option.
+ 		\item Add support for OpenAccess information (see sec.~\ref{sec:openaccess}).
+ 		\item Add support for journal impact factor (see sec.~\ref{sec:impactfactor}).
+	\end{itemize}
+	
 	\item [{V. 1.27 (2022-10-03):}]~
 	\begin{itemize}
 		\item Fix once more plauthor check with non-ASCII chars and macros.
@@ -723,7 +944,7 @@
 	
 	\item [{V. 1.26 (2022-01-05):}]~
 	\begin{itemize}
-		\item Provide means to add peer review information (see section~\ref{sec:peerreview}).
+		\item Provide means to add peer review information (see sec.~\ref{sec:peerreview}).
 		\item Add a data model (\texttt{*.dbx}) file.
 		\item Fix \jcsmacro{textcite} output at least for the standard cases.
 		\item Do not highlight/omit author/editor names in related entries.
@@ -735,7 +956,7 @@
 	\begin{itemize}
 		\item More robustification with names consisting of non-ASCII chars.
 		\item With \joption{pubstateextra}, differentiate between pubstates.
-	\end{itemize}
+	\end{itemize}\condbr{2}
 	
 	\item [{V. 1.24 (2021-12-11):}]~
 	\begin{itemize}
@@ -759,7 +980,7 @@
 		\item Add \jcsmacro{citeitem} command. See sec.~\ref{sec:standard-usage}.
 		\item Add \jcsmacro{shiftbplnum} and \jcsmacro{shiftciteitem} helper macros
 		      for manual adjustment of numbering.
-		      See sec.~\ref{sec:auxmacros}.
+		      See sec.~\ref{sec:numbers}.
 		\item Properly sort \jfoption{prepublished} pubstate type.
 	\end{itemize}
 
@@ -964,8 +1185,8 @@
 
 \item [{V.~0.3~(2012-10-23):}]~
 \begin{itemize}
-\item Bug fix: Add missing ``and'' if omitted name was last minus one.
-\item Bug fix: Fix output with ``et al.'' if omitted name is first and
+\item Bug fix: Add missing \enquote{and} if omitted name was last minus one.
+\item Bug fix: Fix output with \enquote{et al.} if omitted name is first and
 \emph{liststop} is 1.
 \item Set \joption{maxnames} default to 4.
 \item Add filter possibility (see sec.~\ref{sec:filtering}).

Modified: trunk/Master/texmf-dist/tex/latex/biblatex-publist/publist.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-publist/publist.bbx	2022-10-24 19:34:41 UTC (rev 64801)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-publist/publist.bbx	2022-10-24 19:34:56 UTC (rev 64802)
@@ -25,8 +25,8 @@
 %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-\def\bpl at version{1.27}
-\def\bpl at rdate{2022/10/03}
+\def\bpl at version{2.0}
+\def\bpl at rdate{2022/10/24}
 
 \ProvidesFile{publist.bbx}[\bpl at rdate\space v.\bpl at version\space
                            biblatex bibliography style (JSP)]
@@ -45,7 +45,402 @@
 % Bibliography Options and Base Style
 %
 
-% Deprecated Options (as of v. 1.4)
+% Toggles and switches
+%
+\newif\if at marginyear\@marginyearfalse
+\newif\if at hlyear\@hlyeartrue
+\newif\if at pubstateextra\@pubstateextrafalse
+\newif\if at hlauthor\@hlauthorfalse
+\newif\if at givenfirst\@givenfirstfalse
+\newtoggle{bpl at firstinit}
+\newif\if at bpl@numbered\@bpl at numberedtrue
+\newif\if at bpl@numberreset\@bpl at numberresetfalse
+\newtoggle{bpl at linktitle}
+\newtoggle{bpl at linktitleisbn}
+\newtoggle{bpl at linktitleissn}
+\newtoggle{bpl at linktitleurl}
+\newtoggle{bpl at linktitledoi}
+\newtoggle{bpl at jifinfo}
+\newtoggle{bpl at prinfo}
+\toggletrue{bpl at prinfo}
+\newtoggle{bpl at oainfo}
+\newtoggle{bpl at oainfosimple}
+\newif\if at bpl@reversenum\@bpl at reversenumfalse
+
+
+% Valid options
+%
+
+% We use l3keys here since (1) LaTeX2e keys are rather
+% new and (2) do not provide for choice keys yet.
+\ExplSyntaxOn
+\keys_define:nn { bpl }
+{
+    % plauthorname=<name>
+    % Store author family name
+    plauthorname.tl_set:N = \bpl at osurname,
+    % plauthorfirstname=<name>
+    % Store author first name
+    plauthorfirstname.tl_set:N = \bpl at ofirstname,
+    % plauthornameprefix=<name>
+    % Store author name prefix
+    plauthornameprefix.tl_set:N = \bpl at ovonpart,
+    % marginyear=<true|false>
+    % Print year in margin
+    marginyear.code:n =
+        {
+         \str_if_eq:nnTF { #1 } { true }
+         {
+            \@marginyeartrue
+            \reversemarginpar
+         }{
+            \@marginyearfalse
+         }
+       },
+    marginyear.default:n = { true },
+    % hlyear=<true|false>
+    % Set year highlighted
+    hlyear.legacy_if_set:n = @hlyear,
+    % pubstateextra=<true|false>
+    % Extra label for pubstates
+    pubstateextra.legacy_if_set:n = @pubstateextra,
+    pubstateextra.usage:n = preamble,
+    % plauthorhandling=<highlight|omit>
+    % Highlight or omit pl author?
+    plauthorhandling.choice:,
+    % highlight
+    plauthorhandling / highlight.code:n =
+      { 
+       \@hlauthortrue
+       \bpl at set@defsorting
+      },
+    % omit
+    plauthorhandling / omit.code:n =
+       {
+         \@hlauthorfalse
+         \bpl at set@defsorting
+       },
+    plauthorhandling.default:n = { omit },    
+    % nameorder=<family-given|given-family>
+    % Ordering of plauthor name
+    nameorder.choice:,
+    % given-family
+    nameorder / given-family.code:n = { \@givenfirsttrue },
+    % family-given
+    nameorder / family-given.code:n = { \@givenfirstfalse },
+    nameorder.default:n = { family-given },
+    % plsorting=<sortingscheme>
+    % Set a sorting scheme
+    plsorting.code:n =
+      { 
+       \bpl at set@defsorting[#1]
+      },
+    plsorting.default:n = { ydt },
+    % plauthorfirstinit=<true|false>
+    % Pass initial as first name
+    plauthorfirstinit.code:n =
+        {
+         \str_if_eq:nnTF { #1 } { true }
+         {
+            \toggletrue{bpl at firstinit}
+         }{
+            \togglefalse{bpl at firstinit}
+         }
+       },
+    plauthorfirstinit.default:n = { true },
+    % plnumbering=<global|local|global-descending|local-descending|none>
+    % Select numbering scheme
+    plnumbering .choice:,
+    % global: use default consecutive numbering
+    plnumbering / global .code:n = 
+      { \@bpl at numberresetfalse },
+    % local: use local numbering
+    plnumbering / local .code:n = 
+      { \@bpl at numberresettrue },
+    % global-descending: use default consecutive numbering
+    plnumbering / global-descending .code:n = 
+      { 
+         \@bpl at numberresetfalse
+         \@bpl at reversenumtrue
+      },
+    % local-descending: use local numbering
+    plnumbering / local-descending .code:n = 
+      { 
+         \@bpl at numberresettrue
+         \@bpl at reversenumtrue
+      },
+    % none: no numbering at all
+    plnumbering / none .code:n = 
+      { 
+         \defbibenvironment{bibliography}
+          {\list
+           {}
+           {\setlength{\leftmargin}{\bibhang}%
+            \setlength{\itemindent}{-\leftmargin}%
+            \setlength{\itemsep}{\bibitemsep}%
+            \setlength{\parsep}{\bibparsep}}%
+          }
+          {\endlist}
+          {\item}%
+     },
+    plnumbering.default:n = { global },
+    plnumbering.usage:n = preamble,
+    % linktitles=<all|url|doi|isbn|issn|none>
+    linktitles .multichoice:,
+    % Link all titles
+    linktitles / all.code:n =
+        {
+             \toggletrue{bpl at linktitleisbn}
+             \toggletrue{bpl at linktitleissn}
+             \toggletrue{bpl at linktitleurl}
+             \toggletrue{bpl at linktitledoi}
+             \toggletrue{bpl at linktitle}
+        },
+    % Link no titles
+    linktitles / none.code:n =
+        {
+             \togglefalse{bpl at linktitleisbn}
+             \togglefalse{bpl at linktitleissn}
+             \togglefalse{bpl at linktitleurl}
+             \togglefalse{bpl at linktitledoi}
+             \togglefalse{bpl at linktitle}
+        },
+    % Link titles with URL
+    linktitles / url.code:n =
+        {
+         \toggletrue{bpl at linktitleurl}
+         \toggletrue{bpl at linktitle}
+        },
+    % Link titles with DOI
+    linktitles / doi.code:n =
+        {
+             \toggletrue{bpl at linktitledoi}
+             \toggletrue{bpl at linktitle}
+        },
+    % Link titles with ISBN
+    linktitles / isbn.code:n =
+        {
+           \toggletrue{bpl at linktitleisbn}
+           \toggletrue{bpl at linktitle}
+        },
+    % Link titles with ISSN
+    linktitles / issn.code:n =
+        {
+             \toggletrue{bpl at linktitleissn}
+             \toggletrue{bpl at linktitle}
+        },
+    linktitles.default:n = { all },
+    % jifinfo=<true|false>
+    % Impact factor information
+    jifinfo.code:n =
+        {
+         \str_if_eq:nnTF { #1 } { true }
+         {
+            \toggletrue{bpl at jifinfo}
+         }{
+            \togglefalse{bpl at jifinfo}
+         }
+       },
+    jifinfo.default:n = { true },
+    % oainfo=<verbose|simple|nonr>
+    % Output OpenAccess information
+    oainfo .choice:,
+    oainfo / verbose.code:n =
+       {
+         \toggletrue{bpl at oainfo}
+         \togglefalse{bpl at oainfosimple}
+       },
+    oainfo / simple.code:n =
+       {
+         \toggletrue{bpl at oainfo}
+         \toggletrue{bpl at oainfosimple}
+       },
+    oainfo / none.code:n =
+       {
+         \togglefalse{bpl at oainfo}
+         \togglefalse{bpl at oainfosimple}
+       },
+    oainfo.default:n = { simple },
+    % prinfo=<true|false>
+    % Output peer-review information
+    prinfo.code:n =
+        {
+         \str_if_eq:nnTF { #1 } { true }
+         {
+            \toggletrue{bpl at prinfo}
+         }{
+            \togglefalse{bpl at prinfo}
+         }
+       },
+    prinfo.default:n = { true }
+}
+
+%
+% Deprecated options
+%
+\keys_define:nn { bpl-deprecated }
+{
+    % plnumbered=<true|false|reset>
+    % Select numbering scheme
+    plnumbered .choice:,
+    % false: no numbering at all
+    plnumbered / false .code:n = 
+      { 
+         \defbibenvironment{bibliography}
+          {\list
+           {}
+           {\setlength{\leftmargin}{\bibhang}%
+            \setlength{\itemindent}{-\leftmargin}%
+            \setlength{\itemsep}{\bibitemsep}%
+            \setlength{\parsep}{\bibparsep}}%
+          }
+          {\endlist}
+          {\item}%
+     },
+    % true: use default consecutive numbering
+    plnumbered / true .code:n = 
+      { 
+        \@bpl at numberresetfalse
+      },
+    % reset: use local numbering
+    plnumbered / reset .code:n = 
+      {
+        \@bpl at numberresettrue
+      },
+    plnumbered.default:n = { true },
+    plnumbered.usage:n = preamble,
+    % reversenumbering=<true|false>
+    % Use descending numbers
+    reversenumbering.code:n = 
+       { 
+         \str_if_eq:nnTF { #1 } { true }
+           {
+             \@bpl at reversenumtrue
+         }{
+             \@bpl at reversenumfalse
+         }
+       },
+    reversenumbering.usage:n = preamble,
+    % boldyear=<true|false>
+    % Set year bold
+    boldyear.legacy_if_set:n = @hlyear,
+    % linktitleall=<true|false>
+    % Link all titles
+    linktitleall.code:n =
+        {
+         \str_if_eq:nnTF { #1 } { true }
+         {
+             \toggletrue{bpl at linktitleisbn}
+             \toggletrue{bpl at linktitleissn}
+             \toggletrue{bpl at linktitleurl}
+             \toggletrue{bpl at linktitledoi}
+             \toggletrue{bpl at linktitle}
+         }{
+             \togglefalse{bpl at linktitleisbn}
+             \togglefalse{bpl at linktitleissn}
+             \togglefalse{bpl at linktitleurl}
+             \togglefalse{bpl at linktitledoi}
+             \togglefalse{bpl at linktitle}
+         }
+       },
+    linktitleall.default:n = { true },
+    % linktitleurl=<true|false>
+    % Link titles with URL
+    linktitleurl.code:n =
+        {
+         \str_if_eq:nnTF { #1 } { true }
+         {
+             \toggletrue{bpl at linktitleurl}
+             \toggletrue{bpl at linktitle}
+         }{
+             \togglefalse{bpl at linktitleurl}
+         }
+       },
+    linktitleurl.default:n = { true },
+    % linktitledoi=<true|false>
+    % Link titles with DOI
+    linktitledoi.code:n =
+        {
+         \str_if_eq:nnTF { #1 } { true }
+         {
+             \toggletrue{bpl at linktitledoi}
+             \toggletrue{bpl at linktitle}
+         }{
+             \togglefalse{bpl at linktitledoi}
+         }
+       },
+    linktitledoi.default:n = { true },
+    % linktitledoi=<true|false>
+    % Link titles with ISBN
+    linktitleisbn.code:n =
+        {
+         \str_if_eq:nnTF { #1 } { true }
+         {
+             \toggletrue{bpl at linktitleisbn}
+             \toggletrue{bpl at linktitle}
+         }{
+             \togglefalse{bpl at linktitleisbn}
+         }
+       },
+    linktitleisbn.default:n = { true },
+    % linktitledoi=<true|false>
+    % Link titles with ISSN
+    linktitleissn.code:n =
+        {
+         \str_if_eq:nnTF { #1 } { true }
+         {
+             \toggletrue{bpl at linktitleissn}
+             \toggletrue{bpl at linktitle}
+         }{
+             \togglefalse{bpl at linktitleissn}
+         }
+       },
+    linktitleissn.default:n = { true }
+}
+
+% Command to set options
+\NewDocumentCommand { \ExecutePublistOptions } { m }
+{
+  \keys_set:nn { bpl } { #1 }
+}
+
+% Command to set deprecated options
+\NewDocumentCommand { \ExecuteDepPublistOptions } { m m }
+{
+  \keys_set:nn { bpl-deprecated } { #1 }
+  
+  \PackageWarning{biblatex-publist}%
+             {The~ option~ `#1'~ is~ deprecated!\MessageBreak
+              Please~ use~ the~ option~ `#2'~ instead.}
+}
+
+\ExplSyntaxOff
+
+% Biblatex options directly feed into the l3 options
+%
+\DeclareBibliographyOption{plauthorname}{\ExecutePublistOptions{plauthorname=#1}}
+\DeclareBibliographyOption{plauthorfirstname}{\ExecutePublistOptions{plauthorfirstname=#1}}
+\DeclareBibliographyOption{plauthornameprefix}{\ExecutePublistOptions{plauthornameprefix=#1}}
+\DeclareBibliographyOption{plauthorfirstinit}[true]{\ExecutePublistOptions{plauthorfirstinit=#1}}
+\DeclareBibliographyOption{plauthorhandling}[omit]{\ExecutePublistOptions{plauthorhandling=#1}}
+\DeclareBibliographyOption{nameorder}[family-given]{\ExecutePublistOptions{nameorder=#1}}
+\DeclareBibliographyOption{plsorting}[ydt]{\ExecutePublistOptions{plsorting=#1}}
+
+\DeclareBibliographyOption{plnumbering}[global]{\ExecutePublistOptions{plnumbering=#1}}
+\DeclareBibliographyOption{marginyear}[true]{\ExecutePublistOptions{marginyear=#1}}
+\DeclareBibliographyOption{hlyear}[true]{\ExecutePublistOptions{hlyear=#1}}
+\DeclareBibliographyOption{pubstateextra}[true]{\ExecutePublistOptions{pubstateextra=#1}}
+\DeclareBibliographyOption{jifinfo}[true]{\ExecutePublistOptions{jifinfo=#1}}
+\DeclareBibliographyOption{oainfo}[simple]{\ExecutePublistOptions{oainfo=#1}}
+\DeclareBibliographyOption{prinfo}[true]{\ExecutePublistOptions{prinfo=#1}}
+
+\DeclareBibliographyOption{linktitles}[all]{\ExecutePublistOptions{linktitles={#1}}}% Extra braces needed (multichoice)
+
+
+
+% Deprecated Options
+%
+% Deprecated as of v. 1.4
 \DeclareBibliographyOption{omitname}{%
     \PackageWarning{biblatex-publist}
         {The omitname option is deprecated!\MessageBreak
@@ -61,143 +456,21 @@
         {The omitnameprefix option is deprecated!\MessageBreak
          Please use plauthornameprefix instead.}{}%
     \def\bpl at ovonpart{#1}}
+%
+% Deprecated as of v. 2.0
+\DeclareBibliographyOption{plnumbered}[true]{\ExecuteDepPublistOptions{plnumbered=#1}{plnumbering}}
+\DeclareBibliographyOption{reversenumbering}[true]{\ExecuteDepPublistOptions{reversenumbering=#1}{plnumbering}}
+\DeclareBibliographyOption{boldyear}[true]{\ExecuteDepPublistOptions{boldyear=#1}{hlyear}}
+\DeclareBibliographyOption{linktitleall}[true]{\ExecuteDepPublistOptions{linktitleall=#1}{linktitles}}
+\DeclareBibliographyOption{linktitleurl}[true]{\ExecuteDepPublistOptions{linktitleurl=#1}{linktitles}}
+\DeclareBibliographyOption{linktitledoi}[true]{\ExecuteDepPublistOptions{linktitledoi=#1}{linktitles}}
+\DeclareBibliographyOption{linktitleisbn}[true]{\ExecuteDepPublistOptions{linktitleisbn=#1}{linktitles}}
+\DeclareBibliographyOption{linktitleissn}[true]{\ExecuteDepPublistOptions{linktitleissn=#1}{linktitles}}
 
-% Valid options
-\DeclareBibliographyOption{plauthorname}{\def\bpl at osurname{#1}}
-\DeclareBibliographyOption{plauthorfirstname}{\def\bpl at ofirstname{#1}}
-\DeclareBibliographyOption{plauthornameprefix}{\def\bpl at ovonpart{#1}}
 
-\newif\if at marginyear\@marginyearfalse
-\DeclareBibliographyOption{marginyear}[true]{%
-    \ifstrequal{#1}{true}{\@marginyeartrue\reversemarginpar}{\@marginyearfalse}
-}
+% Base style
+%
 
-\newif\if at unboldyear\@unboldyearfalse
-\DeclareBibliographyOption{boldyear}[true]{%
-    \ifstrequal{#1}{false}{\@unboldyeartrue}{\@unboldyearfalse}
-}
-
-\newif\if at pubstateextra\@pubstateextrafalse
-\DeclareBibliographyOption{pubstateextra}[true]{%
-    \ifstrequal{#1}{true}{\@pubstateextratrue}{\@pubstateextrafalse}
-}
-
-\newif\if at hlauthor\@hlauthorfalse
-\DeclareBibliographyOption{plauthorhandling}[omit]{%
-    \ifstrequal{#1}{highlight}{\@hlauthortrue}{\@hlauthorfalse}
-}
-
-\newif\if at givenfirst\@givenfirstfalse
-\DeclareBibliographyOption{nameorder}[family-given]{%
-    \ifstrequal{#1}{given-family}{\@givenfirsttrue}{\@givenfirstfalse}
-}
-
-\newtoggle{firstinit}
-\DeclareBibliographyOption{plauthorfirstinit}[true]{%
-    \ifstrequal{#1}{false}{\togglefalse{firstinit}}{\toggletrue{firstinit}}
-}
-
-\newif\if at bpl@numbered\@bpl at numberedtrue
-\newif\if at bpl@numberreset\@bpl at numberresetfalse
-\DeclareBibliographyOption{plnumbered}[true]{%
-    \ifstrequal{#1}{false}{% 1. "false"
-	\defbibenvironment{bibliography}
-	  {\list
-	    {}
-	    {\setlength{\leftmargin}{\bibhang}%
-	     \setlength{\itemindent}{-\leftmargin}%
-	     \setlength{\itemsep}{\bibitemsep}%
-	     \setlength{\parsep}{\bibparsep}}%
-	  }
-	  {\endlist}
-	  {\item}}{% else: 2. "reset"
-	     \ifstrequal{#1}{reset}{%
-	       \@bpl at numberresettrue%
-	       \defbibenvironment{bibliography}
-		  {\addtolength{\labelnumberwidth}{\extralabelnumberwidth}%
-		   \list
-		     {\printtext[labelnumberwidth]{%
-		      \printfield{labelprefix}%
-		      \printfield{labelnumber}}}
-		     {\setlength{\labelwidth}{\labelnumberwidth}%
-		      \setlength{\leftmargin}{\labelwidth}%
-		      \setlength{\labelsep}{\biblabelsep}%
-		      \addtolength{\leftmargin}{\labelsep}%
-		      \setlength{\itemsep}{\bibitemsep}%
-		      \setlength{\parsep}{\bibparsep}}}%
-		  {\endlist
-		   \csnumdef{blx at labelnumber@\the\c at refsection}{0}%
-		  }
-		  {\item}
-             }{% else: "true" (default: nothing to do here)
-          }% end of clause
-	}
-}
-
-\newtoggle{bpl at linktitle}
-\newtoggle{bpl at linktitleisbn}
-\newtoggle{bpl at linktitleissn}
-\newtoggle{bpl at linktitleurl}
-\newtoggle{bpl at linktitledoi}
-\DeclareBibliographyOption{linktitleall}[true]{%
-    \ifstrequal{#1}{true}{
-       \toggletrue{bpl at linktitleisbn}
-       \toggletrue{bpl at linktitleissn}
-       \toggletrue{bpl at linktitleurl}
-       \toggletrue{bpl at linktitledoi}
-       \toggletrue{bpl at linktitle}
-    }{%
-       \togglefalse{bpl at linktitleisbn}
-       \togglefalse{bpl at linktitleissn}
-       \togglefalse{bpl at linktitleurl}
-       \togglefalse{bpl at linktitledoi}
-       \togglefalse{bpl at linktitle}
-    }%
-}
-\DeclareBibliographyOption{linktitleurl}[true]{%
-    \ifstrequal{#1}{true}{%
-       \toggletrue{bpl at linktitleurl}
-       \toggletrue{bpl at linktitle}
-    }{%
-       \togglefalse{bpl at linktitleurl}
-    }%
-}
-\DeclareBibliographyOption{linktitledoi}[true]{%
-    \ifstrequal{#1}{true}{%
-       \toggletrue{bpl at linktitledoi}
-       \toggletrue{bpl at linktitle}
-    }{%
-       \togglefalse{bpl at linktitledoi}
-    }%
-}
-\DeclareBibliographyOption{linktitleisbn}[true]{%
-    \ifstrequal{#1}{true}{%
-       \toggletrue{bpl at linktitleisbn}
-       \toggletrue{bpl at linktitle}
-    }{%
-       \togglefalse{bpl at linktitleisbn}
-    }%
-}
-\DeclareBibliographyOption{linktitleissn}[true]{%
-    \ifstrequal{#1}{true}{%
-       \toggletrue{bpl at linktitleissn}
-       \toggletrue{bpl at linktitle}
-    }{%
-       \togglefalse{bpl at linktitleissn}
-    }%
-}
-
-\newtoggle{bpl at prinfo}
-\toggletrue{bpl at prinfo}
-\DeclareBibliographyOption{prinfo}[true]{%
-    \ifstrequal{#1}{true}{\toggletrue{bpl at prinfo}}{\togglefalse{bpl at prinfo}}
-}
-
-\newif\if at bpl@reversenum\@bpl at reversenumfalse
-\DeclareBibliographyOption{reversenumbering}[true]{%
-    \ifstrequal{#1}{true}{\@bpl at reversenumtrue}{\@bpl at reversenumfalse}
-}
-
 % Check if users have defined different base styles
 % If not, use authoryear.
 \newif\ifbpl at standardbasestyle\bpl at standardbasestylefalse
@@ -211,15 +484,29 @@
     pagetracker=true,
     labelnumber,
     useprefix=false,
-    defernumbers=true}
+    defernumbers=true%
+}
 
-% Default sorting depends on plauthorhandling
-\if at hlauthor%
-    \ExecuteBibliographyOptions{sorting=ydnt}
-\else
-    \ExecuteBibliographyOptions{sorting=ydt}
-\fi
+\newcommand*\bpl at set@defsorting[1][\empty]{%
+    \edef\bpl at scheme{#1}%
+    \ifx#1\empty
+        % Default sorting depends on plauthorhandling
+        \if at hlauthor%
+            \edef\bpl at scheme{ydnt}%
+        \else
+            \edef\bpl at scheme{ydt}%
+        \fi
+    \fi
+    \ifx\@onlypreamble\@notprerr
+        \newrefcontext[sorting=\bpl at scheme]
+    \else
+        \ExecuteBibliographyOptions{sorting=\bpl at scheme}
+    \fi
+}
 
+% Initialize
+\bpl at set@defsorting
+
 % Execute these options only with the standard base style
 \ifbpl at standardbasestyle
     \ExecuteBibliographyOptions{%
@@ -237,6 +524,20 @@
 % Helper functions
 %
 
+% Only provided by biblatex 3.19ff., so we roll our own
+\@ifundefined{AtNextRefsection}{%
+   \newrobustcmd*{\AtNextRefsection}{%
+      \ifundef\blx at hook@refsection at next
+        {\gdef\blx at hook@refsection at next{\global\undef\blx at hook@refsection at next}}
+        {}%
+      \gappto\blx at hook@refsection at next%
+    }
+  \patchcmd{\blx at refsection@i}%
+     {\csuse{blx at hook@refsectioninit}}%
+     {\csuse{blx at hook@refsectioninit}\csuse{blx at hook@refsection at next}}
+     {}{\PackageWarning{biblatex-publist}{Patching refsection failed!}}
+}{}
+
 %
 % Removing braces from names (courtesy of egreg at
 % http://tex.stackexchange.com/a/79583/19291)
@@ -294,13 +595,13 @@
 \def\bpl at lsurname{}
 \def\bpl at lfirstname{}
 \def\bpl at lvonpart{}
-\def\jsp at splitpllist#1{%
+\def\bpl at splitpllist#1{%
     \begingroup
     \protected at edef\@tempa{#1}%
     \expandafter\endgroup
-    \expandafter\jsp@@splitpllist\@tempa\relax%
+    \expandafter\bpl@@splitpllist\@tempa\relax%
 }
-\def\jsp@@splitpllist#1,#2,#3\relax{%
+\def\bpl@@splitpllist#1,#2,#3\relax{%
    \global\def\bpl at lfirstname{#1}%
    \global\def\bpl at lvonpart{#2}%
    \global\def\bpl at lsurname{#3}%
@@ -322,7 +623,7 @@
         test { \bpl at ifstreq{\bpl at esurname}{\bpl at tsurname} }
         and
         ( test { \bpl at ifstreq{\bpl at efirstname}{\bpl at tfirstname} } or test { \ifdefstring{\bpl at ofirstname}{} }
-          or ( test { \iftoggle{firstinit} } and test{ \bpl at iffirstcharequal{\bpl at efirstname}{\bpl at tfirstname} } )
+          or ( test { \iftoggle{bpl at firstinit} } and test{ \bpl at iffirstcharequal{\bpl at efirstname}{\bpl at tfirstname} } )
         )
         and
         ( test { \bpl at ifstreq{\bpl at evonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at ovonpart}{} }) }
@@ -332,7 +633,7 @@
     \def\bpl at lfirstname{}%
     \def\bpl at lvonpart{}%
     \renewcommand*{\do}[1]{%
-        \jsp at splitpllist{##1}%
+        \bpl 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}%
@@ -340,7 +641,7 @@
             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{ \bpl at iffirstcharequal{\bpl at lfirstname}{\bpl at tfirstname} } )
+              or ( test { \iftoggle{bpl at firstinit} } and test{ \bpl at iffirstcharequal{\bpl at lfirstname}{\bpl at tfirstname} } )
             )
             and
             ( test { \bpl at ifstreq{\bpl at elvonpart}{\bpl at tvonpart} } or test { \ifdefstring{\bpl at lvonpart}{} }) }
@@ -388,7 +689,13 @@
 }
 
 %
-% Highlighting auf publist author with plauthorhandling=highlight
+% Highlighting of the year with hlyear=true
+\providecommand*\plyearhl[1]{%
+    \mkbibbold{#1}%
+}
+
+%
+% Highlighting of publist author with plauthorhandling=highlight
 \providecommand*\plauthorhl[1]{%
     \mkbibbold{#1}%
 }
@@ -407,6 +714,7 @@
 %
 % Omission of names in truncated autor list
 \newcommand*\plnameomission{\bibellipsis\addcomma\addspace}
+\newcommand*\plextrainfosep{\addsemicolon\addspace}
 
 
 %
@@ -415,13 +723,42 @@
 \csnumgdef{bpl at itemtotal}{0}
 \csnumgdef{bpl at currentitem}{0}
 \csnumgdef{bpl at saverefsection}{0}
-\csnumgdef{bpl at currentitem}{0}
-\csnumgdef{bpl at all@entrycount}{0}
-\csnumgdef{bpl at comp@entrycount:0}{0}
+\csnumgdef{bpl at secitems:0}{0}
+\csnumgdef{bpl at savesecitems}{0}
+\newcounter{bplitems}
+\setcounter{bplitems}{0}
+\newcounter{bplsecitems}
+\setcounter{bplsecitems}{0}
+\newcounter{bplbgitems}
+\setcounter{bplbgitems}{0}
+\newcounter{plnumgroup}
+\setcounter{plnumgroup}{0}
 \newbool{newsection}
+\newbool{needbpxrerun}
+\newbool{plnumgroup}
+\def\resetplnumgroup{}
 
-\preto\blx at refsection{\global\setbool{newsection}{true}}
+\newenvironment{plnumgroup}%
+   {%
+    \global\booltrue{plnumgroup}%
+    \stepcounter{plnumgroup}%
+    \setcounter{bplbgitems}{0}%
+    \csnumgdef{bpl at numgroup@done}{0}%
+    \if at bpl@numberreset%
+       \ifbool{@bpl at reversenum}{%
+          \csnumgdef{bpl at itemtotal}{\csuse{bpl at savesecitems:\theplnumgroup}}%
+       }{}%
+    \fi%
+   }{%
+    \AtNextRefsection{%
+      \global\boolfalse{plnumgroup}%
+      \stepcounter{plnumgroup}%
+      \resetplnumgroup%
+    }%
+   }%
 
+\preto\blx at refsection{\global\booltrue{newsection}}
+
 % Possibility to manually make the space occupied by the label wider
 \newlength\extralabelnumberwidth
 \setlength\extralabelnumberwidth{0pt}
@@ -429,6 +766,10 @@
 \defbibenvironment{bibliography}
     {%
      \addtolength{\labelnumberwidth}{\extralabelnumberwidth}%
+     \setcounter{bplsecitems}{0}%
+     \ifcsundef{bpl at savesecitems:\theplnumgroup}{%
+         \csnumgdef{bpl at savesecitems:\theplnumgroup}{0}%
+     }{}%
      \list
          {\printtext[labelnumberwidth]{%
           \printfield{labelprefix}%
@@ -444,21 +785,80 @@
           \renewcommand*{\makelabel}[1]{\hss##1}%
     }%
     {\endlist
-     \ifnumgreater{\c at refsection}{\bpl at saverefsection}%
-     {\if at bpl@reversenum
-         \csnumgdef{bpl at itemtotal}{\csuse{bpl at itemtotal}}%
-      \else
-         \csnumgdef{bpl at itemtotal}{\csuse{bpl at itemtotal}+\csuse{bpl at currentitem}}%
-      \fi}{}%
+     \if at bpl@numberreset
+        \ifbool{manitemreset}{%
+           % Set back start number after manually set section
+           \global\csnumgdef{bpl at set@itemtotal}{0}%
+           \global\boolfalse{manitemreset}%
+        }{}%
+        \ifnumgreater{\c at refsection}{\bpl at saverefsection}%
+           {%
+             \csnumdef{blx at labelnumber@\the\c at refsection}{0}%
+             \ifbool{@bpl at reversenum}{%
+                 \ifbool{plnumgroup}{%
+                      \csnumgdef{bpl at numgroup@done}{\csuse{bpl at numgroup@done}+\csuse{bpl at savesecitems}}%
+                      \csnumgdef{bpl at itemtotal}{\csuse{bpl at savesecitems:\theplnumgroup}-\csuse{bpl at numgroup@done}}%
+                      \gdef\resetplnumgroup{\csnumgdef{bpl at itemtotal}{\csuse{bpl at set@itemtotal}}}%
+                 }{%
+                      \csnumgdef{bpl at itemtotal}{\csuse{bpl at set@itemtotal}}%
+                 }
+             }{%
+                 \ifbool{plnumgroup}{%
+                      \csnumgdef{bpl at itemtotal}{\csuse{bpl at itemtotal}+\csuse{bpl at savesecitems}}%
+                      \gdef\resetplnumgroup{\csnumgdef{bpl at itemtotal}{\csuse{bpl at set@itemtotal}}}%
+                 }{%
+                      \csnumgdef{bpl at itemtotal}{\csuse{bpl at set@itemtotal}}%
+                 }
+             }%
+            }{}%
+     \else
+        \ifnumgreater{\c at refsection}{\bpl at saverefsection}%
+           {\if at bpl@reversenum
+              \csnumgdef{bpl at itemtotal}{\csuse{bpl at itemtotal}}%
+            \else
+              \csnumgdef{bpl at itemtotal}{\csuse{bpl at itemtotal}+\csuse{bpl at currentitem}}%
+            \fi%
+           }{}%
+      \fi
       \csnumgdef{bpl at saverefsection}{\c at refsection}%
+      \if at bpl@reversenum%
+         % Write item count to the bpx file
+         \global\boolfalse{needbpxrerun}%
+         \if at filesw%
+           % Check if we have a changed value
+           \ifcsdef{bpl at items:\therefsection}{%
+              \ifnumequal{\value{bplitems}}{\numexpr\csuse{bpl at items:\therefsection}\relax}{}{%
+                   \global\booltrue{needbpxrerun}
+              }
+           }{\global\booltrue{needbpxrerun}}
+           \protected at write\bpl at bpxfile{}{%
+              \protect\csdef{bpl at items:\therefsection}{\thebplitems}%
+              \protect\csdef{bpl at items}{\thebplitems}%
+              \protect\csdef{bpl at secitems:\therefsection}{\thebplsecitems}%
+              \protect\csdef{bpl at savesecitems:\theplnumgroup}{\thebplbgitems}%
+           }%
+         \fi
+      \fi
     }
-    {\item}
+    {%
+      \if at bpl@reversenum%
+         % We count all really output items for proper reverse numbering
+         % (global and per section)
+         \stepcounter{bplitems}%
+      \fi%
+      \stepcounter{bplsecitems}%
+      \ifbool{plnumgroup}{%
+         \stepcounter{bplbgitems}%
+         \csnumgdef{bpl at savesecitems}{\thebplsecitems}%
+      }{}%   
+      \item%
+    }
 
 \DeclareFieldFormat{labelnumber}{%
     \ifbool{newsection}{%
        % Fix start counter value
        \mkbibsecstart{#1}%
-       \global\setbool{newsection}{false}%
+       \global\boolfalse{newsection}%
     }{}%
     \mkbibdesc{#1}%
     \csnumgdef{bpl at currentitem}{#1}%
@@ -466,61 +866,123 @@
 
 \newrobustcmd{\mkbibdesc}[1]{%
     % Print labelnumber as actual number, plus item total
-    \number\numexpr\csuse{bpl at itemtotal}+#1\relax%
+    \number\numexpr\csuse{bpl at itemtotal}+#1+\csuse{bpl at shift@itemtotal}\relax%
 }%
 
-\newrobustcmd{\mkbibsecstart}[1]{%
-   \csnumgdef{bpl at itemtotal}{\csuse{bpl at itemtotal}-#1+1}%
-}
-
 % Way to manually shift the numbering
 \csnumgdef{bpl at shift@itemtotal}{0}
-\newcommand*\shiftbplnum[1]{%
+\newcommand*\shiftplnum[1]{%
     \csnumgdef{bpl at shift@itemtotal}{#1}%
 }
 
+% Way to manually set the numbering
+\newbool{manitemset}
+\newbool{manitemreset}
+\csnumgdef{bpl at set@itemtotal}{0}
+\newcommand*\setplnum[1]{%
+   \csnumgdef{bpl at set@itemtotal}{#1-1}%
+   \global\booltrue{manitemset}%
+}
+
+\newrobustcmd{\mkbibsecstart}[1]{%
+ \ifbool{manitemset}{%
+   \csnumgdef{bpl at itemtotal}{\csuse{bpl at set@itemtotal}}%
+   \global\boolfalse{manitemset}%
+   \if at bpl@numberreset
+     \global\booltrue{manitemreset}%
+   \fi
+ }{%
+   \csnumgdef{bpl at itemtotal}{\csuse{bpl at itemtotal}-#1+1}%
+ }
+}
+
 %
 % Reverse numbering
-% Inspired by moewew's approach at
-% https://tex.stackexchange.com/a/563328/19291
 %
+\AtBeginDocument{%
+  \if at bpl@reversenum
+    \newread\bpl at read@bpxfile
+    \immediate\openin\bpl at read@bpxfile=\jobname.bpx
+    \loop\unless\ifeof\bpl at read@bpxfile
+        \read\bpl at read@bpxfile to\bpx at data
+        \ifeof\bpl at read@bpxfile%
+        \else
+            \bpx at data
+        \fi
+    \repeat
+    \immediate\closein\bpl at read@bpxfile
+    \newwrite\bpl at bpxfile
+    \immediate\openout\bpl at bpxfile=\jobname.bpx
+    \if at filesw%
+        \protected at write\bpl at bpxfile{}{\@percentchar\space biblatex-publist auxiliary file:
+                                       count of items for reverse numbering}%
+    \fi
+    \AtEndDocument{%
+       \ifbool{needbpxrerun}{%
+           \PackageWarning{biblatex-publist}{Please rerun LaTeX!\MessageBreak
+                                             Still counting items}%
+       }{}
+    }
+  \fi
+}
+
 \AtEndOfPackage{%
-\newcounter{prevrefsection}%
-\if at bpl@reversenum
-  % Count total number of entries in each refsection
-  \AtDataInput{%
-    \ifcategory{filtered}{%
-      \csnumgdef{bpl at entrycount:\therefsection}{%
-         \csuse{bpl at entrycount:\therefsection}+1%
+  \newcounter{prevrefsection}%
+  \if at bpl@reversenum
+    \renewrobustcmd{\mkbibdesc}[1]{%
+       \ifbool{@bpl at numberreset}{%
+          % Print the labelnumber as the total number of entries in the
+          % current refsection, minus the actual labelnumber, plus one
+          \ifbool{plnumgroup}{%
+             \number\numexpr\csuse{bpl at itemtotal}-#1+1\relax%
+          }{%
+             \ifcsdef{bpl at secitems:\therefsection}{%
+                \number\numexpr\csuse{bpl at secitems:\therefsection}-#1+1%
+                         +\csuse{bpl at shift@itemtotal}\relax%
+             }{%
+                \number\numexpr\csuse{bpl at itemtotal}-#1+1\relax%
+             }%
+          }%
+       }{%
+          % Use decreasing counter
+          \ifcsdef{bpl at items:\theprevrefsection}{%
+             \number\numexpr\csuse{bpl at itemtotal}-#1+1-\csuse{bpl at items:\theprevrefsection}\relax%
+          }{%
+             \number\numexpr\csuse{bpl at itemtotal}-#1+1\relax%
+          }%
+       }%
+    }%
+    \renewrobustcmd{\mkbibsecstart}[1]{%
+       \setcounter{prevrefsection}{\therefsection}%
+       \addtocounter{prevrefsection}{-1}%
+       \ifbool{@bpl at numberreset}{%
+          \ifbool{manitemset}{%
+             % Start from manually set value and count down
+             \csnumgdef{bpl at secitems:\therefsection}{\csuse{bpl at set@itemtotal}+1}\relax%
+             \global\boolfalse{manitemset}%
+          }{%
+            \ifbool{plnumgroup}{%
+                \csnumgdef{bpl at itemtotal}{\csuse{bpl at itemtotal}+\csuse{bpl at shift@itemtotal}}%
+            }{%
+                \csnumgdef{bpl at itemtotal}{\csuse{bpl at shift@itemtotal}}%
+            }
+          }%
+       }{%
+          \ifbool{manitemset}{%
+             % Start from manually set value and count down
+             \csnumgdef{bpl at itemtotal}{\csuse{bpl at set@itemtotal}+1+\csuse{bpl at items:\theprevrefsection}}\relax%
+             \csnumgdef{bpl at set@itemtotal}{\csuse{bpl at set@itemtotal}-\csuse{bpl at secitems:\therefsection}}%
+          }{%
+             \ifcsundef{bpl at items}{%
+                 \PackageWarning{biblatex-publist}{Please rerun LaTeX!\MessageBreak
+                                                   Still counting items in ref section \therefsection}%
+             }{%
+                 \csnumgdef{bpl at itemtotal}{\csuse{bpl at items}+\csuse{bpl at shift@itemtotal}}%
+             }%
+         }%
       }%
-      \setcounter{prevrefsection}{\therefsection}%
-      \addtocounter{prevrefsection}{-1}%
-      \csnumgdef{bpl at comp@entrycount:\therefsection}{%
-         \csuse{bpl at comp@entrycount:\theprevrefsection}+\csuse{bpl at entrycount:\therefsection}%
-      }%
-      \csnumgdef{bpl at all@entrycount}{%
-         \csuse{bpl at all@entrycount}+1%
-      }%
-    }{}%
-  }%
-  \renewrobustcmd{\mkbibdesc}[1]{%
-     % Print the labelnumber as the total number of entries in the
-     % current refsection, minus the actual labelnumber, plus one
-     \number\numexpr\csuse{bpl at entrycount:\therefsection}+\csuse{bpl at itemtotal}-#1+1\relax%
-  }%
-  \renewrobustcmd{\mkbibsecstart}[1]{%
-   \setcounter{prevrefsection}{\therefsection}%
-   \addtocounter{prevrefsection}{-1}%
-   \if at bpl@numberreset
-       \csnumgdef{bpl at itemtotal}{#1-1+\csuse{bpl at shift@itemtotal}}%
-   \else
-       \csnumgdef{bpl at itemtotal}{\csuse{bpl at all@entrycount}%
-                                 -\csuse{bpl at comp@entrycount:\theprevrefsection}%
-                                 -\csuse{bpl at entrycount:\therefsection}-#1+1%
-                                 +\csuse{bpl at shift@itemtotal}}%
-   \fi%
-  }%
-\fi
+   }%
+  \fi
 }%
 
 
@@ -537,18 +999,41 @@
 
 
 %
+% OpenAccess type
+%
+\DeclareFieldFormat{openaccess}{%
+  \iftoggle{bpl at oainfosimple}{%
+     \ifbibstring{openaccess:true}%
+       {\bibstring{openaccess:true}}%
+       {#1}%
+  }{%
+    \ifbibstring{openaccess:#1}%
+       {\bibstring{openaccess:#1}}%
+       {\ifbibstring{openaccess:true}%
+          {\bibstring{openaccess:true}}%
+          {#1}%
+       }%
+  }%
+}
+
+%
 % Peer-review type
 %
-\newcommand\printprinfo[1]{%
-    \ifbibstring{peerreview:#1}%
+\DeclareFieldFormat{peerreview}{%
+   \ifbibstring{peerreview:#1}%
        {\bibstring{peerreview:#1}}%
        {#1}%
 }
 
-\DeclareFieldFormat{peerreview}{%
-    \printtext[brackets]{\printprinfo{#1}}%
+%
+% Impact factor
+%
+\DeclareFieldFormat{impactfactor}{%
+   \bibstring{impactfactor}\addcolon\addspace#1%
 }
 
+\DeclareFieldFormat{plextrainfo}{\mkbibbrackets{#1}}
+
 %
 % Bibliography filter
 %
@@ -1015,17 +1500,13 @@
 }
 
 \newbibmacro*{bpl:date:labeldate+extradate}{%
-    \mkbibbold{\usebibmacro{bpl:date:makedate}}%
+   \if at hlyear
+      \plyearhl{\usebibmacro{bpl:date:makedate}}%
+   \else
+      \usebibmacro{bpl:date:makedate}%
+   \fi%
 }
 
-\AtBeginDocument{%
-    \if at unboldyear
-        \renewbibmacro*{bpl:date:labeldate+extradate}{%
-            \usebibmacro{bpl:date:makedate}%
-        }
-    \fi
-}
-
 \newbibmacro*{bpl:marginyear}{%
     \if at marginyear%
         \iffieldundef{year}{%
@@ -1114,14 +1595,51 @@
         }%
 }
 
+\newtoggle{bpl at have@extrainfo}
+
 \renewbibmacro*{addendum+pubstate}{%
+  \togglefalse{bpl at have@extrainfo}%
   \printfield{addendum}%
   \newunit\newblock
   \printfield{pubstate}%
-  \iftoggle{bpl at prinfo}{%
-    \newunit\newblock
-    \printfield{peerreview}%
-  }{}%
+  \ifboolexpr{ (
+                 not test {\iffieldundef{peerreview}}
+                 and test {\iftoggle{bpl at prinfo}}
+               )
+               or
+               (
+                 not test {\iffieldundef{openaccess}}
+                 and test {\iftoggle{bpl at oainfo}}
+               )
+               or
+               (
+                 not test {\iffieldundef{impactfactor}}
+                 and test {\iftoggle{bpl at jifinfo}}          
+               )
+            }{%
+                \newunit\newblock%
+                \printtext[plextrainfo]{%
+                   \ifboolexpr{ not test {\iffieldundef{peerreview}}
+                      and test {\iftoggle{bpl at prinfo}}
+                   }{%
+                      \toggletrue{bpl at have@extrainfo}%
+                      \printfield{peerreview}%
+                   }{}%
+                   \ifboolexpr{ not test {\iffieldundef{openaccess}}
+                      and test {\iftoggle{bpl at oainfo}}
+                   }{%
+                      \iftoggle{bpl at have@extrainfo}{\plextrainfosep}{}%
+                      \printfield{openaccess}%
+                      \toggletrue{bpl at have@extrainfo}%
+                   }{}%
+                   \ifboolexpr{ not test {\iffieldundef{impactfactor}}
+                      and test {\iftoggle{bpl at jifinfo}}
+                   }{%
+                      \iftoggle{bpl at have@extrainfo}{\plextrainfosep}{}%
+                      \printfield{impactfactor}%
+                   }{}%
+               }%
+            }{}%
 }
 
 %
@@ -1129,6 +1647,10 @@
 %
 \NewBibliographyString{with}
 \NewBibliographyString{parttranslationof}
+\NewBibliographyString{impactfactor}
+\NewBibliographyString{openaccess:true}
+\NewBibliographyString{openaccess:gold}
+\NewBibliographyString{openaccess:green}
 \NewBibliographyString{peerreview:sb}
 \NewBibliographyString{peerreview:db}
 \NewBibliographyString{peerreview:op}
@@ -1140,6 +1662,10 @@
 \DefineBibliographyStrings{english}{%
     parttranslationof   = {partial translation of},
     with                = {with},
+    impactfactor        = {impact factor},
+    openaccess:true     = {OpenAccess},
+    openaccess:gold     = {OpenAccess (gold)},
+    openaccess:green    = {OpenAccess (green)},
     peerreview:sb       = {single blind peer review},
     peerreview:db       = {double blind peer review},
     peerreview:op       = {open peer review},
@@ -1152,6 +1678,10 @@
 \DefineBibliographyStrings{french}{%
     parttranslationof   = {traduction partielle de},
     with                = {avec},
+    impactfactor        = {facteur d'impact},
+    openaccess:true     = {libre acc\`es},
+    openaccess:gold     = {libre acc\`es (dorée)},
+    openaccess:green    = {libre acc\`es (verte)},
     peerreview:sb       = {\'{e}valuation par des pairs anonymis\'{e}s},
     peerreview:db       = {\'{e}valuation par les pairs en double aveugle},
     peerreview:op       = {\'{e}valuation par les pairs ouverte},
@@ -1164,6 +1694,10 @@
 \DefineBibliographyStrings{german}{%
     parttranslationof   = {Teil\"ubersetzung von},
     with                = {mit},
+    impactfactor        = {Impactfaktor},
+    openaccess:true     = {OpenAccess},
+    openaccess:gold     = {OpenAccess (gold)},
+    openaccess:green    = {OpenAccess (gr\"un)},
     peerreview:sb       = {Blindbegutachtung},
     peerreview:db       = {Doppelblindbegutachtung},
     peerreview:op       = {Offene Begutachtung},
@@ -1469,12 +2003,12 @@
            \let\abx at name@shortauthor\abx at name@namea
            \ifdefstring\abx at field@labelnamesource{shortauthor}
               {\ifundef\abx at name@shortauthor
-	          {\ifundef\abx at name@author
-		      {\def\abx at field@labelnamesource{editor}}
-		      {\def\abx at field@labelnamesource{author}}%
+              {\ifundef\abx at name@author
+              {\def\abx at field@labelnamesource{editor}}
+              {\def\abx at field@labelnamesource{author}}%
                   }%
-		  {}%
-	      }%
+          {}%
+          }%
               {}%
         }%
      }%
@@ -1541,5 +2075,7 @@
     }%
 }
 
+% Renamed in v. 2.0
+\let\shiftbplnum\shiftplnum
 
 \endinput

Modified: trunk/Master/texmf-dist/tex/latex/biblatex-publist/publist.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-publist/publist.cbx	2022-10-24 19:34:41 UTC (rev 64801)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-publist/publist.cbx	2022-10-24 19:34:56 UTC (rev 64802)
@@ -26,8 +26,8 @@
 %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-\def\bpl at version{1.27}
-\def\bpl at rdate{2022/10/03}
+\def\bpl at version{2.0}
+\def\bpl at rdate{2022/10/24}
 
 \ProvidesFile{publist.cbx}[\bpl at rdate\space v.\bpl at version\space
                            biblatex citation style (JSP)]
@@ -66,14 +66,41 @@
 }
 
 \providebool{@bpl at reversenum}
+\providebool{@bpl at numberreset}
+\providebool{plnumgroup}
 
 \AtEndOfPackage{%
 \if at bpl@reversenum
+  \newcounter{prevcrefsection}%
   \renewrobustcmd{\mkrefdesc}[1]{%
-     % Print the labelnumber as the total number of entries in the
-     % current refsection, minus the actual labelnumber, plus one
-     \number\numexpr\csuse{bpl at itemtotal}-#1+1%
+     \ifbool{@bpl at numberreset}{%
+        % Print the labelnumber as the total number of entries in the
+        % current refsection, minus the actual labelnumber, plus one
+        \ifbool{plnumgroup}{%
+             \number\numexpr\csuse{bpl at itemtotal}-#1+1%
+                            +\csuse{bpl at secstartshift}\relax%
+          }{%
+             \ifcsdef{bpl at secitems:\therefsection}{%
+                \number\numexpr\csuse{bpl at secitems:\therefsection}-#1+1%
                            +\csuse{bpl at secstartshift}\relax%
+             }{%
+                \number\numexpr\csuse{bpl at itemtotal}-#1+1%
+                           +\csuse{bpl at secstartshift}\relax%
+             }%
+          }%
+     }{%
+        % Use decreasing counter
+        \setcounter{prevcrefsection}{\therefsection}%
+        \addtocounter{prevcrefsection}{-1}%
+        \ifcsdef{bpl at items:\theprevcrefsection}{%
+           \number\numexpr\csuse{bpl at itemtotal}-#1+1%
+           -\csuse{bpl at items:\theprevcrefsection}%
+           +\csuse{bpl at secstartshift}\relax%
+        }{%
+           \number\numexpr\csuse{bpl at itemtotal}-#1+1%
+           +\csuse{bpl at secstartshift}\relax%
+        }%
+     }%
   }%
 \fi%
 }

Modified: trunk/Master/texmf-dist/tex/latex/biblatex-publist/publist.dbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex-publist/publist.dbx	2022-10-24 19:34:41 UTC (rev 64801)
+++ trunk/Master/texmf-dist/tex/latex/biblatex-publist/publist.dbx	2022-10-24 19:34:56 UTC (rev 64802)
@@ -1,5 +1,5 @@
 % publist.dbx, biblatex data model specification for the biblatex-publist
-% package, version 1.26 (2022-01-05). 
+% package, version 2.0 (2022/10/24). 
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License, either version 1.3
@@ -20,10 +20,14 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
-% Add peerreview (literal) field
+% Add peerreview and openaccess (literal) field
 \DeclareDatamodelFields[type=field, datatype=literal]{
+  impactfactor,
+  openaccess,
   peerreview}
 
 \DeclareDatamodelEntryfields{
+  impactfactor,
+  openaccess,
   peerreview}
 



More information about the tex-live-commits mailing list.