Bagaimana cara mereferensikan (seluruh) bibliografi?

Aug 17 2020

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 \labelsana 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 \printbibliographyperintah.).

Jawaban

3 DavidPurton Aug 17 2020 at 13:28

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, \@currentlabelitu 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}

3 moewe Aug 17 2020 at 14:12

Karena Anda sudah secara eksplisit memberikan judul bibliografi Anda, Anda bisa menyelinap ke \labelsana.

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@classtypedigunakan oleh biblatexuntuk 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 \labellangsung 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 subbibnumberedjika 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.

3 rugk Jan 03 2021 at 16:33

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}