여러 가지 이유로 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>
하나를 사용 합니다 .name
field
verb
list
year
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.bst
biblatex.bst
다음은 MWE의 출력입니다.