在排版时从 pdflatex 内部将 bbl 文件解析为 xml 文件

在排版时从 pdflatex 内部将 bbl 文件解析为 xml 文件

作为期刊编辑,我需要将 bbl 文件中的参考书目翻译成 xml 文件的一部分(以便将来提交交叉引用)。最好使用 pdfLaTeX 即时完成,这样我就可以在 xml 中记录主要元数据(作者、标题、页数、卷等)。目前,我对 bbl 文件使用不涉及\bibitem括号的方案,例如\bibitem{Smith99} ... 问题是,只要 bbl 文件使用括号(如natbib),我的方案就会灾难性地失败。\bibitem[blah]{Smith99} ... 问题:如何让 pdfLaTeX\bibitem[]{}在 pdflatex 排版为 pdf 时将带有这样的 的 bbl 文件解析为 xml 文件?

目前我执行以下操作(从 latex 中的某个地方破解并执行 \AtBeginDocument):

\renewcommand{\bibitem}[1]{</unstructured_citation></citation>
    ^^J<citation key="#1"><unstructured_citation>}
...  
\def\j@@Input{%
  \let\jrnltempb\jrnltempa
  \immediate\read\jrnlin to\jrnltempa
  \ifeof\jrnlin
    \immediate\closein\jrnlin
  \else
    \immediate\write\jrnlout{\jrnltempb}
    \expandafter\j@@Input
  \fi}
\typeout{**** Starting to write the bibliography to the xml.}
\newread\jrnlin
\immediate\openin\jrnlin\jobname.bbl\relax
\immediate\write\jrnlout{<citation_list>
    ^^J<citation key="nil"><unstructured_citation>}
\immediate\read\jrnlin to\jrnltempa  
\immediate\read\jrnlin to\jrnltempa
\j@@Input
\immediate\write\jrnlout{</unstructured_citation></citation>
    ^^J</citation_list>}  
\immediate\closein\jrnlin

答案1

解析.bbl文件实际上并不是最佳方法:该文件用于排版,必须来自更结构化的.bib文件。更明智的方法是修改.bstBibTeX 使用的文件,使其以.bbl“注释”的形式将 XML 数据写入。然后可以在适当的条件下轻松读回后者。为了提供更多信息,我们需要一个更完整的示例。

相关内容