参考书目中的引用页码

参考书目中的引用页码

我正在撰写的期刊不允许在文本中引用页码。

我想输入 \cite[p. 123]{abc2001}

现在它显示的内容类似于

[第 123 页,第 1 页]

我希望它显示为数字方括号引用,例如,

[1]

但参考书目中包含页码,例如

Doe, J. The Journal of Examples,《关于 abc 123 的研究》,2001 年,第 123 页

可以用 natbib 或其他包来完成这个吗?

答案1

像这样的风格存在一些概念问题。

如果您使用多个不同的后记多次引用同一来源,该怎么办?这将如何在参考书目中显示?读者如何知道哪个后记属于哪个引用?

如果多次引用同一来源,读者可以直接在引用中引用页码,这样会方便很多。我只需要查找一次“[1]”是哪部作品,然后就可以轻松理解“[1, p. 234]”和“[1, p. 235]”。但如果所有引用都是“[1]”,每次都需要查看参考书目以找到更具体的位置,那我就是在浪费时间。

biblatex以下是基于以下想法的概念证明:自定义类似 Wikipedia 的 backref来表明这是可行的。我使用指向特定事件的链接“解决”了上述问题。这种方法在屏幕上适用于 PDF,但在打印时当然会严重失效。

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

\usepackage[style=numeric, backend=biber]{biblatex}

\renewbibmacro{postnote}{}

\makeatletter
\DeclareFieldFormat{bibhypertarget}{%
  \bibhypertarget{cbx:instcount:\the\value{instcount}}{#1}}

\def\abx@aux@pnbackref#1#2#3#4{%
  \listcsgadd{cbx@pnbackref@#1@#2}{#3}%
  \csgdef{cbx@pnbackref@postnote@#1@#2@#3}{#4}}

\def\blx@addpnbackref#1#2{%
  \if@filesw
    \protected@write\@mainaux{}{%
      \string\abx@aux@pnbackref
        {\the\c@refsection}{#1}{\the\value{instcount}}
        {\detokenize{#2}}}%
    \fi}

\def\blx@addpnbackref@helper#1{\blx@addpnbackref{\thefield{entrykey}}{#1}}

\def\blx@instcount@label{%
  \label{cbx@instcount@\the\value{instcount}}}

\AtEveryCitekey{%
  \iffieldundef{postnote}
    {}
    {\expandafter\blx@addpnbackref@helper\expandafter{\abx@field@postnote}}%
  \blx@instcount@label
}

\newcommand*{\pnbackref@prnt@pn}[2]{%
  \DeclareFieldFormat{bibhypertarget}{\bibhyperlink{cbx:instcount:#2}{##1}}%
  \printtext[bibhypertarget]{%
    $\uparrow$\printtext[postnote]{#1}}}

\newbibmacro*{pnbackref:item}[1]{%
  \ifcsvoid{cbx@pnbackref@postnote@\the\c@refsection @\thefield{entrykey}@#1}
    {}
    {\letcs\cbx@tempa{cbx@pnbackref@postnote@\the\c@refsection @\thefield{entrykey}@#1}%
     \expandafter\pnbackref@prnt@pn\expandafter{\cbx@tempa}{#1}%
     \setunit{\addcomma\space}}}

\newbibmacro*{pnbackref}{%
  \ifcsundef{cbx@pnbackref@\the\c@refsection @\thefield{entrykey}}
    {}
    {\forlistcsloop{\usebibmacro{pnbackref:item}}
       {cbx@pnbackref@\the\c@refsection @\thefield{entrykey}}}}

\renewbibmacro*{pageref}{\usebibmacro{pnbackref}}
\makeatother

\renewcommand*{\bibpagerefpunct}{\addperiod\space}

\renewbibmacro*{cite}{%
  \printtext[bibhypertarget]{%
    \printtext[bibhyperref]{%
      \printfield{labelprefix}%
      \printfield{labelnumber}%
      \ifbool{bbx:subentry}
        {\printfield{entrysetcount}}
        {}}}}

\addbibresource{biblatex-examples.bib}


\begin{document}
Lorem~\autocite[380]{sigfridsson}
ipsum~\autocite[12-14]{worman}
dolor~\autocite{nussbaum}
sit~\autocite[381]{sigfridsson}
amet~\autocite[382]{sigfridsson}.

\clearpage

Lorem~\autocite[27-30]{geer}
ipsum~\autocite[\textbf{ä}]{worman}
dolor~\autocite[34]{pines}
sit~\autocite[382]{sigfridsson}
amet~\autocite[383]{sigfridsson}.

Dolor~\autocite[380-381]{worman}

\printbibliography
\end{document}

没有后注的引用,页码引用仅出现在参考书目中。

相关内容