我正在使用嗜酒创建可自定义围兜样式的工具(另见创建干净、简单的自定义 bistyle)
也就是说,此工具使用替代命令来解析 *.bib 文件并创建 *.bbl 文件。它不使用自定义模板文件,而是bibtex %.aux
使用 python 样式的宏。然后,*.tex 文档的编译过程遵循标准的众所周知的过程:/path/to/bibulous.py %.aux
templates.bst
PdfLaTeX + Bibulous + PdfLaTeX (x2) + View Pdf
虽然这在简单示例中运行良好,但在使用\include{...}
命令处理更复杂的文档结构时,我遇到了问题。\cite{...}
主 *.tex 文件中的参考文献可以正常识别并包含在参考书目中,但包含的 *.tex 文件中的参考文献无法正确识别:Citation [...] on page [...] undefined
如下面的最小工作示例所示。
有没有关于如何使用 bibulous 和包含的 *.tex 文件的想法,这根本不应该是一个罕见的情况,而是一种常见的做法!?
这个 MWE 需要 4 个文件 + 吸水宏
MWE.tex %main *.tex file
templates.bst %template file for bibulous formatting
bibl.bib %bib file with entries
sub.tex %a *.tex file included via \include{sub}
bibulous.py %file from the bibulous tool used as bibtex command
主 *.tex 文件MWE.tex
\documentclass[a4paper,11pt]{report}
\begin{document}
%Adding this line recognizes all entries in the *.bib
%file and creates Bibliography entries, but this is not
%safe when adding new references
%\nocite{*}
%This reference works fine
Reference in main MWE.tex file \cite{Lorem}
%include file sub.tex with another \cite{...} command
\include{sub}
%create bibliogpaphy from bibl.bib file
\bibliography{bibl}{}
\bibliographystyle{templates} %use templates.bst bibulous template file
\end{document}
\include{}
命令要包含的第二个 *.tex 文件sub.tex
%this reference is not recognized properly
Reference in included sub.tex \cite{Ipsum}
示例书目数据库 bibl.bib
@entry{Lorem,
title = {Lorem},
author = {A. Lorem},
year = {2015},
publisher = {Lorem Journal}
}
@entry{Ipsum,
title = {Ipsum},
author = {B. Ipsum},
year = {2015},
publisher = {Ipsum Journal}
}
bibulous 使用的书目格式的示例模板文件templates.bst
TEMPLATES:
entry = <au>, \textit{<title>}, <publisher>, <year>
答案1
*.aux
我添加了文件解析器递归调用自身的功能,以便它能够捕获使用 TeX\include
命令插入的文本。更新后的bibulous.py
文件现在可以在项目网站并适用于此处给出的 MWE。
[该答案是从其中一条评论转化而来的。]