(전체) 참고 문헌을 상호 참조하는 방법은 무엇입니까?

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거기에 잠입 할 수 있습니다 .

David Purton의 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유사하고 사용 \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}

(물론 원하는 subbibnumbered경우 bibheading을 덮어 쓸 수 있지만 레이블이 제목에 하드 코딩되어 있기 때문에 두 번 사용하지 않도록 고유 한 이름을 선택하는 것이 더 나을 수 있습니다.) 어떤 경우 에든 알고 있어야합니다. 문서에 사용 된 참고 문헌 제목의 원래 정의를 복사합니다.

3 rugk Jan 03 2021 at 16:33

biblatex v3.16부터 이제 label.

예제 등 은 issue / feature request 에서 복사 되었으므로 모든 크레딧은 @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}