(全体の)参考文献を相互参照する方法は?
簡単な質問ですが、Stackexchangeのここや他の場所で見つけることができませんでした。
によって生成されたヘッダー\printbibliography
、つまり特定のエントリではなく、タイトル/開始ページのみを相互参照したいと思います。
どうやってやるの?
私はそれを次のように使用します:
\printbibliography[title={Quellenverzeichnis}, heading=subbibnumbered]
問題は、パッケージがその見出しを自動的に生成\label
することです。そのため、そこに配置して参照することはできません。
基本的に、私はちょうど私がいつものを使用できるように必要なのは何をしたい\ref
、\hyperref
、\autoref
、\fullrefなど
また、biblatexのドキュメントにも何も見つかりませんでした(88ページ以降、別名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
そこに忍び込むことができます。
DavidPurtonのMWEと明らかな変更
\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
-likeで使用され\refname
、「奇数クラス」はreport
/ book
-likeで使用されます\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}
(もちろん、必要にsubbibnumbered
応じて参考文献を上書きすることもできますが、ラベルは見出しにハードコーディングされているため、2回使用しないように一意の名前を選択することをお勧めします。)いずれの場合も、これには次のことを知っておく必要があります。ドキュメントで使用されている参考文献の見出しの元の定義をコピーします。
biblatexのv3.16以降、を使用できるようになりましたlabel
。
例などは問題/機能リクエストからコピーされたため、すべてのクレジットは@moewewに送られ、@ 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}