LaTeX와 BibTeX 간의 인터페이스는 무엇입니까?

LaTeX와 BibTeX 간의 인터페이스는 무엇입니까?

LaTeX와 BibTeX 사이의 "프로토콜"은 정확히 무엇입니까?

latex foo, bibtex foo, 및 을 실행하면 latex foo정보가 LaTeX에서 BibTeX로 그리고 다시 어떻게 흐르나요?


내 현재추측하다데이터 흐름은 다음과 같습니다.

  1. LaTeX는 파일을 생성합니다 foo.aux.
  2. BibTeX는 파일을 읽습니다 foo.aux. \citation{...}, \bibstyle{...}및 형식의 행에만 주의를 기울입니다 \bibdata{...}.
  3. BibTeX는 파일을 생성합니다 foo.bbl.
  4. foo.bblLaTeX가 존재하는 것을 발견하면 \bibliography명령은 \input{foo.bbl}.

이것이 정확합니까, 아니면 더 많은 것이 있습니까? 예를 들어, \citation{...}항상 정확히 한 줄의 텍스트인가요?

어떻게든 프로토콜에 영향을 미치는 일반적으로 사용되는 문서 클래스와 패키지가 있습니까? 분명히 biblatex상황은 다를 것입니다. 그러나 알아야 할 덜 분명한 것이 있습니까?


foo.bbl배경: 저는 BibTeX의 드롭인 대체품으로 사용할 수 있는 스크립트를 작성하는 데 관심이 있습니다(LaTeX 측에서는 아무 것도 변경되지 않지만 파일 생성이 달라질 것이라는 점에서 ).

답변1

접근 방식이 약간 변경된다는 사실을 포함하여 귀하의 추측은 다소 정확합니다 biblatex(다른 패키지도 이를 수정하지만 같은 정도는 아님). .tex여러 참고문헌이나 이와 유사한 요구사항 없이 단일 파일의 가장 간단한 사례를 선택하면 다음과 같습니다.

  • \bibliographystyle\bibstyle{...}파일 에 해당 행을 씁니다 .aux. 따라서 이는 서문에 제공될 수 있습니다.
  • \bibliography\bibdata{...}파일 에 행을 쓰고 .aux, .bbl사용 가능한 경우 파일도 입력합니다.
  • \cite\citation{...}파일 에 한 줄을 쓰고 .auxLaTeX 문서에 인용문도 만듭니다.
  • \nocite\citations{...}파일 에 한 줄을 쓰지만 .auxLaTeX 문서에서는 아무 작업도 수행하지 않습니다.

BibTeX는 파일을 읽을 때 여러 줄과 함께 한 줄과 한 줄을 .aux찾습니다 . 그런 다음 파일을 작성 하지만 거기에 들어가는 내용은 파일의 지침에 따라 다릅니다 . 일반적인 관례는 파일이 형식화된 인용을 보유하는 환경만을 포함한다는 것입니다 . 그러나 항상 그런 것은 아닙니다.\bibstyle\bibdata\citation.bbl.bst.bblbibliography

이 워크플로에는 추가할 수 있는 항목이 많이 있습니다. 예를 들어 다음과 같이 biblatex정의합니다 .\bibliography 프리앰블에서 사용되도록~ 아니다.bbl직접 인쇄할 데이터가 포함된 파일 로 작업합니다 . 파일 .aux세트를 생성하기 위해 두 개 이상의 파일을 사용하여 여러 참고문헌을 생성할 수 있습니다 .bbl. 또한 참고문헌의 XML 버전이 파일 내에서 LaTeX '주석'으로 작성되는 구현도 보았습니다 .bbl. 이러한 접근 방식은 BibTeX가 여전히 .aux파일에서 동일한 명령을 찾고 파일을 작성한다는 점에서 동일한 기본 인터페이스를 사용합니다 .bbl.


의 예를 들면 multibibLaTeX 끝에서 각각의 새로운 유형의 참고문헌에 대한 명령 세트를 정의합니다.

\newcites{sec}{Secondary Literature}

새로운 인용 명령을 생성합니다

\citesec{...}

이러한 새로운 명령은 .aux기본 파일과 별도의 파일에 기록됩니다. 즉, BibTeX를 파일에서 한 번, 파일 \jobname.aux에서 한 번, 두 번 실행해야 합니다 sec.aux. 이것은 생성됩니다 .bbl파일 \jobname.bbl및 는 각각 및 에 sec.bbl의해 정상적으로 읽혀집니다 . 따라서 전체 프로세스는 표준 사례와 거의 동일하지만 관련된 파일이 더 많습니다.\bibliography\bibliographysec

답변2

예, 하나의 aux 파일이 있는 기본 경우입니다. 그러나 2개 이상의 Aux 파일이 있을 수 있습니다. 예를 들어 multibibor chapterbib또는 ...를 사용하면 multibib기본 Aux 파일과 사용자가 정의한 파일을 실행해야 합니다. 또한 chapterbib챕터당 하나의 aux 파일이 있으므로 확장자는 .aux입니다 . 두 경우 모두 처리하기 쉽습니다: bibtex *.aux. package 와 동일합니다 bibunits.

관련 정보