考虑以下 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-186 页)biblatex
文档,这在这里实际上不是必需的,因为我们可以修改宏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}