Отключить печать обратных ссылок с помощью fullcite

Отключить печать обратных ссылок с помощью fullcite

Рассмотрим следующий MWE

\documentclass{article}
\usepackage[style=authoryear-comp,backend=biber,backref=true]{biblatex}
\addbibresource{biblatex-examples.bib}

\newbibmacro*{mypageref}{%
\addperiod
  \iflistundef{pageref}
    {}
    {\printtext[brackets]{%
      \ifnumgreater{\value{pageref}}{1}
        {\bibstring{backrefpages}\ppspace}
    {\bibstring{backrefpage}\ppspace}%
      \printlist[pageref][-\value{listtotal}]{pageref}}}}
\renewbibmacro{pageref}{}

\renewbibmacro{finentry}{%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{mypageref}%
  \finentry}

\begin{document}
\fullcite{knuth:ct:e}
\printbibliography
\end{document}

Это позволяет форматировать обратные ссылки так, как я хочу (в скобках и т. д.), но также выводит обратную ссылку с \fullciteкомандой. Как отключить обратную ссылку в теле документа при использовании \fullciteс сохранением обратной ссылки (и форматирования) в библиографии?

введите описание изображения здесь

решение1

Хотя теоретически можно было бы проверить, находимся ли мы в команде цитирования или в библиографии (с \ifcitationи \ifbibliography, стр. 185-186biblatexдокументация, в данном случае это не является необходимым, так как мы можем просто изменить макрос pagerefтак, чтобы он делал то, что вам нужно (нет необходимости в новом mypageref), и использовать точку для отделения ссылок на страницы от остальной части библиографической записи.

\renewcommand{\bibpagerefpunct}{\addperiod\space}
\renewbibmacro*{pageref}{%
  \iflistundef{pageref}
    {}
    {\printtext[brackets]{%<--- here we had parens before
       \ifnumgreater{\value{pageref}}{1}
         {\bibstring{backrefpages}\ppspace}
         {\bibstring{backrefpage}\ppspace}%
       \printlist[pageref][-\value{listtotal}]{pageref}}}}

Стандарт pagerefне используется в \fullcites, так что здесь все в порядке.

МВЭ

\documentclass{article}
\usepackage[style=authoryear-comp,backend=biber,backref=true]{biblatex}
\addbibresource{biblatex-examples.bib}

\renewcommand{\bibpagerefpunct}{\addperiod\space}
\renewbibmacro*{pageref}{%
  \iflistundef{pageref}
    {}
    {\printtext[brackets]{%
       \ifnumgreater{\value{pageref}}{1}
         {\bibstring{backrefpages}\ppspace}
         {\bibstring{backrefpage}\ppspace}%
       \printlist[pageref][-\value{listtotal}]{pageref}}}}

\begin{document}
\fullcite{knuth:ct:e}
\printbibliography
\end{document}

введите описание изображения здесь

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