3

The way biblatex handles crossref is great ... but there are always new wishes/questions. I find it kind of awkward that the bibliography mixes the books and their chapters (@inbook entries). Would there be a way to organise them ?

Like

  • Author, book
  • Author, another book, contains :
    • chapter 1
    • chapter 5
  • Auther, article

Where "chapter 1" and "chapter 5" would be @inbook entries crossreferencing to "another book". I'm using either the philosophy-verbose or verbose-trad2 styles.

Thanks, Jos

Edit : I changed the (M)WE to use the related field as suggested by moewe : Thanks ! Works like a charm, but the syntax for formatting the fields that are printed in the bibliography is a bit hard. How to get it to print the pages instead of the year of publication of each chapter ?

\documentclass[ngerman,french]{article}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}

\makeatletter
\usepackage{lmodern}
\usepackage{perpage}
\MakePerPage{footnote}
%% Biblatex %%
\usepackage[language=french,%
autopunct=true,%
  style=verbose-trad2,%
   strict,% 
  related=true,
backend=biber]%
{biblatex}%

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Book{MH_Holzwege,
  keywords =     {MH,D},
  author =   {Martin Heidegger},
  title =    {Holzwege},
  publisher =    {Vittorio Klostermann},
  address =      {Frankfurt a. M.},
  year =     2003,
  series =   {Einzelausgabe des Bd. 5 der Gesamtausgabe},
  edition =      {8., unver\"{a}nderte Auflage},
  addendum =     {1. Publikation: 1950},
  related = {MH_Kunstwerk,MH_NietzscheGott,MH_Weltbild},
  relatedtype = {multivolume}
 }

@InBook{MH_Kunstwerk,
  keywords =     {MH,D},
  author =   {Martin Heidegger},
  title =    {Der Ursprung des Kunstwerkes},
  pages =    {1--74},
  crossref = {MH_Holzwege}
}

@InBook{MH_NietzscheGott,
  keywords =     {MH,D},
  author =   {Martin Heidegger},
  title =    {Nietzsches Wort `{Gott} ist tot'\,},
  pages =    {193--247},
  crossref = {MH_Holzwege}
}

@InBook{MH_Weltbild,
  keywords =     {MH,D},
  author =   {Martin Heidegger},
  title =    {Die Zeit des Weltbildes},
  pages =    {69--104},
  crossref = {MH_Holzwege}
 }

@Book{MH_SZ,
  keywords =     {MH,D},
  author =   {Martin Heidegger},
  title =    {{Sein und Zeit}},
  address =      {T\"{u}bingen},
  publisher =    {Max Niemeyer},
  year =     2001,
  edition =      {18. Auflage},
  addendum =     {1. Publikation: 1927}}

\end{filecontents}
\addbibresource{\jobname.bib}

\makeatother

\usepackage{babel}
\addto\extrasfrench{\providecommand{\og}{\leavevmode\flqq~}\providecommand{\fg}{\ifdim\lastskip>\z@\unskip\fi~\frqq}}

\begin{document}

\title{Titre}


\author{A. Teur}

\maketitle

Texte\footcite[20]{MH_Kunstwerk}.

%    Plus de texte \footcite{MH_Weltbild}.

Et hop \footcite{MH_SZ}

Une derni\`ere\footcite{MH_NietzscheGott}

\printbibliography[title={Oeuvres de Martin Heidegger},keyword=MH,keyword=D,nottype=inbook] 

\end{document}
8
  • Though it might not be that essential to understanding your question, a MWE is nevertheless of great help to us. Would you be able to provide one (using either of the styles mentioned above)?
    – moewe
    Commented Apr 27, 2014 at 14:30
  • A manual solution is obviously the sorttitle field (if you sort nty: name-title-year) or sortyear (if you sort nyt: name-year-title).
    – moewe
    Commented Apr 27, 2014 at 14:47
  • MWE added ... adapted from another example I posted. Preambles get quite long, so it's difficult to term it a minimal working example. The sorttitle field doesn't seem very appropriate. Citing the biblatex manual : "The biblatex package is quite capable of working out the desired sorting order by using the data found in the regular fields of an entry. You will only need them if you want to manually modify the sorting order of the bibliography or if any data required for sorting is missing." I'd say that all the information is there, so biblatex should be able to figure it out.
    – Jos
    Commented Apr 27, 2014 at 14:58
  • You could kick out some of that stuff in the preamble. If you insist on biblatex doing the sorting manually, I will have to dig deeper. (Using sorttitle = {Holzwege-###} in this example where ### is the page number padded with zeroes seems fine to me though and works very well.)
    – moewe
    Commented Apr 27, 2014 at 15:00
  • Yes, the sorttitle field would be an option, indeed, if no other solution exists. But it wouldn't indent the chapters contained in a book, would it ? It would be nice to have some visual aspect reflecting the inclusion structure ... but I am aware of the fact that this might be far easier to ask than to resolve, if this kind of feature doesn't exist yet.
    – Jos
    Commented Apr 27, 2014 at 15:22

1 Answer 1

1

Thanks to moewe's suggestion to use the related field, and some strolling on this website, I figured out I could define a new relatedtype, based on the multivolume type (copied from biblatex.def), just by adding \usebibmacro{chapter+pages} at the end:

\newbibmacro*{related:bookchapters}[1]{%
  \entrydata*{#1}{%
    \usebibmacro{title}%
    \ifboolexpr{
      test {\ifnamesequal{author}{savedauthor}}
      or
      test {\ifnameundef{author}}
    } 
      {}
      {\usebibmacro{bytypestrg}{author}{author}%
       \setunit{\addspace}%
       \printnames[byauthor]{author}
       \newunit\newblock}%
    \ifboolexpr{    
      test {\ifnamesequal{editor}{savededitor}}
      or
      test {\ifnameundef{editor}}
    } 
      {}
      {\usebibmacro{byeditor+others}%
       \newunit\newblock}%
  \printdate
\usebibmacro{chapter+pages}
}}

In my working example, this yields :

\documentclass[ngerman,french]{article}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}

\makeatletter
\usepackage{lmodern}
\usepackage{perpage}
\MakePerPage{footnote}
%% Biblatex %%
\usepackage[language=french,%
autopunct=true,%
  style=verbose-trad2,%
   strict,% 
  related=true,
backend=biber]%
{biblatex}%

\newbibmacro*{related:bookchapters}[1]{%
  \entrydata*{#1}{%
    \usebibmacro{title}%
    \ifboolexpr{
      test {\ifnamesequal{author}{savedauthor}}
      or
      test {\ifnameundef{author}}
    } 
      {}
      {\usebibmacro{bytypestrg}{author}{author}%
       \setunit{\addspace}%
       \printnames[byauthor]{author}
       \newunit\newblock}%
    \ifboolexpr{    
      test {\ifnamesequal{editor}{savededitor}}
      or
      test {\ifnameundef{editor}}
    } 
      {}
      {\usebibmacro{byeditor+others}%
       \newunit\newblock}%
  \printdate
\usebibmacro{chapter+pages}
}}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Book{MH_Holzwege,
  keywords =     {MH,D},
  author =   {Martin Heidegger},
  title =    {Holzwege},
  publisher =    {Vittorio Klostermann},
  address =      {Frankfurt a. M.},
  year =     2003,
  edition =      {8},
  related = {MH_Kunstwerk,MH_NietzscheGott,MH_Weltbild},
  relatedtype = {bookchapters},
  relatedstring = {chapitres :}
}

@InBook{MH_Kunstwerk,
  keywords =     {MH,D},
  author =   {Martin Heidegger},
  title =    {Der Ursprung des Kunstwerkes},
  pages =    {1--74},
  crossref = {MH_Holzwege}
}

@InBook{MH_NietzscheGott,
  keywords =     {MH,D},
  author =   {Martin Heidegger},
  title =    {Nietzsches Wort `{Gott} ist tot'\,},
  pages =    {193--247},
  crossref = {MH_Holzwege}
}

@InBook{MH_Weltbild,
  keywords =     {MH,D},
  author =   {Martin Heidegger},
  title =    {Die Zeit des Weltbildes},
  pages =    {69--104},
  crossref = {MH_Holzwege}
 }

@Book{MH_SZ,
  keywords =     {MH,D},
  author =   {Martin Heidegger},
  title =    {{Sein und Zeit}},
  address =      {T\"{u}bingen},
  publisher =    {Max Niemeyer},
  year =     2001,
  edition =      {18},
}

\end{filecontents}
\addbibresource{\jobname.bib}

\makeatother

\usepackage{babel}
\addto\extrasfrench{\providecommand{\og}{\leavevmode\flqq~}\providecommand{\fg}{\ifdim\lastskip>\z@\unskip\fi~\frqq}}

\begin{document}

\title{Titre}


\author{A. Teur}

\maketitle

Texte\footcite[20]{MH_Kunstwerk}.

%    Plus de texte \footcite{MH_Weltbild}.

Et hop \footcite{MH_SZ}

Une derni\`ere\footcite{MH_NietzscheGott}

\printbibliography[title={Oeuvres de Martin Heidegger},keyword=MH,keyword=D,nottype=inbook] 

\end{document}

I did not find a way yet to put the first included chapter on a new line as well ... what would be the command for this ?

1
  • You could just go with relatedstring = {chapitres :\newline}.
    – moewe
    Commented Apr 28, 2014 at 12:55

You must log in to answer this question.

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