(Biblatex) Как скрыть поле страницы в сноске, если присутствует постсноска?

(Biblatex) Как скрыть поле страницы в сноске, если присутствует постсноска?

Для своей диссертации я использую biblatexстиль oxnotes, который довольно похож на подробный и использует сноски.

Если я использую\footcite команду с указанием сноски для записи с номерами страниц (например, главы книги), сноска будет напечатанаобаномер страницы и постсноска. Я хотел бы указать, biblatexчтобы номер страницы в сноске не отображался, когда присутствует постсноска.

В настоящее время, \footciteнапример, так:

\footcite[1-5]{barkan2003}

...будет производить сноску

Баркан, «Название»,Название журнала(2003),1-20 в 1-5.

Я хотел бы отключить страницы (например, «1-20») в \footciteкомандах, где указывается постсноска, чтобы она выглядела так:

Баркан, «Название»,Название журнала(2003), 1-5.

Я попробовал следующую команду, но она подавляет поле страниц как в цитатах, так и в библиографии.

\DeclareFieldFormat{pages}{%
    \iffieldundef{pages}{}{\iffieldundef{postnote}{}{\clearfield{pages}}}}

Есть ли способ узнатьbiblatex что нужно подавить поле страниц?тольков \footciteкомандах, а не в библиографии?

Любая помощь в решении этой проблемы будет высоко оценена!

\documentclass{article}
\usepackage[style=oxnotes]{biblatex}
\RequireBibliographyStyle{oxref}

\begin{filecontents*}{document.bib}
@article{barkan2003,
  title = {Title},
  journaltitle = {Journal Title},
  date = {2003},
  pages = {1-20},
  author = {Barkan},
}
\end{filecontents*}
\addbibresource{document.bib}

\begin{document}
Text.\footcite[1-5]{barkan2003}
\end{document}

решение1

biblatex-oxrefСтиль oxnotesцитирования основан на verbose.cbxвсех его опциях и поддерживает их. В частности, вы можете использовать опцию citepages, которая задокументирована вverboseпример стиля. (В более ранних версиях biblatex-oxrefнекоторые аспектыcitepages были немного нелогичны, но это было улучшено в версии 1.1, см.https://github.com/alex-ball/biblatex-oxref/issues/8.)

  • Параметр oxnotes-default citepages=separateдает вам

    Вольфганг А. Херрманн и др., «Карбоциклический карбен как эффективный каталитический лиганд для реакций сочетания C–C»,Angew. Chem. Int. Ed.45/23 (2006), 3859–62 в 3860–1.

  • С citepages=omitполем pages, которое автоматически опускается, если примечание числовое

    Вольфганг А. Херрманн и др., «Карбоциклический карбен как эффективный каталитический лиганд для реакций сочетания C–C»,Angew. Chem. Int. Ed.45/23 (2006), 3860–1.

  • citepages=suppressпропускает pagesполе, даже если примечание не является числовым.

  • citepages=permit(значение по умолчанию стандартных verboseстилей) просто отображает оба поля

    Вольфганг А. Херрманн и др., «Карбоциклический карбен как эффективный каталитический лиганд для реакций сочетания C–C»,Angew. Chem. Int. Ed.45/23 (2006), 3859–62, 3860–1.

Так что вы можете попробовать

\documentclass{article}

\usepackage[style=oxnotes, citepages=omit]{biblatex}

\addbibresource{biblatex-examples.bib}

\begin{document}
Text.\footcite[3860-3861]{herrmann}

\printbibliography
\end{document}

Вольфганг А. Херрманн и др., «Карбоциклический карбен как эффективный каталитический лиганд для реакций сочетания C–C», *Angew. Chem. Int. Ed.* 45/23 (2006), 3860–1.


Идея \DeclareFieldFormatне сработала, потому что \iffieldundef{pages}{}{\iffieldundef{postnote}{}{\clearfield{pages}}}это не команда, которая что-либо печатает. Она только говорит, biblatexчто нужно удалить pagesв определенной ситуации. Но ее \DeclareFieldFormatследует использовать, чтобы сказать, biblatexкак печатать что-то, сравните со значением по умолчанию

\DeclareFieldFormat{pages}{\mkpageprefix[bookpagination]{#1}}

или проще

\DeclareFieldFormat{title}{\mkbibemph{#1}}

A \DeclareFieldFormatвсегда должно включать в себя a #1.

По сути, это определение удаляет поле в том случае, когда вам это нужно (и оно не удалит поле в библиографии, поскольку \iffieldundef{postnote}там будет true), но оно перезаписывает определение, которое изначально говорит biblatex, как печатать поле, а это значит, что оно всегда удаляется при выводе.pages

Удаление поля только в \DeclareFieldFormatможет привести к ложной пунктуации, поскольку biblatexсистема подумает, что что-то напечатано, хотя на самом деле это не так.

Поэтому я бы не стал здесь дальше пытаться придерживаться этого подхода.


Обратите внимание, что

\RequireBibliographyStyle{oxref}

не требовалось. В общем случае вам не следует использовать \RequireBibliographyStyleили \RequireCitationStyleв документе. Стиль загружается через biblatexопцию style(или отдельно через bibstyleи citestyle).

Связанный контент