2

Try the following MWE:

%!TEX TS-program = lualatexmk
\documentclass{scrartcl}
\usepackage{fontspec}
\usepackage[backend=biber,style=authortitle-comp,abbreviate=false]{biblatex}
\usepackage{biblatex-bookinarticle}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{plato:complete,
    Author = {Plato},
    Editor = {John M. Cooper},
    Keywords = {Primary Source},
    Location = {Indianapolis},
    Publisher = {Hacket Publishing Company},
    Title = {Complete Works},
    Year = {1997}}
@bookinbook{plato:dialogue,
    Author = {Plato},
    Crossref = {plato:complete},
    Pages = {156--191},
    Title = {Dialogue},
    Titleaddon = {\bibstring{bytranslator} Donald J. Zeyl}}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
These are the complete works: \cite{plato:complete}. They contain the following text: \cite{plato:dialogue}.
\printbibliography
\end{document}

It gives this result:

missing authorname

Is this result really intentional? I.e. do we really want the name "Plato" not to be printed again before "Complete Works" in the bibliography entry of the dialogue? Should it not better be like this:

enter image description here

1 Answers1

4

The default is not to print the bookauthor if it coincides with the author (see biblatex.def)

\newbibmacro*{bybookauthor}{%
  \ifnamesequal{author}{bookauthor}
    {}
    {\printnames{bookauthor}}}

Just add

\renewbibmacro*{bybookauthor}{\printnames{bookauthor}}

to your preamble and the bookauthor will always be shown.

moewe
  • 175,683