backrefstyle=two 无法与 bibstyle=phys 和 biblatex 配合使用

backrefstyle=two 无法与 bibstyle=phys 和 biblatex 配合使用

我对反向引用有疑问,首先是我使用的一个简单的例子:

\documentclass[headings=chapterprefix,12pt,twoside,openany]{scrbook}
\usepackage{lipsum}

\usepackage{iftex}
\ifPDFTeX
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage[ngerman]{babel}
\else
    \usepackage{fontspec}
    \usepackage{polyglossia}
    \setmainlanguage{german}
\fi
\usepackage{lmodern}
\usepackage{array}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amscd}
\usepackage{amssymb}
\usepackage{float}
\usepackage{fancyhdr}%für lustige Kopf- und Fußzeilen
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{lastpage}
\usepackage{longtable}
\usepackage{wrapfig}
\usepackage[singlelinecheck=false,labelformat=simple]{subcaption}
\renewcommand\thesubfigure{\,\alph{subfigure})}
\usepackage{enumitem}
\usepackage[section]{placeins}
\usepackage[version=4]{mhchem}
\usepackage{siunitx}
\usepackage{csquotes}
\usepackage{tikz}


\usepackage[total={16.5cm,23cm}, inner=2cm, outer=3cm, footskip=1cm, headsep=0.75cm, twoside, includefoot]{geometry}

\usepackage[colorlinks=true,
            linkcolor=black,
            urlcolor=black,
            citecolor=black
            ]{hyperref}
            \hypersetup{linktocpage}  

\usepackage[
    backend=biber, 
    natbib=true,
    style=phys,
    biblabel=brackets,
    giveninits=true,
    abbreviate=false,
    doi=false, url=false, isbn=false,
    block=space,
    backref=true,
    backrefstyle=two,
    sorting=none
]{biblatex}
        

\addbibresource{lit.bib}
\DeclareFieldFormat[article]{citetitle}{\mkbibemph{#1}}
\DeclareFieldFormat[article]{title}{\mkbibemph{#1}}

\DeclareFieldFormat[article]{journaltitle}{#1}%Journalname nicht kursiv
\DefineBibliographyStrings{ngerman}{%
backrefpage={zitiert auf S\adddot},
backrefpages={zitiert auf den S\adddot}
}

在我的文档中,我\cite{Purdie2018}在第 1、2 和 3 页使用它。

最后我使用:

\hypersetup{linkcolor=blue}
    \printbibliography[title=Literaturverzeichnis]

这在我的参考书目中给出了:

[1] DG Purdie、NM Pugno、T. Taniguchi、K. Watanabe、AC Ferrari 和 A. Lombardo,《层状材料异质结构中的清洁界面》,《自然通讯》9,5387 (2018)(发表于 S. 1-3)。

我希望使用“zitiert auf den S. 1,2 und 3”而不是这个版本。我以为backrefstyle=two应该可以使用这个,但实际上不行。

答案1

根据文档biblatex(第 53 页“ backrefstyle”)

[ backrefstyle=two,] 将任意两个或多个连续页面的序列压缩到某个范围,例如,[列表“1, 2, 11, 12, 13, 21, 22, 23, 24”] 被压缩为“1–2, 11–13, 21–24”。

假设该作品在第 1、2 和 3 页被引用,backrefstyle=two,因此将页数压缩为广告中所说的“1-3”。

还有 ,backrefstyle=three,它只能压缩 3 或更多的范围,但即使这样也帮不了你。在这种情况下,唯一接近你想要的选项是backrefstyle=none,

如果您唯一需要的是在最后一页之前添加一个“and”,您可能需要尝试将列表格式从pageref切换list:plainlist:delim

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber, backref=true, backrefstyle=none,]{biblatex}

\makeatletter
\DeclareListFormat{pageref}{%
  \ifnumless{\abx@pagerefstyle}{0}
    {\usebibmacro{list:delim}{#1}%
     \ifhyperref
       {\hyperlink{page.#1}{#1}}
       {#1}}
    {\ifnumequal{\value{listcount}}{1}
       {\usebibmacro{pageref:init}}
       {}%
     \usebibmacro{pageref:comp}{#1}%
     \ifnumequal{\value{listcount}}{\value{liststop}}
       {\usebibmacro{pageref:dump}}
       {}}}
\makeatother

\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite{sigfridsson}
\clearpage
Lorem \autocite{sigfridsson}
\clearpage
Lorem \autocite{sigfridsson}

\printbibliography
\end{document}

Emma Sigfridsson 和 Ulf Ryde。《从电势和电势矩推导原子电荷的方法比较》。刊于:《计算化学杂志》19.4(1998 年),第 377-395 页。doi:10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P(引自第 1、2 和 3 页)。

相关内容