biblatex宏包使用后端bibtex和biber的区别

biblatex宏包使用后端bibtex和biber的区别

两个后端的输出差异

biblatex 有两种后端可以使用,分别是bibtex和biber。

两者的作用本质上是相同的,都是通过文献引用信息和bib文件处理出biblatex需要的数据,这些数据符合biblatex宏包定义的格式,保存在bbl文件中。一篇文献的典型格式为:

bibtex后端生成的:

  \entry{Yi2013--}{book}{}
    \name{author}{4}{}{%
      {{hash=YSH}{%
         family={Yi},
         familyi={Y\bibinitperiod},
         given={S\bibnamedelima H},
         giveni={S\bibinitperiod\bibinitdelim H\bibinitperiod},
      }}%
      {{hash=ZYX}{%
         family={Zhao},
         familyi={Z\bibinitperiod},
         given={Y\bibnamedelima X},
         giveni={Y\bibinitperiod\bibinitdelim X\bibinitperiod},
      }}%
      {{hash=HL}{%
         family={He},
         familyi={H\bibinitperiod},
         given={L},
         giveni={L},
      }}%
      {{hash=ZML}{%
         family={Zhang},
         familyi={Z\bibinitperiod},
         given={M\bibnamedelima L},
         giveni={M\bibinitperiod\bibinitdelim L\bibinitperiod},
      }}%
    }
    \list{publisher}{1}{%
      {National Defense Industry Press}%
    }
    \strng{namehash}{YSH+1}
    \strng{fullhash}{YSHZYXHLZML1}
    \field{labelnamesource}{author}
    \field{labeltitlesource}{title}
    \field{labelyear}{2013}
    \field{labeldatesource}{year}
    \field{title}{Supersonic and hypersonic nozzle design}
    \list{location}{1}{%
      {BeiJing}%
    }
    \field{year}{2013}
  \endentry

biber后端生成的:

    \entry{Yi2013--}{book}{}
      \name{author}{4}{}{%
        {{uniquename=0,uniquepart=base,hash=30d1228d0571fa5d05eecaca3b7b5b21}{%
           family={Yi},
           familyi={Y\bibinitperiod},
           given={S\bibnamedelima H},
           giveni={S\bibinitperiod\bibinitdelim H\bibinitperiod},
           givenun=0}}%
        {{uniquename=0,uniquepart=base,hash=c7453b16a8928705077f2d6040ce623d}{%
           family={Zhao},
           familyi={Z\bibinitperiod},
           given={Y\bibnamedelima X},
           giveni={Y\bibinitperiod\bibinitdelim X\bibinitperiod},
           givenun=0}}%
        {{uniquename=0,uniquepart=base,hash=972234bc6cedbf8c53e9cdde1d02f16a}{%
           family={He},
           familyi={H\bibinitperiod},
           given={L},
           giveni={L\bibinitperiod},
           givenun=0}}%
        {{uniquename=0,uniquepart=base,hash=21145600045e45ca2f7db5c316e4b905}{%
           family={Zhang},
           familyi={Z\bibinitperiod},
           given={M\bibnamedelima L},
           giveni={M\bibinitperiod\bibinitdelim L\bibinitperiod},
           givenun=0}}%
      }
      \list{language}{1}{%
        {english}%
      }
      \list{location}{1}{%
        {BeiJing}%
      }
      \list{publisher}{1}{%
        {National Defense Industry Press}%
      }
      \strng{namehash}{c2c256e4a2b6e92ca488592d166b5177}
      \strng{fullhash}{45269d2c791d5ef5a4149112f63f35ae}
      \strng{bibnamehash}{c5aa3c5e799e6393445433a9d58e3a5c}
      \strng{authorbibnamehash}{c5aa3c5e799e6393445433a9d58e3a5c}
      \strng{authornamehash}{c2c256e4a2b6e92ca488592d166b5177}
      \strng{authorfullhash}{45269d2c791d5ef5a4149112f63f35ae}
      \field{sortinit}{e}
      \field{sortinithash}{f615fb9c6fba11c6f962fb3fd599810e}
      \field{extradatescope}{labelyear}
      \field{labeldatesource}{}
      \field{labelnamesource}{author}
      \field{labeltitlesource}{title}
      \field{title}{Supersonic and hypersonic nozzle design}
      \field{year}{2013}
      \field{dateera}{ce}
    \endentry

可以看到两者的基本信息是一致的,只是biber后端多了一些附加的输出。
利用这些附加输出可以实现一些附加的设置和功能。但只要基本信息存在那么就足以生成和格式化文献引用标注和文献表。
从这里我们也可以知道,其实对于biblatex宏包来说,核心是需要利用一个后端程序产生满足biblatex格式要求的文献信息库
即bbl文件,无论这个后端用的什么程序,用bibtex也好,用biber也好,也其它程序也要,只要输出的格式满足要求即可。

两个后端的输入差异

对于biber程序来说,其所需的信息,都由biblatex输出保存到bcf文件中,因此biber程序只需要读取bcf文件和bib文件就能根据其中的信息生成bbl文件。

对于bibtex程序来说,传统latex的参考文献生成方法,通过aux文件中的信息获取bst样式文件和bib文件信息,以及参考文献引用信息,进而根据bst样式生成对应的输出,这个输出通常是一个thebibliography环境。
对于biblatex宏包,其基本方式是类似的,biblatex宏包将bst样式文件和bib文件信息,以及文献引用信息写入aux文件中,然后bibtex获取这些信息进行处理,但我们知道biblatex需要的bbl文件中的格式不是一个thebibliography环境,而是其需要的格式,因此对应的bst样式文件是特殊的,就是用来生成这一格式。
然而当biblatex设置选项时需要产生对应的格式,但bibtex无法简单接收这样的选项设置信息,
由于bst样式是固定的,那么biblatex设置选项的信息只能通过bib文件进行传递,用户的bib文件不能修改,于是biblatex另外写了一个
\jobname-blx.bib文件用于向bibtex和bst文件传递信息。
于是我们可以看到在aux文件中,还有一个额外的bib文件信息\jobname-blx.bib

总结

两者的异同可以用下表总结:

后端bibtexbiber
输入的辅助文件aux文件bcf文件
辅助文件给出内容bst文件名,bib文件名,选项控制bib文件名,文献引用信息文献引用信息,bib文件名,选项设置信息
输出文件bbl文件bbl文件
输出文件给出内容biblatex自定义格式文献信息biblatex自定义格式文献信息

两个后端的主要差别在于,由于bibtex程序处理bst文件的特殊性,无法从tex源代码直接传递信息给bst文件,需要多生成了一个保存控制信息的bib文件,待bst中的函数读取利用。这种思路提供了tex控制bst样式输出格式的可能,尽管其格式的选择可能会比较有限,因为bib文件只能提供格式选项,而这些格式必须是bst已经预备好了的,bst能够预设的格式总是有限的。然而这的确为bst样式作者及利用基于bibtex的传统方法的宏包作者提供了一条利用tex设置参考文献格式的可行路子。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
BibTeX是一种用于管理引用文献的工具,它可以与LaTeX一起使用TeXstudio是一款常用的LaTeX编辑器,可以方便地使用BibTeX。下面是使用TeXstudio和BibTeX的步骤: 1. 编写LaTeX文档时,在引用文献的地方使用\cite命令,并在文档末尾添加bibliography命令,如下所示: ``` \documentclass{article} \begin{document} 这是一个引用\cite{lamport94}。 \bibliography{mybib} \bibliographystyle{plain} \end{document} ``` 2. 在同一目录下创建一个名为mybib.bib的文件,该文件应包含所有引用的文献信息。例如: ``` @book{lamport94, author = "Leslie Lamport", title = "LaTeX: A Document Preparation System", year = "1994", publisher = "Addison-Wesley", address = "Reading, Massachusetts" } ``` 3. 打开TeXstudio中的Options(选项)菜单,并选择Configure TeXstudio(配置TeXstudio)选项。在左侧菜单中选择Build(构建),然后在右侧菜单中选择Default Bibliography Tool(默认文献工具)。在下拉菜单中选择BibTeX,并单击OK。 4. 编译LaTeX文档。在第一次编译时,BibTeX会生成一个名为mybib.bbl的文件,该文件包含引用文献的格式化信息。然后再次编译LaTeX文档以使用此文件。 5. 如果您更改了mybib.bib文件中的引用文献信息,则必须再次运行BibTeX以更新mybib.bbl文件。可以在TeXstudio中使用Tools(工具)菜单中的BibTeX(或者键盘快捷键F8)运行BibTeX。 这就是使用TeXstudio和BibTeX管理引用文献的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值