
Рассмотрим следующий 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
не используется в \fullcite
s, так что здесь все в порядке.
МВЭ
\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}