0

When writing my cv, I wanna include some bibentries for my own papers, but also some other describing some courses I've taken. My strategy is to put those courses taken in a special class (e.g. @book) and print separate bibliographies as follows:

\documentclass{article}

\title{Curriculm Vitae}
\author{R. Reventlov Giskard}

\usepackage%
    [backend=biber,%
    style=publist]% 
    {biblatex}

\plauthorname[R. Giskard]{Reventlov}

\addbibresource{articles.bib}
\addbibresource{courses.bib}

\begin{document}

\maketitle

\nocite{*}

%   MY ARTICLES
\printbibliography[title={Published Articles}, type=article]


%   COURSES [BOOKS] BY OTHERS
\printbibliography[title={Courses Taken}, type=book]

\end{document}

The \printbibliography commands should print something like:

Published Articles

1 2006 (with R. Daneel Olivaw). "The Three Laws of Robotics Revisited".

2 2005. "The Zeroth Law of Robotics".

Courses Taken

3 2004 Susan Calvin. Practical Aspects of Robotics.

4 2003 Han Fastolfe and Vasilia Fastolfe. How to read and influence the emotions of humans and robots.

Instead, they fourth entry is mistakenly printed as follows:

4 2003 (with Han Fastolfe and Vasilia Fastolfe). How to read and influence the emotions of humans and robots.

How can I prevent biblatex-publist from implicitly making me coauthor of this fourth entry (or of all @book entries for that matter)?

Note 1

In my full code I declare a special entry type @course as follows:

\DeclareBibliographyAlias{course}{book}

and then call:

\printbibliography[title={Courses Taken}, type=course]

In both cases, the error persists.

Note 2

The output without style=publist would be something like:

Published Articles

1 R. Reventlov Giskard and R. Daneel Olivaw (2006). "The Three Laws of Robotics Revisited".

2 R. Reventlov Giskard (2005). "The Zeroth Law of Robotics".

Courses Taken

3 Susan Calvin (2004). Practical Aspects of Robotics.

4 Han Fastolfe and Vasilia Fastolfe (2003). How to read and influence the emotions of humans and robots.

OP Edit 1

I have tested the following version of the code provided by @moewe (the only changes being removing the "R." from "R. Giskard Reventlov" and adding "Susan Calvin" as coauthor of "appleby"): txt.do/1fc7k

However, the output is:

Notice that the co-authorship that matters here is that of the "appleby" entry. It isn't supposed to say "(with ...)" because Giskard (the pluauthorname) is not coauthor in the entry "appleby".

Here's the log file, in case it is of interest: txt.do/1fcz2

OP Edit 2

After having installed a vanilla TeX Live, as recommended in @moewe's comment to his answer, we seem to be one step away from solving the issue. The same input returns the following output:

(Highlights are mine.)

Here is the log file: txt.do/1fg0o

Just in case, I wouldn't mind loosing the et al feature since I'm setting maxnames=99.

1
  • 1
    Please consider posting complete examples including example .bib entries in the future. We don't have your .bib files and having to make up suitable entries is quite a boring and unnecessary task.
    – moewe
    Commented Aug 6, 2020 at 15:40

2 Answers 2

1

Update As mentioned by JSpitzm, the developer of biblatex-publist, version 1.20 with a fix for this slightly counter-intuitive behaviour is out now.


Previously (< v1.20) biblatex-publist assumed you are the co-author of the works listed. If I understand all the work the style does the information whether or not a \plauthorname is present in a name is available, we just need to make use of it.

The trick is to check nonplauthors/nonpleditors against listtotal. If they are equal \plauthorname is not amongst the authors/editors. In that case we avoid the "with" and the parentheses.

The entire definition of bpl:handlenames is quite full on, here we only added the two \ifthenelse{\value{nonpl#1s}=\value{listtotal}} tests to the original definition from publist.bbx.

The code below requires biblatex-publist v.1.18 (2020/07/31). There may not be an error with older versions, but the output is probably not going to be as expected.

\documentclass{article}

\usepackage%
    [backend=biber,%
    style=publist]% 
    {biblatex}

\plauthorname[Giskard]{Reventlov}

\makeatletter
\renewbibmacro{bpl:handlenames}[1][author]{%
    \bpl@ifplauthor{\namepartgiven}{\namepartprefix}{\namepartfamily}%
       {\global\toggletrue{isplauthor}\stepcounter{pl#1}}%
       {\global\togglefalse{isplauthor}}%
    %
    % Calculate real list stop
    \ifnumless{\value{liststop}}{\value{maxnames}}
         {\setcounter{realliststop}{\theliststop}}
         {\setcounter{realliststop}{\value{minnames}}}%
    %
    % First case: plauthorhandling=highlight
    \if@hlauthor%
        % Highlight plauthor(s)
        \usebibmacro{bpl:omissiondelim}[#1]%
        \iftoggle{isplauthor}{%
            \plauthorhl{%
                \if@givenfirst% given name first
                    \ifgiveninits
                        {\ifdefvoid{\namepartgiveni}{}{\namepartgiveni\addspace}}%
                        {\ifdefvoid{\namepartgiven}{}{\namepartgiven\addspace}}%
                    \ifdefvoid{\namepartprefix}%
                        {}%
                        {\namepartprefix\addspace}%
                    \namepartfamily%
                \else% family name first
                    \ifdefvoid{\namepartprefix}%
                        {}%
                        {\namepartprefix\addspace}%
                    \namepartfamily%
                    \ifgiveninits
                        {\ifdefvoid{\namepartgiveni}{}{\addcomma\addspace\namepartgiveni\addspace}}%
                        {\ifdefvoid{\namepartgiven}{}{\addcomma\addspace\namepartgiven\isdot\addspace}}%
                \fi
            }%
            \ifnumequal{\value{listcount}}{\value{liststop}}{}{\usebibmacro{name:andothers}}%
        }{%
           \ifnumgreater{\value{listcount}}{\value{realliststop}}{}{%
             \if@givenfirst% given name first
                 \ifgiveninits
                     {\ifdefvoid{\namepartgiveni}{}{\namepartgiveni\addspace}}%
                     {\ifdefvoid{\namepartgiven}{}{\namepartgiven\addspace}}%
                 \ifdefvoid{\namepartprefix}%
                     {}%
                     {\namepartprefix\addspace}%
                 \namepartfamily%
             \else% family name first
                 \ifdefvoid{\namepartprefix}%
                       {}%
                       {\namepartprefix\addspace}%
                 \namepartfamily%
                 \ifgiveninits
                    {\ifdefvoid{\namepartgiveni}{}{\addcomma\addspace\namepartgiveni\addspace}}%
                    {\ifdefvoid{\namepartgiven}{}{\addcomma\addspace\namepartgiven\isdot\addspace}}%
             \fi
           }%
           \usebibmacro{name:andothers}%
        }%
    %
    % Second case: plauthorhandling=omit
    \else% \if@hlauthor false
        \ifthenelse{\value{listcount}=1}%
            {\ifthenelse{\value{nonpl#1s}>0}%
                 {\ifthenelse{\value{pl#1s}=0}
                    {}
                    {\bibopenparen\bibstring{with}\addspace}}%
                 {}%
             \iftoggle{isplauthor}%
                 {\global\toggletrue{plauthorprecedes}}%
                 {\global\togglefalse{plauthorprecedes}}%
            }%
            {}%
        % Exclude omitted author
        \iftoggle{isplauthor}%
            {% <- TRUE condition
              \global\toggletrue{hadplauthor}%
            }% <- end TRUE condition
            {% <- FALSE condition
              \stepcounter{nonpl#1}%
              \ifthenelse{\value{listcount}=1}%
                   {\global\togglefalse{hadplauthor}}%
                   {%
                     \iftoggle{plauthorprecedes}%
                         {}%
                         {%
                           \ifnumgreater{\value{listcount}}{\value{realliststop}}{}{%
                              \ifnumless{\value{nonpl#1}}{\value{nonpl#1s}}%
                                 {\multinamedelim}%
                                 {\printdelim[#1]{bplfinalnamedelim}}%
                            }%
                         }%
                   }%
             \ifnumgreater{\value{listcount}}{\value{realliststop}}{}{%
              \ifgiveninits
                  {\ifdefvoid{\namepartgiveni}{}{\namepartgiveni\addspace}}%
                  {\ifdefvoid{\namepartgiven}{}{\namepartgiven\addspace}}%
              \ifdefvoid{\namepartprefix}{}{\namepartprefix\addspace}%
              \global\togglefalse{plauthorprecedes}%
              \namepartfamily%
             }%
            }% <- end FALSE condition
        %
        \usebibmacro{name:andothers}%
        \ifthenelse{\value{nonpl#1s}>0\AND\value{listcount}=\value{liststop}}%
            {\ifthenelse{\value{pl#1s}=0}
               {}
               {\unspace\bibcloseparen}}%
            {}%
    \fi% end of \if@hlauthor else condition
}
\makeatother

\begin{filecontents}{\jobname.bib}
@book{appleby,
  author  = {Humphrey Appleby},
  title   = {On the Importance of the Civil Service},
  date    = {2001},
}
@book{bppleby,
  author  = {Humphrey Bppleby and Someone Else},
  title   = {On the Importance of the Civil Service},
  date    = {2002},
}
@book{cppleby,
  author  = {Humphrey Cppleby and Someone Else and A. Third Person},
  title   = {On the Importance of the Civil Service},
  date    = {2003},
}
@article{reventlov:2,
  author  = {Giskard Reventlov and Someone Else},
  title   = {Turtles},
  date    = {2012},
}
@article{reventlov:1,
  author  = {Giskard Reventlov},
  title   = {Turtles},
  date    = {2011},
}
@article{reventlov:3,
  author  = {Giskard Reventlov and Ann Uthor and Bann Tuthor},
  title   = {Turtles},
  date    = {2013},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\nocite{*}

%   MY ARTICLES
\printbibliography[title={Published Articles}, type=article]

%   COURSES [BOOKS] BY OTHERS
\printbibliography[title={Courses Taken}, type=book]
\end{document}

2013 (with Ann Uthor and Bann Tuthor). “Turtles”. In://2003 Humphrey Cppleby, Someone Else, and A. Third Person. On the Importance of the Civil Service.

16
  • 1
    @lfba As I briefly alluded in the answer body, biblatex-publist already counts the number of non-pl authors/editors. If we compare that number to the total number of authors/editors and they are the same, there was no pl author/editor and we thus don't print 'with'. If I change the author = {Humphrey Appleby}, to author = {Humphrey Appleby and Bernard Woolley}, in appleby I still get no 'with' for the authors. Can you please explain what exactly goes wrong when you write author = {Humphrey Appleby and Bernard Woolley}, in my MWE?
    – moewe
    Commented Aug 8, 2020 at 11:46
  • 1
    @lfba I only just realised that there is something odd going on with "R. Giskard Reventlov" in the example. That appears to be a bug in biblatex-publist that I just reported at github.com/jspitz/biblatex-publist/issues/24. So if you are asking about the superfluous "R. Giskard Reventlov" in the first entry, that should explain things. For the time being take a different name that doesn't contain initials and you should be good.
    – moewe
    Commented Aug 8, 2020 at 12:12
  • 1
    Quick update on the bug mention above: It was fixed shortly after it was reported. The version on GitHub already works fine, not sure when the update will hit CTAN.
    – moewe
    Commented Aug 8, 2020 at 20:33
  • 1
    @lfba Your version of biblatex-publist is outdated (you have publist.bbx 2018/03/01 v.1.9, mine is publist.bbx 2020/07/10 v.1.17). Your old version does not calculate nonplauthors/nonpleditors. You could try grabbing the .bbx and .cbx from ctan.org/tex-archive/macros/latex/contrib/biblatex-contrib/… and dropping it into the same directory as your main .tex file to get a newer version. This may not work if biblatex-publist depends on a newer biblatex version than you have. ...
    – moewe
    Commented Aug 9, 2020 at 4:52
  • 1
    ... In that case you may have to think about switching from the TeX live from the Debian/Ubuntu repositories to a vanilla TeX live, see tex.stackexchange.com/q/1092/35864. (In case it was unclear, I tested your MWE and I got the expected/correct output.)
    – moewe
    Commented Aug 9, 2020 at 4:53
1

This is not a case biblatex-publist is currently prepared for. However, it strikes me you could (mis-)use the @review type for this type of task, which does not consider plauthor. Or you define a new driver @course on the base of @review.

For the usage of @review, please refer to the manual.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .