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
    Commented May 15, 2015 at 9:50

1 Answer 1

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
    Commented Aug 4, 2015 at 17:03

You must log in to answer this question.

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