Bagaimana cara mereferensikan (seluruh) bibliografi?
Pertanyaan sederhana, tetapi saya tidak dapat menemukannya di Stackexchange di sini atau di tempat lain.
Saya ingin mereferensikan header yang dihasilkan \printbibliography
, yaitu bukan entri spesifik tetapi hanya judul / halaman awal.
Bagaimana saya bisa melakukan itu?
Saya menggunakannya seperti ini:
\printbibliography[title={Quellenverzeichnis}, heading=subbibnumbered]
Masalahnya adalah paket menghasilkan headingnya secara otomatis, jadi saya tidak bisa hanya menempatkan di \label
sana dan merujuknya.
Pada dasarnya, saya hanya ingin melakukan apa yang dibutuhkan sehingga saya dapat menggunakan biasa \ref
, \hyperref
, \autoref
, \fullrefdll
Dan saya juga belum menemukan apapun di dokumen biblatex (halaman 88 ff alias sec. 3.7.2 itu mulai berbicara tentang \printbibliography
perintah.).
Jawaban
Anehnya, saya tidak dapat menemukan cara yang jelas untuk melakukan ini.
Berikut adalah opsi yang mencetak tajuk, lalu menyisipkan label, lalu mencetak sisa bibliografi. Untuk beberapa alasan yang tidak saya ketahui, \@currentlabel
itu tidak diperbarui oleh \printbibheading
, jadi saya memerlukan peretasan untuk mengurangi penghitung subbagian, lalu menaikkannya menggunakan \refstepcounter
.
Saya berpikir pasti ada pilihan yang lebih baik.
\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}

Karena Anda sudah secara eksplisit memberikan judul bibliografi Anda, Anda bisa menyelinap ke \label
sana.
Dengan MWE David Purton dan perubahan yang jelas
\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}

Jika Anda menginginkan solusi yang secara otomatis memilih 'Referensi' atau 'Bibliografi' bergantung pada kelasnya, Anda dapat mencobanya
\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}
Perintah internal \abx@classtype
digunakan oleh biblatex
untuk mendeteksi kelas tertentu. Mudahnya, 'kelas genap' adalah article
-seperti dan digunakan \refname
, 'kelas ganjil' adalah report
/ book
-seperti dan digunakan \bibname
.
Perhatikan bahwa ini tidak memperhitungkan kemungkinan perubahan judul default dalam definisi tajuk bibliografi.
Alternatifnya adalah memasukkan \label
langsung ke dalam definisi tajuk bibliografi. Dalam hal ini itu akan terjadi
\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}
(tentu saja Anda dapat menimpa bibheading subbibnumbered
jika Anda mau, tetapi karena labelnya memiliki hardcode di heading, mungkin lebih baik memilih nama yang unik untuk menghindari penggunaan dua kali.) Bagaimanapun, ini mengharuskan Anda untuk mengetahui / salin definisi asli dari judul bibliografi yang digunakan dalam dokumen Anda.
Sejak biblatex v3.16 sekarang Anda dapat menggunakan label
.
Contoh dan seterusnya disalin dari permintaan masalah / fitur , jadi semua kredit diberikan ke @moewew , yang juga menerapkan ini.
Berikut contohnya:
\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}