Como cruzar a referência da bibliografia (completa)?
Uma pergunta simples, mas não consegui encontrar no Stackexchange aqui ou em outro lugar.
Quero fazer uma referência cruzada do cabeçalho gerado por \printbibliography
, ou seja, não uma entrada específica, mas apenas o título / página inicial.
Como eu posso fazer isso?
Eu uso assim:
\printbibliography[title={Quellenverzeichnis}, heading=subbibnumbered]
O problema é que o pacote gera seu cabeçalho automaticamente, então não posso simplesmente colocar um \label
lá e fazer referência a ele.
Basicamente, eu só quero fazer o que é necessário para que eu possa usar o habitual \ref
, \hyperref
, \autoref
, \fullrefetc.
E também não encontrei nada na documentação biblatex (página 88 ff. Aka sec. 3.7.2 começa a falar sobre o \printbibliography
comando.).
Respostas
Estranhamente, não consigo encontrar uma maneira óbvia de fazer isso.
Esta é uma opção que imprime o título, insere a etiqueta e imprime o restante da bibliografia. Por algum motivo desconhecido para mim, o \@currentlabel
não é atualizado pelo \printbibheading
, então preciso do hack para diminuir o contador da subseção e, em seguida, incrementá-lo usando \refstepcounter
.
Eu fico pensando que deve haver uma opção melhor.
\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}

Uma vez que você já forneceu explicitamente o título de sua bibliografia, pode simplesmente inserir um \label
lá.
Com o MWE de David Purton e as mudanças óbvias
\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}

Se desejar uma solução que selecione automaticamente 'Referências' ou 'Bibliografia' dependendo da classe, você pode tentar
\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}
O comando interno \abx@classtype
é usado pelo biblatex
para detectar certas classes. Convenientemente, as 'classes pares' são article
semelhantes a e usam \refname
, as 'classes ímpares' são semelhantes a report
/ book
e usam \bibname
.
Observe que isso não leva em consideração possíveis alterações do título padrão nas definições dos cabeçalhos da bibliografia.
Uma alternativa seria incluir o \label
diretamente na definição do cabeçalho da bibliografia. Neste caso, seria
\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}
(claro que você pode sobrescrever o bibheading subbibnumbered
se quiser, mas como o rótulo está codificado no cabeçalho, pode ser melhor escolher um nome exclusivo para evitar usá-lo duas vezes.) Em qualquer caso, isso requer que você saiba / copie a definição original do cabeçalho da bibliografia usada em seu documento.
Desde a v3.16 do biblatex agora você pode usar label
.
Exemplo e assim por diante copiados da edição / solicitação de recurso , então todos os créditos vão para @moewew , que também implementou isso.
Aqui está um exemplo:
\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}