จะอ้างอิงถึงบรรณานุกรม (ทั้งเล่ม) ได้อย่างไร?

Aug 17 2020

คำถามง่ายๆ แต่หาไม่เจอใน Stackexchange ที่นี่หรือที่อื่น

ฉันต้องการอ้างอิงข้ามส่วนหัวที่สร้างโดย\printbibliographyกล่าวคือไม่ใช่รายการที่เฉพาะเจาะจง แต่เป็นเพียงแค่ชื่อเรื่อง / หน้าเริ่มต้น

ฉันจะทำเช่นนั้นได้อย่างไร?

ฉันใช้มันดังนี้:

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

ปัญหาคือแพ็คเกจสร้างหัวเรื่องโดยอัตโนมัติดังนั้นฉันจึงไม่สามารถวางไว้ที่\labelนั่นและอ้างถึงสิ่งนั้นได้

โดยทั่วไปฉันเพียงแค่ต้องการที่จะทำสิ่งที่จำเป็นเพื่อให้สามารถใช้ปกติ\ref, \hyperref, \autoref, \fullrefฯลฯ

และฉันยังไม่พบสิ่งใดในเอกสาร biblatex (หน้า 88 ff. aka วินาที 3.7.2 มันเริ่มพูดถึง\printbibliographyคำสั่ง)

คำตอบ

3 DavidPurton Aug 17 2020 at 13:28

น่าแปลกที่ฉันไม่พบวิธีที่ชัดเจนในการทำเช่นนี้

นี่คือตัวเลือกสำหรับพิมพ์ส่วนหัวจากนั้นใส่ป้ายชื่อจากนั้นพิมพ์บรรณานุกรมส่วนที่เหลือ ไม่ทราบด้วยเหตุผลบางอย่างกับผมที่\@currentlabelไม่ได้รับการปรับปรุงโดยดังนั้นฉันต้องการสับพร่องเคาน์เตอร์ย่อยแล้วเพิ่มขึ้นโดยใช้\printbibheading\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 moewe Aug 17 2020 at 14:12

เนื่องจากคุณได้ระบุชื่อบรรณานุกรมของคุณอย่างชัดเจนแล้วคุณสามารถแอบเข้าไปใน\labelนั้นได้

ด้วย MWE ของ David Purton และการเปลี่ยนแปลงที่ชัดเจน

\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}

หากคุณต้องการโซลูชันที่เลือก "อ้างอิง" หรือ "บรรณานุกรม" โดยอัตโนมัติขึ้นอยู่กับชั้นเรียนคุณสามารถลองได้

\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เหมือนและใช้งาน\refnameได้ส่วน 'คลาสแปลก ๆ ' คือreport/ book- เหมือนและใช้งาน\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}

(แน่นอนว่าคุณสามารถเขียนทับ bibheading ได้subbibnumberedหากต้องการ แต่เนื่องจากป้ายกำกับอยู่ในหัวเรื่องแบบตายตัวจึงควรเลือกชื่อที่ไม่ซ้ำกันเพื่อหลีกเลี่ยงการใช้ซ้ำสองครั้ง) ไม่ว่าในกรณีใดคุณต้องทราบ / คัดลอกคำจำกัดความดั้งเดิมของส่วนหัวบรรณานุกรมที่ใช้ในเอกสารของคุณ

3 rugk Jan 03 2021 at 16:33

ตั้งแต่ v3.16 ของ biblatexคุณสามารถใช้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}