Biblatex: 새 필드로 새 드라이버 선언

Biblatex: 새 필드로 새 드라이버 선언

여러 가지 이유로 Biblatex의 도움으로 LaTeX 문서 내에서 새 필드가 있는 새 드라이버를 선언해야 합니다.

예를 들어 다음 BibTeX 항목이 제공될 수 있습니다:

\begin{filecontents}{\jobname.bib}
    @aloa{chris,
        fu = {Hawaii},
        fubo = {Hawaiiboooo},
        year = {2015}}
\end{filecontents}

그런 다음 LaTeX 문서에 다음과 같이 정의하고 싶습니다.

\DeclareBibliographyDriver{aloa}{%
    \newunit\newblock
    \printfield{fu}%
    \newunit\newblock
    \printfield{fubo}%
    \newunit\newblock
    \printfield{year}%
    \finentry}

그런 다음 참조 목록에 출력으로 표시되는 방식으로 항목을 인용하고 싶습니다.

하와이 하와이부우 2015

최소한의 예는 다음과 같습니다:

\documentclass{article}

\begin{filecontents}{\jobname.bib}
    @aloa{chris,
        fu = {Hawaii},
        fubo = {Hawaiiboooo},
        year = {2015}}
\end{filecontents}

\usepackage[backend=bibtex8]{biblatex}

\DeclareBibliographyDriver{aloa}{%
    \newunit\newblock
    \printfield{fu}%
    \newunit\newblock
    \printfield{fubo}%
    \newunit\newblock
    \printfield{year}%
    \finentry}

\bibliography{\jobname.bib}

\begin{document}
    \nocite{chris}
    \printbibliography
\end{document}

LaTeX 파일에서만(biber가 아닌 bibtex를 사용하여) 이 작업을 수행할 수 있습니까?

답변1

biblatex없어도 새 드라이버와 새 입력 필드를 만드는 것이 가능합니다 biber.

백엔드가 아닌 경우 biber특수 biblatex파일을 사용하여 .bst파일 을 biblatex.bst생성 .bbl하므로 biblatex.bst. 절차는 다음과 같습니다.

1) biblatex.bst복사본을 찾아 복사한 다음 이름을 바꾸고(예: mybiblatex.bst) 이름이 바뀐 복사본을 찾을 수 있는 곳에 둡니다 bibtex(간단한 해결책은 라텍스 파일과 동일한 폴더/디렉토리에 넣는 것입니다).

2) 로컬 복사본에서 ENTRY추가하려는 필드를 찾아 추가합니다.

ENTRY {
  entryset 
  ...
  fu
  fubo
}

bibtex 이것은 fu과 필드를 지시 fubo합니다 bibtex.

3) 로컬 복사본을 찾아 FUNCTION {output.fields.3}새 기능을 만듭니다.

FUNCTION {output.myfields} {
  "fu"    fu    output:write:field
  "fubo"  fubo  output:write:field
}

이 함수는 bibtex새 필드를 처리하는 방법을 지시합니다. 각 줄의 처음 두 인수는 새 필드의 이름입니다. 세 번째 인수의 경우 항목의 데이터 유형에 따라 , , 또는 output:write:<type><type>하나를 사용 합니다 .namefieldverblistyear

4) 로컬 복사본에서 함수를 찾습니다 FUNCTION {output:entry}. 이 함수에 추가하면 output.myfields다음과 같이 보일 것입니다.

FUNCTION {output:entry}{
  ...
  output.fields.3
  output.myfields
  output.compat.1
  ...
}

5) 각각의 새로운 드라이버에 대해 <driver>라인을 추가하십시오

FUNCTION {<driver>} { type$ output:entry }

이 예에서는 다음과 같아야 합니다.

FUNCTION {aloa} {type$ output:entry}

6) 라텍스 소스에 다음을 추가하십시오.

\makeatletter
\def\blx@auxinit@bibtex#1{%
  \blx@auxwrite\blx@auxout@bibtex
    {\def\do##1{,\blx@stripbib{##1}}}
    {\ifx\blx@auxout@bibtex\@mainaux
     \else
       \blx@msg@aux
     \fi
     \string\bibstyle{mybiblatex}\blx@nl
     \string\bibdata{%
       \blx@ctrlfile@bibtex\blxauxsuffix
       \ifx#1\@empty
       \else
         \dolistloop#1%
       \fi}\blx@nl
     \string\citation{biblatex-control}}}
\makeatother

이는 기본값 대신 bibtex사용하도록 지시하는 것입니다 .mybiblatex.bstbiblatex.bst

다음은 MWE의 출력입니다.

여기에 이미지 설명을 입력하세요

관련 정보