参考引擎可以将数据写入 .aux 文件吗?

参考引擎可以将数据写入 .aux 文件吗?

我正在为引文样式语言 (CSL) 编写一个 Lua 引文处理器,位于https://github.com/zepinglee/citeproc-lua。它需要作为除 LuaTeX 之外的 LaTeX 引擎的外部执行程序运行。我对工作流程的设计有一个疑问:将输出信息直接写入.aux文件是否安全?

传统的 BibTeX 工作流程通常需要运行三次 LaTeX 引擎才能确保引用标签正确。在第一遍中,将\citation\bibstyle\bibdata命令写入.aux文件。然后 BibTeX 读取文件并将s.aux生成thebibliography环境写入。在第二遍中,LaTeX 读取文件并且每个命令将引用标签写入。这是因为在某些样式中,引用标签会根据其在参考书目中的顺序重新分配(例如)。在最后的运行中,LaTeX 加载并输出正确的引用。\bibitem.bbl.bbl\bibitem\bibcite.auxplain.bst.aux

如果参考文献处理器直接将引文标签写入.aux文件,则可以节省 LaTeX 引擎的一次运行,并消除 BibTeX 工作流程中第二次运行的负担。但我不确定它是否有任何副作用。

答案1

.bbl如果引文处理器旨在成为 BibTeX 在参考书目和 LaTeX 端引文实现(带有 文件)方面的替代品thebibliography,我不会让处理器直接将 写入\bibcite文件.aux只是为了节省 LaTeX 运行。

在绝大多数设置中,这些.aux条目可能都没问题,但这种方法剥夺了 LaTeX 方面动态操纵引用标签的手段,这在某些情况下可能会派上用场,例如

\documentclass{article}
\usepackage{bibtopicprefix}
\usepackage{hyperref}

\begin{filecontents}{\jobname-A.bib}
@book{elk,
  author    = {Anne Elk},
  title     = {A Theory on Brontosauruses},
  year      = {1972},
  publisher = {Monthy \& Co.},
  location  = {London},
}
\end{filecontents}
\begin{filecontents}{\jobname-B.bib}
@book{belk,
  author    = {Bertranda Belk},
  title     = {A Theory on Other Sauruses},
  year      = {1973},
  publisher = {Monthy \& Co.},
  location  = {London},
}
\end{filecontents}

\begin{document}
Lorem \cite{elk,belk}.

\begin{btSect}{\jobname-A}
\renewcommand{\bibprefix}{A}
\btPrintAll
\end{btSect}

\begin{btSect}{\jobname-B}
\renewcommand{\bibprefix}{B}
\btPrintAll
\end{btSect}
\end{document}

在此示例中,前缀不会也不需要通过任何文件暴露给 BibTeX .aux(BibTeX 无论如何也不会有处理它的接口)。前缀纯粹是在 LaTeX 端添加的。

相关内容