จะอ้างอิงถึงบรรณานุกรม (ทั้งเล่ม) ได้อย่างไร?
คำถามง่ายๆ แต่หาไม่เจอใน Stackexchange ที่นี่หรือที่อื่น
ฉันต้องการอ้างอิงข้ามส่วนหัวที่สร้างโดย\printbibliography
กล่าวคือไม่ใช่รายการที่เฉพาะเจาะจง แต่เป็นเพียงแค่ชื่อเรื่อง / หน้าเริ่มต้น
ฉันจะทำเช่นนั้นได้อย่างไร?
ฉันใช้มันดังนี้:
\printbibliography[title={Quellenverzeichnis}, heading=subbibnumbered]
ปัญหาคือแพ็คเกจสร้างหัวเรื่องโดยอัตโนมัติดังนั้นฉันจึงไม่สามารถวางไว้ที่\label
นั่นและอ้างถึงสิ่งนั้นได้
โดยทั่วไปฉันเพียงแค่ต้องการที่จะทำสิ่งที่จำเป็นเพื่อให้สามารถใช้ปกติ\ref
, \hyperref
, \autoref
, \fullrefฯลฯ
และฉันยังไม่พบสิ่งใดในเอกสาร biblatex (หน้า 88 ff. aka วินาที 3.7.2 มันเริ่มพูดถึง\printbibliography
คำสั่ง)
คำตอบ
น่าแปลกที่ฉันไม่พบวิธีที่ชัดเจนในการทำเช่นนี้
นี่คือตัวเลือกสำหรับพิมพ์ส่วนหัวจากนั้นใส่ป้ายชื่อจากนั้นพิมพ์บรรณานุกรมส่วนที่เหลือ ไม่ทราบด้วยเหตุผลบางอย่างกับผมที่\@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}

เนื่องจากคุณได้ระบุชื่อบรรณานุกรมของคุณอย่างชัดเจนแล้วคุณสามารถแอบเข้าไปใน\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
หากต้องการ แต่เนื่องจากป้ายกำกับอยู่ในหัวเรื่องแบบตายตัวจึงควรเลือกชื่อที่ไม่ซ้ำกันเพื่อหลีกเลี่ยงการใช้ซ้ำสองครั้ง) ไม่ว่าในกรณีใดคุณต้องทราบ / คัดลอกคำจำกัดความดั้งเดิมของส่วนหัวบรรณานุกรมที่ใช้ในเอกสารของคุณ
ตั้งแต่ 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}