使用 biblatex 和 chem-rsc 风格进行一些定制

使用 biblatex 和 chem-rsc 风格进行一些定制

今天,我改用 biblatex 进行书目管理,而不是 rsc/natbib(为了某些布局)。现在有几个问题我想解决,但我不知道该怎么做。

  • 使用style=chem-rsc,我得到的是括号中的引用,而我想要的是方括号。设置citestyle=numeric-comp适用于文本,但不适用于出版物列表。
  • 一些用于 backref 的自定义字体,但使用时backrefpage = {\it\footnotesize Cited on page}不设置实际引用页码的字体(参见 MWE)。
  • 我想要带下划线的 doi,因此我使用了之前的一个问题中提出的解决方案(带下划线的 doi 和 rsc 软件包),但现在 doi 超出了框架的范围。
  • 我正在寻找一种方法来删除引用文章的最后一页,例如

“I. Hung 和 [...] 204, 256,DOI:...”

, 代替

“I. Hung 和 [...] 204, 256-265,DOI:...”

以下是 MWE:

\documentclass[twoside,10pt,a4paper]{report}
\usepackage{fontspec} 
\usepackage{soul}
\usepackage{filecontents}
\usepackage[top=3cm,bottom=3cm,left=4cm,right=4cm,showframe]{geometry}

\usepackage[linktoc=all,
            hidelinks,
            bookmarksnumbered,
            xetex]{hyperref}

\usepackage[hyperref=true,
            url=true,
            doi=true,
            natbib=true,
            backref=true,
            backrefstyle=three,
            backend=biber,
            refsegment=chapter,
            citestyle=numeric-comp,
            style=chem-rsc,
            maxcitenames=5,
            date=year,
            block=none,
            maxbibnames=100]{biblatex}

%%%%%%

\DefineBibliographyStrings{english}{%
    backrefpage  = {\it\footnotesize Cited on page}, % for single page number
    backrefpages = {\it\footnotesize Cited on pages} % for multiple page numbers
}

%%%%%% doi souligné

\newcommand*\doiformat[1]{\ul{#1}}
\DeclareFieldFormat{doi}{%
  \mkbibacro{DOI}\addcolon\space
  \ifhyperref
    {\href{http://dx.doi.org/#1}{\doiformat{#1}}}
    {\doiformat{#1}}}



\begin{filecontents}{\jobname.bib}
@Article{hung2010practical,
  Title                    = {On the practical aspects of recording wideline QCPMG NMR spectra},
  Author                   = {Hung, Ivan and Gan, Zhehong},
  Journal                  = {J. Magn. Reson.},
  Year                     = {2010},
  Number                   = {2},
  Pages                    = {256--265},
  Volume                   = {204},
  Doi                      = {10.1016/j.jmr.2010.03.001},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
Some text.\cite{hung2010practical}

\printbibliography
\end{document}

答案1

对于您的第一个请求chem-rsc甚至定义了一个名为的选项biblabel,我们可以将其设置brackets为获取方括号。

处理 pageref 问题的最佳方式可能是

\DeclareFieldFormat{pagerefformat}{\mkbibparens{\footnotesize\mkbibemph{#1}}}
\renewbibmacro*{pageref}{%
  \iflistundef{pageref}
    {}
    {\printtext[pagerefformat]{%
       \ifnumgreater{\value{pageref}}{1}
         {\bibstring{backrefpages}\ppspace}
         {\bibstring{backrefpage}\ppspace}%
       \printlist[pageref][-\value{listtotal}]{pageref}}}}

值得庆幸的是,chem-rsc还有一个选项可以仅显示第一页,它可以通过选项激活pageranges=false

所以我们可以加载

\usepackage[style=chem-rsc,
            biblabel=brackets,
            pageranges=false,
            ]{biblatex}

相关内容