3

I've been happily using the solution found by Paul Stanley to the question I asked last year : https://tex.stackexchange.com/a/172777/50288

However, there's one detail that bothers me, and I can't figure out how to fix it. The citepages option from verbose-trad2 doesn't seem to have any effet when this case applies. I get :
"in: Holzwege. Op. cit., pp. 75–113, p. 90."
whatever option of citepages I choose. The ideal solution would suppress the "pp. 75–113".

Working example (sorry, quite long) :

\documentclass{memoir}
\usepackage[T1]{fontenc}

\makeatletter
%% Biblatex %%
\usepackage[style=verbose-trad2,%
strict,%
citepages=suppress,%
related=true,%
backend=biber]%
{biblatex}% 

\newbibmacro*{cite:seen:related}{%
 {\xifinlistcs{\thefield{crossref}}{blx@bsee@\the\c@refsection}
   {}
   {\listcsxadd{blx@bsee@\the\c@refsection}{\thefield{crossref}}}}}

\newcommand{\ifrelatedunseen}[2]{%
  \xifinlistcs{\thefield{crossref}}{blx@bsee@\the\c@refsection}
   {#2}
   {#1}}

\renewbibmacro*{cite}{%
  \usebibmacro{cite:citepages}%
  \global\togglefalse{cbx:fullcite}%
  \global\togglefalse{cbx:loccit}%
  \bibhypertarget{cite\the\value{instcount}}{%
    \ifciteseen
      {\iffieldundef{shorthand}
         {\ifciteibid
            {\usebibmacro{cite:ibid}}
            {\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
         {\usebibmacro{cite:idem}}
               {\usebibmacro{cite:name}}%
                 \usebibmacro{cite:title}}%
          \usebibmacro{cite:save}}
         {\usebibmacro{cite:shorthand}}}
      {\ifboolexpr {
         test {\iffieldundef{crossref}}
         or not ( test {\ifentrytype{inbook}}
               or test {\ifentrytype{incollection}} ) }
       {\usebibmacro{cite:full}%
        \usebibmacro{cite:save}}
       {\ifrelatedunseen
        {\usebibmacro{cite:seen:related}%
         \usebibmacro{cite:full}%
         \usebibmacro{cite:save}}
        {\usebibmacro{related:info}}}}}}

\newbibmacro*{related:info}{%
  \usedriver{}{inbook:rel}}

\DeclareBibliographyDriver{inbook:rel}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{maintitle+booktitle}%
  \newunit%
  \bibstring{opcit}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit\newblock
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

\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 =   {Gesamtausgabe},
  number =       5,
  edition =      {8},
  addendum =     {\autocap{p}remi\`{e}re publication: 1950}, 
  related = {MH_Kunstwerk,MH_Weltbild},
  relatedtype = {bookchapters},
  relatedstring = {textes :}}

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

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


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

\makeatother


\begin{document}

\title{Titre}


\author{A. Teur}

\maketitle

Texte\footcite{MH_Kunstwerk}

Plus\footcite[90]{MH_Weltbild}


\end{document}

In the case of the first citation, the "pp. 1-74" is indeed suppressed. How to get the citepages influence back in the second case ?

1
  • An acceptable solution is to put the page numbers for the chapter in parentheses : \renewbibmacro*{chapter+pages}{% \printfield{chapter}% \iffieldundef{pages} {} {\nopunct \printtext[parens]{% \printfield{pages}% }}} But the ideal would be to have verbose-trad2's citepages functionality here. – Jos May 15 '15 at 9:50
2

Fortunately, the answer here requires only one line. Since the related:info macro is at its heart a "fullcite", it also needs the "fullcite" treatment when it comes to the citepages option

\newbibmacro*{related:info}{%
  \usebibmacro{cite:full:citepages}%
  \usedriver{}{inbook:rel}}

This takes care of the pages field depending on the citepages option.

MWE

\documentclass{memoir}
\usepackage[T1]{fontenc}

\makeatletter
%% Biblatex %%
\usepackage[style=verbose-trad2,%
strict,%
citepages=omit,%
related=true,%
backend=biber]%
{biblatex}% 

\newbibmacro*{cite:seen:related}{%
 {\xifinlistcs{\thefield{crossref}}{blx@bsee@\the\c@refsection}
   {}
   {\listcsxadd{blx@bsee@\the\c@refsection}{\thefield{crossref}}}}}

\newcommand{\ifrelatedunseen}[2]{%
  \xifinlistcs{\thefield{crossref}}{blx@bsee@\the\c@refsection}
   {#2}
   {#1}}

\renewbibmacro*{cite}{%
  \usebibmacro{cite:citepages}%
  \global\togglefalse{cbx:fullcite}%
  \global\togglefalse{cbx:loccit}%
  \bibhypertarget{cite\the\value{instcount}}{%
    \ifciteseen
      {\iffieldundef{shorthand}
         {\ifciteibid
            {\usebibmacro{cite:ibid}}
            {\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
         {\usebibmacro{cite:idem}}
               {\usebibmacro{cite:name}}%
                 \usebibmacro{cite:title}}%
          \usebibmacro{cite:save}}
         {\usebibmacro{cite:shorthand}}}
      {\ifboolexpr {
         test {\iffieldundef{crossref}}
         or not ( test {\ifentrytype{inbook}}
               or test {\ifentrytype{incollection}} ) }
       {\usebibmacro{cite:full}%
        \usebibmacro{cite:save}}
       {\ifrelatedunseen
        {\usebibmacro{cite:seen:related}%
         \usebibmacro{cite:full}%
         \usebibmacro{cite:save}}
        {\usebibmacro{related:info}}}}}}

\newbibmacro*{related:info}{%
  \usebibmacro{cite:full:citepages}\usedriver{}{inbook:rel}}

\DeclareBibliographyDriver{inbook:rel}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{maintitle+booktitle}%
  \newunit%
  \bibstring{opcit}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit\newblock
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

\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 =   {Gesamtausgabe},
  number =       5,
  edition =      {8},
  addendum =     {\autocap{p}remi\`{e}re publication: 1950}, 
  related = {MH_Kunstwerk,MH_Weltbild},
  relatedtype = {bookchapters},
  relatedstring = {textes :}}

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

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


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

\makeatother


\begin{document}

\title{Titre}


\author{A. Teur}

\maketitle

Texte\footcite{MH_Kunstwerk}

Plus\footcite[90]{MH_Weltbild}.


\end{document}

enter image description here

1
  • Note that I chose the slightly more liberal citepages=omit in the example above instead of citepages=suppress which always suppresses the pages field regardless of the postnote. – moewe Aug 4 '15 at 17:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.