如何交叉引用(整个)参考书目?

如何交叉引用(整个)参考书目?

一个简单的问题,但我无法在 Stackexchange 或其他地方找到它。

我想交叉引用生成的标题\printbibliography,即不是特定条目而只是标题/起始页。

我怎样才能做到这一点?

我是这样使用它的:

\printbibliography[title={Quellenverzeichnis}, heading=subbibnumbered]

问题是包会自动生成其标题,所以我不能只将其放在\label那里并引用它。

基本上,我只想做需要做的事情,这样我就可以使用通常的\ref,,,\hyperref\autoref\fullrefETC。

我也没有发现任何东西biblatex 文档(第 88 页及后续页面,即第 3.7.2 节开始讨论该\printbibliography命令。)

答案1

自 biblatex v3.16 版本起您现在就可以使用label

示例等复制自问题/功能请求,所以所有功劳都归于@moewew,他也实现了这一点。

下面是一个例子:

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

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

\addbibresource{biblatex-examples.bib}


\begin{document}
\autocite{sigfridsson}

\Cref{biblabel}

\printbibliography[heading=bibnumbered, label=biblabel]
\end{document}

答案2

奇怪的是,我找不到明显的方法来做到这一点。

这是一个选项,先打印标题,然后插入标签,然后打印参考书目其余部分。由于某些我不知道的原因,没有\@currentlabel通过 更新\printbibheading,所以我需要使用 hack 来减少子部分计数器,然后使用 增加它\refstepcounter

我认为一定还有更好的选择。

\documentclass{article}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\usepackage[colorlinks]{hyperref}
\begin{document}
\section{Here}
\subsection{There}
Page \pageref{bib}. Section \ref{bib}.
\nocite{westfahl:space,aksin}
\printbibheading[title=Quellenverzeichnis, heading=subbibnumbered]
\addtocounter{subsection}{-1}
\refstepcounter{subsection}
\label{bib}
\printbibliography[heading=none]
\end{document}

输出

答案3

由于您已经明确给出了参考书目的标题,因此您可以直接将其偷偷放在那里\label

David Purton 的 MWE 和明显的变化

\documentclass{article}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\usepackage[colorlinks]{hyperref}
\begin{document}
\section{Here}
\subsection{There}
Page \pageref{bib}. Section \ref{bib}.
\nocite{sigfridsson,worman}

\printbibliography[title={Quellenverzeichnis\label{bib}}, heading=subbibnumbered]
\end{document}

第 1 页。第 1.2 节。

如果你想要一个根据类别自动选择“参考文献”或“参考书目”的解决方案,你可以尝试

\documentclass{article}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\usepackage[colorlinks]{hyperref}

\makeatletter
\newcommand*{\reforbibname}{%
  \ifodd\abx@classtype\relax
    \bibname
  \else
    \refname
  \fi
}
\makeatother

\begin{document}
\section{Here}
\subsection{There}
Page \pageref{bib}. Section \ref{bib}.
\nocite{sigfridsson,worman}

\printbibliography[title={\reforbibname\label{bib}}, heading=subbibnumbered]
\end{document}

内部命令\abx@classtype用于biblatex检测某些类别。方便的是,“偶数类别”是article-like 并使用\refname,“奇数类别”是report/ book-like 并使用\bibname

请注意,这没有考虑到书目标题定义中默认标题的可能变化。


另一种方法是\label直接在参考书目标题定义中包含。在这种情况下,

\documentclass{article}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\usepackage[colorlinks]{hyperref}

\defbibheading{subbibnumbered:link}[\refname]{%
  \subsection{#1}%
  \label{bib}}

\begin{document}
\section{Here}
\subsection{There}
Page \pageref{bib}. Section \ref{bib}.
\nocite{sigfridsson,worman}

\printbibliography[heading=subbibnumbered:link]
\end{document}

(当然,subbibnumbered如果您愿意,您可以覆盖书目标题,但由于标签在标题中是硬编码的,因此最好选择一个唯一的名称以避免重复使用。)无论如何,这要求您知道/复制文档中使用的参考书目标题的原始定义。

相关内容