反向引用交叉引用的书目项目

反向引用交叉引用的书目项目

我正在尝试模仿我的朋友在他的博士论文中使用的“手工完成”的参考风格,并且我认为反向引用可能是一个很好的点睛之笔。

不幸的是,由于这是语言学,有些作者有一些多卷文集,按卷引用,但参考书目只有整个文集。

说到点子上了。编译后,文件:

\documentclass{article}

\usepackage[backend=biber,style=verbose-trad2,backref]{biblatex}
\usepackage{filecontents}

\begin{filecontents}{test.bib}

@mvbook{AuthorAll,
    author = {Prolific Author},
    volumes = {1--1000},
    title = {Collected Works},
    editor = {Tireless Editor}
}

@book{Author1,
    crossref = {AuthorAll},
    title = {Collected Works. Vol.~1. Poems part 1},
    options = {skipbib=true}
}

@book{Author2,
    crossref = {AuthorAll},
    title = {Collected Works. Vol.~2. Poems part 2},
    options = {skipbib=true}
}

@book{Author3,
    crossref = {AuthorAll},
    title = {Collected Works. Vol.~3. Poems part 3},
    options = {skipbib=true}
}
and so on...
\end{filecontents}

\addbibresource{test.bib}

\begin{document}

\cite[11]{Author1}\clearpage

\cite[22]{Author2}\clearpage

\cite[33]{Author3}\clearpage

\printbibliography
\end{document}

将为您提供一个仅包含一项的参考列表,即与 AuthorAll 对应的项。此项是否可以引用对 Author1、Author2、Author3 项的所有引用(在本例中为第 1-3 页)?

答案1

AuthorAll一个简单的解决方案是仅使用和朋友进行引用\volcite。这些引用命令对卷号有一个强制参数:

\volcite[<prenote>]{<volume number>}[<pages>]{<key>}

这会生成与 相同的输出\cite,但后记<pages>前面有文本。和、和等也<volume string> <volume number>存在类似的结果。\pvolcite\parencite\tvolcite\textcite

或者,您可以使用\AtEveryCitekey钩子和一些内部构件来为交叉引用条目生成反向引用。

\documentclass{article}
\usepackage[backend=biber,style=verbose-trad2,backref]{biblatex}
\usepackage[colorlinks]{hyperref}

\makeatletter
\AtEveryCitekey{%
  \ifboolexpr{
    test {\iftoggle{blx@skipbib}}
    and
    not test {\iffieldundef{crossref}}
  }
    {\blx@backref{\thefield{crossref}}}
    {}}
\makeatother

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@mvbook{AuthorAll,
    author = {Prolific Author},
    volumes = {1--1000},
    title = {Collected Works},
    editor = {Tireless Editor}}
@book{Author1,
    crossref = {AuthorAll},
    title = {Collected Works. Vol.~1. Poems part 1},
    options = {skipbib=true}}
@book{Author2,
    crossref = {AuthorAll},
    title = {Collected Works. Vol.~2. Poems part 2},
    options = {skipbib=true}}
@book{Author3,
    crossref = {AuthorAll},
    title = {Collected Works. Vol.~3. Poems part 3},
    options = {skipbib=true}}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\volcite{1}[11]{AuthorAll}\clearpage
\cite[11]{Author1}\clearpage
\cite[22]{Author2}\clearpage
\cite[33]{Author3}\clearpage
\printbibliography
\end{document}

在此处输入图片描述

相关内容