The solution depends on the bibliography style you're using. If it is based on the standard style standard.bbx
, the relevant part of the @inbook
driver is:
\usebibmacro{in:}%
\usebibmacro{bybookauthor}%
\newunit\newblock
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{byeditor+others}%
For @incollection
and @inproceedings
:
\usebibmacro{in:}%
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{byeditor+others}%
and
\usebibmacro{in:}%
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{event+venue+date}%
\newunit\newblock
\usebibmacro{byeditor+others}%
The bibliography macros bybookauthor
and byeditor+others
are defined in biblatex.def
.
To change the order of the title and name list after in:
, you could redefine each of these drivers and use variants of bybookauthor
and byeditor+others
to suppress the "by" strings.
Alternatively you can redefine the in:
macro to print and clear the name list. This approach has been previously applied for the byeditor
case. Here's an example addressing the name list printed by either byeditor+others
or bybookauthor
.
\documentclass{article}
\usepackage{biblatex}
\renewbibmacro*{in:}{%
\printtext{\bibstring{in}\intitlepunct}%
\ifnameundef{bookauthor}
{\ifnameundef{editor}
{\printnames{translator}%
\setunit{\addcomma\space}%
\usebibmacro{translator+othersstrg}%
\clearname{translator}}
{\printnames{editor}%
\setunit{\addcomma\space}%
\usebibmacro{editor+othersstrg}%
\clearname{editor}}}
{\ifnamesequal{author}{bookauthor}
{}
{\printnames{bookauthor}%
\clearname{bookauthor}}}%
\newunit\newblock}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@inbook{inbook,
crossref = {book},
author = {Smith, John},
title = {Inbook Title}}
@book{book,
author = {Doe, John and Brown, Bob},
title = {Book Title}}
@incollection{incollection,
crossref = {collection},
author = {Smith, John},
title = {Incollection Title}}
@collection{collection,
editor = {Doe, John and Brown, Bob},
translator = {Smith, Jane},
title = {Collection Title}}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{inbook,incollection}
\printbibliography
\end{document}