latex使用bibmap生成表格形式的参考文献表

latex使用bibmap生成表格形式的参考文献表

1. 引言

【前文】 介绍过利用biblatex生成表格形式的参考文献表的方法,其本质是基于biblatex宏包读取后端处理后的参考文献数据,并利用tex宏来实现对文献数据的利用并生成表格形式的文献表。

而基于传统参考文献生成方法的路径,则需要重定义thebibliography环境,并利用样式来实现特定格式(比如增加&\hline等)的著录条目输出到bbl文件中。修改bst样式是可以实现的,但由于bst样式文件的语法相对复杂, 所以这里我们介绍一种基于【bibmap】 的更为简单的方法。因为基于bibmap的样式完全是由python模块定义的,语法简单,逻辑清晰。

2. bibmap 功能简介

bibmap由两部分构成,一个是bibmap程序,包括一系列python文件,一个是bibmap宏包,包括一个sty文件。

bibmap 程序原先是为了修改bib文件而写的,但也具备输出任意格式的潜力,所以也可以用来替换bibtex程序,目前配合bibmap宏包,可以很方便地生成latex参考文献,因其样式定义的便捷性,也可以定义新样式来得到特定格式的bbl文件输出,从而达成特定的目标。当然需要强调的是,这种方法是传统的latex参考文献生成方法,其文件结构、编译过程与基于bibtex的方法是完全一致的。

3. 使用bibmap宏包和程序实现两栏的表格形式文献表

3.1 latex源文件

使用bibmap宏包的latex源文档结构与传统参考文献生成方法的文件类似。主要差别是参考文献著录和标注样式在加载宏包bibmap时指定,而不是使用bibliographystyle命令来指定。

\documentclass{article}
    \usepackage{ctex}
    \usepackage{xcolor}
    \usepackage{hyperref}
\usepackage[paperwidth=16cm,paperheight=10cm,top=10pt,bottom=10pt,left=1cm,right=1cm]{geometry}
\usepackage[citestyle=numeric,bibstyle=gb7714-2015ay,bibtable=true]{bibmap}
\begin{filecontents}{\jobname.bib}
@techreport{calkin,
  author       = {Calkin, D and Ager, A and Thompson, M},
  title        = {A Comparative Risk Assessment Framework for Wildland Fire
                 Management: the 2010 Cohesive Strategy Science Report},
  number       = {RMRS-GTR-262},
  year         = {2011},
  pages        = {8--9},
}

@incollection{buseck,
  author       = {Buseck, P R and Nord, Jr, G L and Veblen, D R},
  title        = {Subsolidus Phenomena in Pyroxenes},
  booktitle    = {Pyroxense},
  address      = {Washington, D.C.},
  publisher    = {Mineralogical Society of America},
  year         = {c1980},
  pages        = {117--211},
}

@book{wfz,
  author       = {王夫之},
  title        = {宋论},
  edition      = {刻本},
  address      = {金陵},
  publisher    = {湘乡曾国荃},
  year         = {1865(清同治四年)},
}


@periodical{zgtsgxh,
  author       = {中国图书馆学会},
  title        = {图书馆学通讯},
  year         = {1957/1990},
  number       = {1-4},
  address      = {北京},
  publisher    = {北京图书馆},
}

@archive{bjsrmzfbgt,
  author       = {北京市人民政府办公厅},
  title        = {关于转发北京市企业投资项目核准暂行实施办法的通知:
                  京政办发[2005]37号},
  year         = {2005},
  date         = {2005-07-12},
  urldate      = {2011-07-12},
  url          = {http://china.findlaw.cn/fagui/p_1/39934.html},
}
\end{filecontents}

    \begin{document}

    文献\cite{calkin,buseck,zgtsgxh,wfz,bjsrmzfbgt}

    \bibliography{\jobname}

    \end{document} 

注意其中的

bibmap宏包加载:

\usepackage[citestyle=numeric,bibstyle=gb7714-2015ay,bibtable=true]{bibmap}

要生成表格形式的文献表,需要添加bibtable选项,参数为true时,是生成默认的两栏的表格,第一栏是序号,第二栏是文献信息。

文献的引用:

\cite{calkin,buseck,zgtsgxh,wfz,bjsrmzfbgt}

文献表的输出:

\bibliography{\jobname}

3.2 编译命令和结果

编译命令有四步:

xelatex jobname

python bibmap.py jobname

xelatex jobname

xelatex jobname

其中:第二步python bibmap.py jobnamebibmap.exe jobname类似于bibtex,是bibtex jobname的替换。

需要注意的是:若 bibmap.py或bibmap.exe 所在目录不在系统的path路径内,那么需将相关所有py文件放在源文件同目录下面。
sty文件也类似,也需要放到tex源文件同目录下面。

注意:bibmap.exe在项目中没有附带,可以使用binary目录下的bat脚本生成,注意脚本中的anaconda路径需根据自己系统来设定。

编译结果为:
在这里插入图片描述

相关的bbl文件的内容为:

\bibmapciteb{zgtsgxh}{1}
\bibmapciteb{wfz}{2}
\bibmapciteb{bjsrmzfbgt}{3}
\bibmapciteb{buseck}{4}
\bibmapciteb{calkin}{5}

\begin{thebibliography}{5}
\bibitem[中国图书馆学会(1957)中国图书馆学会]{zgtsgxh} & 中国图书馆学会. 图书馆学通讯\allowbreak[J], 1957(1)-1990(4). 北京: 北京图书馆, 1957-1990.\\ \hline
\bibitem[王夫之(1865(清同治四年))王夫之]{wfz} & 王夫之. 宋论\allowbreak[M]. 刻本. 金陵: 湘乡曾国荃, 1865(清同治四年).\\ \hline
\bibitem[北京市人民政府办公厅(2005)北京市人民政府办公厅]{bjsrmzfbgt} & 北京市人民政府办公厅. 关于转发北京市企业投资项目核准暂行实施办法的通知: 京政办发[2005]37号\allowbreak[A/OL]. (2005-07-12)\allowbreak[2011-07-12]. \newblock\url{http://china.findlaw.cn/fagui/p_1/39934.html}.\\ \hline
\bibitem[Buseck, et al.(c1980)Buseck, P R and Nord, Jr, G L and Veblen, D R]{buseck} & BUSECK P. R., NORD G. L., Jr, VEBLEN D. R. Subsolidus Phenomena in Pyroxenes\allowbreak[G]//Pyroxense. Washington, D.C.: Mineralogical Society of America, c1980: 117-211.\\ \hline
\bibitem[Calkin, et al.(2011)Calkin, D and Ager, A and Thompson, M]{calkin} & CALKIN D, AGER A, THOMPSON M. A Comparative Risk Assessment Framework for Wildland Fire Management: the 2010 Cohesive Strategy Science Report\allowbreak[R]. RMRS. [S.l. : s.n.], 2011: 8-9.\\ \hline
\end{thebibliography}

可以看到在bibitem命令和参考文献条目著录文本之间加入了&,并在行末加入了\\ \hline,这是bibmap程序根据bibtable选项自动加入的。如果要实现更多的栏,那么需要加入更多&,这可以通过样式文件实现,见下一节。

4. 使用bibmap宏包和程序实现三栏的表格形式文献表

三栏的表格文献表的tex源代码与前一小节的类似,差别只是在加载bibmap宏包时:

\usepackage[citestyle=numeric,bibstyle=bibstyletabthreecols.py,bibtable=threecols]{bibmap}

其中:bibtable=threecols为三栏的设置,而著录样式也需要做相应的调整,因为需要在各著录条目中添加&符号来区分各栏。
bibstyle=bibstyletabthreecols.py就是做这个事情,其中格式设置是在作者和标题之间加入了&符号,同时设置了作者的姓的格式保持原样不变,其它设置与bibstyleauthoryear.py文件定义的GB/T 7714-2015样式的设置一致。

latex源代码为:

\documentclass{article}
    \usepackage{ctex}
    \usepackage{xcolor}
    \usepackage{toolbox}
    \usepackage[colorlinks]{hyperref}
    \usepackage[top=30pt,bottom=30pt,left=2cm,right=2cm]{geometry}
\usepackage[citestyle=numeric,bibstyle=bibstyletabthreecols.py,bibtable=threecols]{bibmap}
\begin{filecontents}{\jobname.bib}
@techreport{calkin,
  author       = {Calkin, D and Ager, A and Thompson, M},
  title        = {A Comparative Risk Assessment Framework for Wildland Fire
                 Management: the 2010 Cohesive Strategy Science Report},
  number       = {RMRS-GTR-262},
  year         = {2011},
  pages        = {8--9},
}

@incollection{buseck,
  author       = {Buseck, P R and Nord, Jr, G L and Veblen, D R},
  title        = {Subsolidus Phenomena in Pyroxenes},
  booktitle    = {Pyroxense},
  address      = {Washington, D.C.},
  publisher    = {Mineralogical Society of America},
  year         = {c1980},
  pages        = {117--211},
}

@book{wfz,
  author       = {王夫之},
  title        = {宋论},
  edition      = {刻本},
  address      = {金陵},
  publisher    = {湘乡曾国荃},
  year         = {1865(清同治四年)},
}


@periodical{zgtsgxh,
  author       = {中国图书馆学会},
  title        = {图书馆学通讯},
  year         = {1957/1990},
  number       = {1-4},
  address      = {北京},
  publisher    = {北京图书馆},
}

@archive{bjsrmzfbgt,
  author       = {北京市人民政府办公厅},
  title        = {关于转发北京市企业投资项目核准暂行实施办法的通知:
                  京政办发[2005]37号},
  year         = {2005},
  date         = {2005-07-12},
  urldate      = {2011-07-12},
  url          = {http://china.findlaw.cn/fagui/p_1/39934.html},
}
\end{filecontents}


    \begin{document}

    文献\cite{calkin,buseck,zgtsgxh,wfz,bjsrmzfbgt}

    \newpage
    \bibliography{\jobname}

    \end{document} 

编译后,bbl文件内容为:

\bibmapciteb{zgtsgxh}{1}
\bibmapciteb{wfz}{2}
\bibmapciteb{bjsrmzfbgt}{3}
\bibmapciteb{buseck}{4}
\bibmapciteb{calkin}{5}

\begin{thebibliography}{5}
\bibitem[中国图书馆学会(1957)中国图书馆学会]{zgtsgxh} & 中国图书馆学会 & 图书馆学通讯\allowbreak[J], 1957(1)-1990(4). 北京: 北京图书馆, 1957-1990.\\ \hline
\bibitem[王夫之(1865(清同治四年))王夫之]{wfz} & 王夫之 & 宋论\allowbreak[M]. 刻本. 金陵: 湘乡曾国荃, 1865(清同治四年).\\ \hline
\bibitem[北京市人民政府办公厅(2005)北京市人民政府办公厅]{bjsrmzfbgt} & 北京市人民政府办公厅 & 关于转发北京市企业投资项目核准暂行实施办法的通知: 京政办发[2005]37号\allowbreak[A/OL]. (2005-07-12)\allowbreak[2011-07-12]. \newblock\url{http://china.findlaw.cn/fagui/p_1/39934.html}.\\ \hline
\bibitem[Buseck, et al.(c1980)Buseck, P R and Nord, Jr, G L and Veblen, D R]{buseck} & Buseck P. R., Nord G. L., Jr, Veblen D. R. & Subsolidus Phenomena in Pyroxenes\allowbreak[G]//Pyroxense. Washington, D.C.: Mineralogical Society of America, c1980: 117-211.\\ \hline
\bibitem[Calkin, et al.(2011)Calkin, D and Ager, A and Thompson, M]{calkin} & Calkin D, Ager A, Thompson M & A Comparative Risk Assessment Framework for Wildland Fire Management: the 2010 Cohesive Strategy Science Report\allowbreak[R]. RMRS. [S.l. : s.n.], 2011: 8-9.\\ \hline
\end{thebibliography}

注意到作者与题名之间的&

结果为:

在这里插入图片描述

5. 小结

本文介绍了使用bibmap替代bibtex来实现参考文献的表格形式的方法,基于bibmap样式设置的便捷性,并利用bibmap宏包重定义thebibliography环境来实现,为表格化的参考文献生成提供了除biblatex以外的方法。

PS:本文示例见【地址】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值