首页 > 编程知识 正文

latex参考文献去掉编号,latex参考文献引用格式

时间:2023-05-03 16:11:20 阅读:278690 作者:589

latex参考文献中修改指定作者的格式来突出显示 1.引言

在撰写学位论文过程中,特别是在附作者在学期间的研究或工作成果的时候,往往需要突出显示文献列表作者的信息方便他人看到(假设研究成果以文献表的形式呈现),所以需要修改参考文献中指定作者的格式来突出进行显示。

传统的方法是直接在bib文件中在作者域附加上一些格式信息来实现突出显示。比如:

@MISC{Article1,AUTHOR = {Zhangtextsuperscript{*}, San and textbf{Li}, textbf{Si} and Last3, First3}}

这个bib信息中,我们对第一个作者的姓后面添加了一个星号,并采用粗体显示了第二个作者。
然而这种方式首先破坏了bib文件的纯净性,并可能会影响作者信息的解析,而且这种方式不那么的优雅,复用度低,无论格式需求或者信息需求有更改,都需要修改bib文件。所以这并不是一种令人满意的方式。

为此我们介绍一种比较优雅的方式来实现(需要注意的是这种方式是基于biblatex的数据注解机制的)。

2. biblatex的数据注解机制

数据注解(data annotations)就是一种方便解决附加信息问题的方法。通过允许用户在文献数据源中添加某种语义信息(而不是排版标记),使得文献样式可以在标记时使用该信息。参考:biblatex.pdf,biblatex-zh-cn.pdf.

数据注解同样是在bib文件中做修改,但不修改关键的数据域,而是添加一个注解的域。比如:

@MISC{Article1,AUTHOR = {Zhang, San and Li, Si and Last3, First3}}AUTHOR+an={1=corresponding,2=thesisauthor}

通过添加AUTHOR+an域,其形式是:{要被注解的域名+an}。对应内容(等号后面花括号内的)的形式则是:{=信息}。
对于存在多个项的域比如author域,用数字表示其中的第几项,比如{1=corresponding;2=thesisauthor}表示第一个作者注释corresponding信息,第二个作者注释thesisauthor信息,便于强调显示。注意内部的多个注释信息用–分号–分割。

如此,由于我们为author添加了注解信息,那么这些信息在处理过程中会被biblatex读取,基于这些信息我们可以做需要格式修改。

3. 根据注解信息做格式修改

biblatex的格式修改在无法通过选项修改的情况下,通常需要修改宏来实现,但很容易理解。比如我们要给通信作战加上星号,给学位论文作者加粗,那么可以做如下格式修改:

renewcommand*{mkbibnamegiven}[1]{%ifitemannotation{thesisauthor}{textbf{#1}}%{#1}ifitemannotation{corresponding}{textsuperscript{*}}{}%}renewcommand*{mkbibnamefamily}[1]{%ifitemannotation{thesisauthor}{textbf{#1}}{#1}}

这样就对注释为thesisauthor的作者的姓和名加粗,并在名后面加上信号。

也可以添加其它格式比如颜色,并只在文献表中显式,而不在标注中显示:

renewcommand*{mkbibnamegiven}[1]{%ifitemannotation{thesisauthor}{ifbibliography{textcolor{red}{textbf{#1}}}{#1}}%{#1}ifbibliography{ifitemannotation{corresponding}{textsuperscript{*}}{}}{}%}renewcommand*{mkbibnamefamily}[1]{%ifitemannotation{thesisauthor}{ifbibliography{textcolor{red}{textbf{#1}}}{#1}}{#1}}

其中ifbibliography做一个判断是否在文献表中。textcolor是加上颜色。

4. 在文献末尾添加注释信息

在文献末尾添加注释信息,我们则不采用这种数据注解的方式,而是直接使用annotation域来保存注释信息,比如:

@MISC{Article1,AUTHOR = {Zhang, San and Li, Si and Last3, First3}}AUTHOR+an={1=corresponding,2=thesisauthor},annotation={(SCI检索)}

在使用gb7714-2015样式情况下,将选项gbannote设置为true即可输出该注释信息。

5. 代码实践

我们用一个完整的示例来测试:

begin{filecontents*}{jobname.bib}@phdthesis{zhao2003, author = {仁爱的白开水}, title = {学位论文题名}, school = {某大学}, year = {2003}, type = {[博士]}, address = {某地}, pages={21-24}, AUTHOR+an = {1=thesisauthor}, annotation={优秀论文}}@Inproceedings{Nemec1997-209-214, Title = {Force control of redundant robots}, Author = {B Nemec and Zhao, Mou Mou}, Booktitle = {Processings of Symposium on Robot Control}, Pages = {209-214}, Country = {Nantes France}, Year = {1997}, AUTHOR+an = {1=corresponding;2=thesisauthor}, annotation={EI检索}}@Article{Chiani1998-2998-3008, Title = {Error probability for block codes over channels with block interference}, Author = {Zhao, Mou Mou and Chiani, M.}, Journal = {IEEE Trans. Inf. Theory}, Number = {7}, Pages = {2998-3008}, Volume = {44}, Year = {1998}, AUTHOR+an = {1=thesisauthor;2=corresponding}, annotation={SCI检索}}end{filecontents*}documentclass{ctexart}usepackage{xcolor}usepackage[style=gb7714-2015ay,gbannote=true]{biblatex}%,gbnamefmt=pinyinmakeatletterrenewcommand*{mkbibnamegiven}[1]{%ifitemannotation{thesisauthor}{ifbibliography{textcolor{red}{textbf{#1}}}{#1}}%{#1}ifbibliography{ifitemannotation{corresponding}{textsuperscript{*}}{}}{}%}renewcommand*{mkbibnamefamily}[1]{%ifitemannotation{thesisauthor}{ifbibliography{textcolor{red}{textbf{#1}}}{#1}}{#1}}makeatotheraddbibresource{jobname.bib}begin{document}cite{zhao2003,Nemec1997-209-214,Chiani1998-2998-3008}printbibliography[title=在学期间研究成果]end{document}

结果为:

6. 小结

高高的春天介绍了利用biblatex的数据注解机制将latex生成参考文献中的制定作者突出显示,提供了一种优雅的实现机制。可以用于学位论文撰写过程中参考文献,特别是附录的研究成果列表的输出。

7. 参考: biblatex.pdfbiblatex-zh-cn.PDF

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。