(全体の)参考文献を相互参照する方法は?

Aug 17 2020

簡単な質問ですが、Stackexchangeのここや他の場所で見つけることができませんでした。

によって生成されたヘッダー\printbibliography、つまり特定のエントリではなく、タイトル/開始ページのみを相互参照したいと思います。

どうやってやるの?

私はそれを次のように使用します:

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

問題は、パッケージがその見出しを自動的に生成\labelすることです。そのため、そこに配置して参照することはできません。

基本的に、私はちょうど私がいつものを使用できるように必要なのは何をしたい\ref\hyperref\autoref、\fullrefなど

また、biblatexのドキュメントにも何も見つかりませんでした(88ページ以降、別名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そこに忍び込むことができます。

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@classtypebiblatex、特定のクラスを検出するためにによって使用されます。便利なことに、「偶数クラス」は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回使用しないように一意の名前を選択することをお勧めします。)いずれの場合も、これには次のことを知っておく必要があります。ドキュメントで使用されている参考文献の見出しの元の定義をコピーします。

3 rugk Jan 03 2021 at 16:33

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}