利用LaTeX写学位论文使用biblatex生成盲评的成果列表

利用LaTeX写学位论文使用biblatex生成盲评的成果列表

引言

在之前的文章《latex参考文献中修改指定作者的格式来突出显示》,我们介绍了在LaTeX中利用参考文献的方式生成学位论文的成果列表,而且将其中的作者突出显示。
但这种方式是用于明评的,若是盲评版本,则形式可能存在不同。盲评的版本通常是两种方式:一种方式是直接不显示成果,另一种方式则是部分显示成果但隐去学位论文作者。
这第二种方式是本文要讨论的,也就是如何利用原先的bib文件,以生成参考文献的方式,来获得隐去学位论文作者但显示其他信息的成果列表。

因为盲评成果列表的特殊性,所以我们可以直接修改bib文件来达成所需目的的修改。比如将如下条目:

@article{ref-1-1-Yang,
author    = {Yang, Y and Ren, T L and Zhang, L T and others},
title     = {Miniature microphone with silicon-based ferroelectric thin films},
journal   = {Integrated Ferroelectrics},
date      = {2003},
pages      = {229-235},
volume      = {52},
annotation      = {SCI 收录, 检索号:758FZ},
AUTHOR+an={1=thesisauthor},
}

修改为:

@article{ref-1-1-Yang,
author    = {{First Author, XXX}},
title     = {Miniature microphone with silicon-based ferroelectric thin films},
journal   = {Integrated Ferroelectrics},
date      = {2003},
pages      = {229-235},
volume      = {52},
annotation      = {SCI 收录, 检索号:758FZ},
AUTHOR+an={1=thesisauthor},
}

如此,在利用biblatex生成参考文献的方式得到得了成果列表中,该论文的作者信息被显示为“First Author, XXX”。

然而,这种修改bib文件的方式并不是我们最期待的,因为每次切换学位论文的明、盲版本都要修改或更换bib文件并不方便。
我们希望只维护一个bib文件来达成生成明、盲版本成果列表的目的。

考虑到在生成明评版本的时候,bib文件中添加了关于成果的作者注解信息,以利用其来突出显示学位论文作者。
实际上盲评版本,也可以采用类似的方式得到,只是需要对注解信息做一定的修改或者不做任何的修改而仅修改参考文献样式。
下面我们对其进行介绍。

数据注解的两种逻辑

biblatex中的数据注解,实际上有两种逻辑,一是利用数据注解提供条目的元信息来为格式化提供标记,二是利用数据注解为条目提供直接可以取用的文本信息,只要注解内容在给出时以成对的双引号包围时。

前面的bib例子中,
AUTHOR+an={1=thesisauthor}, 是一种提供元信息的注解方式,为author中的第一个作者提供一个thesisauthor标记。

但如果该条目修改为:

@article{ref-1-1-Yang,
author    = {Yang, Y and Ren, T L and Zhang, L T and others},
title     = {Miniature microphone with silicon-based ferroelectric thin films},
journal   = {Integrated Ferroelectrics},
date      = {2003},
pages      = {229-235},
volume      = {52},
annotation      = {SCI 收录, 检索号:758FZ},
AUTHOR+an={1="第一作者"},
}

则是一种提供可用文本信息的注解方式,即为author中的第一个作者提供了一个可用的字符串"第一作者"。

由于提供了特定的可用文本,因此在代码实现上,采用第二种方式可能会简单一些,但在bib文件的普适性等方面则可能略差一些。

用户可以根据自身情况选择使用,下面分别介绍两种不同的实现方式。

基于提供“可用文本”数据注解的实现

基于提供“可用文本”数据注解的实现,在BIThesis中实现了一种利用在part层标记名为myself的part,并提供对应的可用文本的方式,可以得到论文作者信息替换为“第一作者”这样的信息,而其他作者则省略,展现了一种很好的思路。

这里的例子,则还要更简单一些,仅在item层做注解,从而实现盲评的成果列表。

具体为(注意代码中为了去除多余的标点和空格重定义的multinamedelim):

\documentclass{ctexart}
\usepackage{xcolor}
\usepackage[style=gb7714-2015,gbannote=true]{biblatex}%,gbnamefmt=pinyin
\usepackage{fmtcount}\begin{filecontents}[force]{\jobname.bib}
@article{ref-1-1-Yang,
author    = {Yang, Y and Ren, T L and Zhang, L T and others},
title     = {Miniature microphone with silicon-based ferroelectric thin films},
journal   = {Integrated Ferroelectrics},
date      = {2003},
pages      = {229-235},
volume      = {52},
annotation      = {SCI 收录, 检索号:758FZ},
AUTHOR+an={1="First Author"},
}@article{ref-2-1-杨轶,
author    = {杨轶 and 张宁欣 and 任天令 and others},
title     = {硅基铁电微声学器件中薄膜残余应力的研究},
journal   = {中国机械工程},
pages= {1289-1291},
date      = {2005},
volume      = {16},
number ={14},
annotation ={EI 收录, 检索号:0534931 2907},
AUTHOR+an={1="第一作者"}
}@article{ref-5-1-Wu,
author    = {Wu, X M and Yang, Y and Cai, J and others},
title     = {Measurements of ferroelectric MEMS microphones},
journal   = {Integrated Ferroelectrics},
date      = {2005},
pages={417-429},
volume      = {69},
annotation      = {SCI 收录, 检索号 :896KM.},
AUTHOR+an={2="Second Author"}
}@article{ref-6-1-贾泽,
author    = {贾泽 and 杨轶 and 陈兢 and others},
title     = {用于压电和电容微麦克风的体硅腐蚀相关研究},
journal   = {压电与声光},
date      = {2006},
pages      = {117-119},
number={1},
volume      = {28},
annotation      = {EI 收录, 检索号:06129773469.},
AUTHOR+an={2="第二作者"}
}
\end{filecontents}\makeatletter
\newif\ifisblind\isblindfalse\renewcommand*{\mkbibnamegiven}[1]{%名均设为空
\ifisblind%
\else%\hasitemannotation%{\ifbibliography{\textcolor{red}{\textbf{#1}}}{#1}}%{#1}%
\fi%
}\renewcommand*{\mkbibnamefamily}[1]{%
\ifisblind%\hasitemannotation%存在注解提供的可用文本时输出该文本并标红加粗{\ifbibliography{\textcolor{red}{\textbf{\getitemannotation}}}{#1}}%{}%没有注解提供的可用文本时不输出
\else%\hasitemannotation%{\ifbibliography{\textcolor{red}{\textbf{#1}}}{#1}}%{#1}%
\fi%
}
\makeatother\addbibresource{\jobname.bib}\begin{document}\begin{refsection}
\newrefcontext[sorting=none] %按引用顺序排
\nocite{ref-1-1-Yang,ref-2-1-杨轶,ref-5-1-Wu,ref-6-1-贾泽}\printbibliography[title=在学期间研究成果(明评)]
\end{refsection}\begin{refsection}
\DeclareDelimFormat{multinamedelim}{\unspace} %去除多余的标点和空格
\newrefcontext[sorting=none]
\isblindtrue
\nocite{ref-1-1-Yang,ref-2-1-杨轶,ref-5-1-Wu,ref-6-1-贾泽}\printbibliography[title=在学期间研究成果(盲评)]
\end{refsection}\end{document} 

结果为:

在这里插入图片描述

基于提供“元信息”数据注解的实现

基于提供“元信息”数据注解的实现,则需要利用注解中的元信息进行处理和判断,获取标记作者的顺序,从而输出指定的信息。
这种方法需要修改author宏,但不需要在bib文件中对不同的条目提供不同的注解信息,所有的条目学位论文作者的标记采用相同标记。

具体为(顺序编码制样式):

\documentclass{ctexart}
\usepackage{xcolor}
\usepackage[style=gb7714-2015,gbannote=true]{biblatex}%,gbnamefmt=pinyin
\usepackage{fmtcount}\begin{filecontents}[force]{\jobname.bib}
@article{ref-1-1-Yang,
author    = {Yang, Y and Ren, T L and Zhang, L T and others},
title     = {Miniature microphone with silicon-based ferroelectric thin films},
journal   = {Integrated Ferroelectrics},
date      = {2003},
pages      = {229-235},
volume      = {52},
annotation      = {SCI 收录, 检索号:758FZ},
AUTHOR+an={1=thesisauthor},
}@article{ref-2-1-杨轶,
author    = {杨轶 and 张宁欣 and 任天令 and others},
title     = {硅基铁电微声学器件中薄膜残余应力的研究},
journal   = {中国机械工程},
pages= {1289-1291},
date      = {2005},
volume      = {16},
number ={14},
annotation ={EI 收录, 检索号:0534931 2907},
AUTHOR+an={1=thesisauthor}
}@article{ref-5-1-Wu,
author    = {Wu, X M and Yang, Y and Cai, J and others},
title     = {Measurements of ferroelectric MEMS microphones},
journal   = {Integrated Ferroelectrics},
date      = {2005},
pages={417-429},
volume      = {69},
annotation      = {SCI 收录, 检索号 :896KM.},
AUTHOR+an={2=thesisauthor}
}@article{ref-6-1-贾泽,
author    = {贾泽 and 杨轶 and 陈兢 and others},
title     = {用于压电和电容微麦克风的体硅腐蚀相关研究},
journal   = {压电与声光},
date      = {2006},
pages      = {117-119},
number={1},
volume      = {28},
annotation      = {EI 收录, 检索号:06129773469.},
AUTHOR+an={2=thesisauthor}
}\end{filecontents}\makeatletter
\newif\ifisblind\isblindfalse
\newcounter{numitemval}
\newcounter{numitemslt} %selected\renewbibmacro*{author}{%\ifboolexpr{test \ifuseauthorandnot test {\ifnameundef{author}}}{\ifisblind%\setcounter{numitemval}{1}%\whileboolexpr{test {\ifnumcomp{\value{numitemval}}{<}{\value{author}+1}}}{\ifitemannotation[author][default][\thenumitemval]{thesisauthor}%{\setcounter{numitemslt}{\thenumitemval}}{}%\stepcounter{numitemval}%}%\ifnumcomp{\value{numitemslt}}{>}{0}{\textcolor{red}{\textbf{\iffieldequalstr{userd}{chinese}{第\chinese{numitemslt}作者}{\Ordinalstring{numitemslt}~Author}}}, XXX.}{\printnames{author}}\else%\printnames{author}%\fi%%\iffieldundef{authortype}{}{\setunit{\printdelim{authortypedelim}}%\usebibmacro{authorstrg}}}{}}\renewcommand*{\mkbibnamegiven}[1]{%
\ifitemannotation{thesisauthor}
{\ifbibliography{\textcolor{red}{\textbf{#1}}}{#1}}%
{#1}%
}\renewcommand*{\mkbibnamefamily}[1]{%
\ifitemannotation{thesisauthor}
{\ifbibliography{\textcolor{red}{\textbf{#1}}}{#1}}
{#1}}
\makeatother\addbibresource{\jobname.bib}\begin{document}\begin{refsection}
\nocite{ref-1-1-Yang,ref-2-1-杨轶,ref-5-1-Wu,ref-6-1-贾泽}\printbibliography[title=在学期间研究成果(明评)]
\end{refsection}\begin{refsection}
\isblindtrue
\nocite{ref-1-1-Yang,ref-2-1-杨轶,ref-5-1-Wu,ref-6-1-贾泽}\printbibliography[title=在学期间研究成果(盲评)]
\end{refsection}\end{document} 

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

具体为(著者年份制样式):

\documentclass{ctexart}
\usepackage{xcolor}
\usepackage[style=gb7714-2015ay,gbannote=true]{biblatex}%,gbnamefmt=pinyin
\usepackage{fmtcount}\begin{filecontents}[force]{\jobname.bib}
@article{ref-1-1-Yang,
author    = {Yang, Y and Ren, T L and Zhang, L T and others},
title     = {Miniature microphone with silicon-based ferroelectric thin films},
journal   = {Integrated Ferroelectrics},
date      = {2003},
pages      = {229-235},
volume      = {52},
annotation      = {SCI 收录, 检索号:758FZ},
AUTHOR+an={1=thesisauthor},
}@article{ref-2-1-杨轶,
author    = {杨轶 and 张宁欣 and 任天令 and others},
title     = {硅基铁电微声学器件中薄膜残余应力的研究},
journal   = {中国机械工程},
pages= {1289-1291},
date      = {2005},
volume      = {16},
number ={14},
annotation ={EI 收录, 检索号:0534931 2907},
AUTHOR+an={1=thesisauthor}
}@article{ref-5-1-Wu,
author    = {Wu, X M and Yang, Y and Cai, J and others},
title     = {Measurements of ferroelectric MEMS microphones},
journal   = {Integrated Ferroelectrics},
date      = {2005},
pages={417-429},
volume      = {69},
annotation      = {SCI 收录, 检索号 :896KM.},
AUTHOR+an={2=thesisauthor}
}@article{ref-6-1-贾泽,
author    = {贾泽 and 杨轶 and 陈兢 and others},
title     = {用于压电和电容微麦克风的体硅腐蚀相关研究},
journal   = {压电与声光},
date      = {2006},
pages      = {117-119},
number={1},
volume      = {28},
annotation      = {EI 收录, 检索号:06129773469.},
AUTHOR+an={2=thesisauthor}
}\end{filecontents}\makeatletter
\newif\ifisblind\isblindfalse
\newcounter{numitemval}
\newcounter{numitemslt} %selected\renewbibmacro*{author}{%author for biblatex version <=3.7\ifboolexpr{test \ifuseauthorandnot test {\ifnameundef{author}}}{\usebibmacro{bbx:dashcheck}{%\bibnamedash\printnames{author}%}%{\usebibmacro{bbx:savehash}%\ifisblind%\setcounter{numitemval}{1}%\whileboolexpr{test {\ifnumcomp{\value{numitemval}}{<}{\value{author}+1}}}{\ifitemannotation[author][default][\thenumitemval]{thesisauthor}%{\setcounter{numitemslt}{\thenumitemval}}{}%\stepcounter{numitemval}%}%\ifnumcomp{\value{numitemslt}}{>}{0}{\textcolor{red}{\textbf{\iffieldequalstr{userd}{chinese}{第\chinese{numitemslt}作者}{\Ordinalstring{numitemslt}~Author}}}, XXX,}{\printnames{author}}\else%\printnames{author}%\fi%\iffieldundef{authortype}{\setunit{\addspace}}{\setunit{\addcomma\space}}}%\iffieldundef{authortype}{}{\usebibmacro{authorstrg}%\setunit{\addspace}}}%{\global\undef\bbx@lasthash\usebibmacro{labeltitle}%\setunit*{\addspace}}%\setunit{\addcomma\space}%增加一个逗号\usebibmacro{date+extrayear}}\renewcommand*{\mkbibnamegiven}[1]{%
\ifitemannotation{thesisauthor}
{\ifbibliography{\textcolor{red}{\textbf{#1}}}{#1}}%
{#1}%
}\renewcommand*{\mkbibnamefamily}[1]{%
\ifitemannotation{thesisauthor}
{\ifbibliography{\textcolor{red}{\textbf{#1}}}{#1}}
{#1}}
\makeatother\addbibresource{\jobname.bib}\begin{document}\begin{refsection}
\newrefcontext[sorting=none]
\nocite{ref-1-1-Yang,ref-2-1-杨轶,ref-5-1-Wu,ref-6-1-贾泽}\printbibliography[title=在学期间研究成果(明评)]
\end{refsection}\begin{refsection}
\newrefcontext[sorting=none]
\isblindtrue
\nocite{ref-1-1-Yang,ref-2-1-杨轶,ref-5-1-Wu,ref-6-1-贾泽}\printbibliography[title=在学期间研究成果(盲评)]
\end{refsection}\end{document} 

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

小结

两种实现的主要差别是,基于“可用文本”注解的处理,是在姓名列表中的每个姓名上做处理,利用mkbibnamefamily等在每个姓名上做替换。
而基于“元信息”注解的处理,则根据注解信息在整个姓名列表上做处理,通过重定义author直接替换作者列表。
两种方式没有高下之分,只看格式的需要,哪种方式更容易满足学位论文的格式要求就使用哪个。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/142425.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

建筑物检测系统源码分享

建筑物检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Visio…

C语言-结构体-详解

博客主页&#xff1a;【夜泉_ly】 本文专栏&#xff1a;【C语言】 欢迎点赞&#x1f44d;收藏⭐关注❤️ C语言-结构体-详解 1.前言2.结构体类型2.1声明2.2变量的创建与初始化2.3访问2.4匿名结构体类型 3.结构体内存对齐3.1对齐规则3.2示例 1.前言 在C语言中&#xff0c;除了整…

MyBatis 增删改查【后端 17】

MyBatis 增删改查 引言 MyBatis 是一个优秀的持久层框架&#xff0c;它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射&#xff0c;将接口和 Java 的 POJOs (…

挑战力扣高难度算法、数据库题

一.算法类 1622题,困难,奇妙序列 class Fancy { public:static const int MOD 1e9 7;long long M_total; // cumulative multiplicative factorlong long A_total; // cumulative additive factorvector<long long> val; // original valuesvector<long long> …

PTrade量化服务器连接openapi的地址、key等配置涉及哪些文件?

量化服务器连接openapi的地址、key等配置涉及哪些文件&#xff1f; 1、/home/fly/data/BasicInfo/asset_config.yml中OPEN_API_URL配置为OPENAPI行情地址&#xff1b; 2、/home/fly/config/general_config.conf中client_id配置为OPENAPI行情app_key&#xff0c;client_secret配…

将YYYY-MM-DD HH:mm:ss格式化为YYYY-MM-DD (星期一) 下午 ?点

分为凌晨、早上、中午、晚上 function formatDate(inputDate) {const date new Date(inputDate);date.setHours(date.getHours() - 1);const year date.getFullYear();const month date.getMonth() 1; // 月份从0开始const day date.getDate();let hours date.getHours(…

Spring为什么要用三级缓存解决循环依赖?

Spring为什么要用三级缓存解决循环依赖&#xff1f; 1. Spring是如何创建一个bean对象2. Spring三级缓存2.1 一级缓存&#xff1a;单例池&#xff0c;经历过完整bean生命&#xff0c;单例Bean对象2.2 二级缓存&#xff1a;提前暴露的Bean2.3 三级缓存&#xff1a;打破循环 3. S…

三年 Sparker 都不一定知道的算子内幕

一、如何在 mapPartitions 中释放资源 mapPartitions是一种对每个分区进行操作的转换操作&#xff0c;于常用的map操作类似&#xff0c;但它处理的是整个分区而不是单个元素。mapPartitions的应用场景适合处理需要在每个分区内批量处理数据的场景&#xff0c;通常用于优化性能…

AJAX 进阶 day4

目录 1.同步代码和异步代码 2.回调函数地狱和 Promise 链式调用 2.1 回调函数地狱 2.2 Promise - 链式调用 2.3 Promise 链式应用 3.async 和 await 使用 3.1 async函数和await 3.2 async函数和await_捕获错误 4.事件循环-EventLoop 4.1 事件循环 4.2 宏任务与微任务…

【有啥问啥】对比学习(Contrastive Learning,CL)的原理与前沿应用详解

对比学习&#xff08;Contrastive Learning&#xff0c;CL&#xff09;的原理与前沿应用详解 对比学习&#xff08;Contrastive Learning&#xff09;是自监督学习领域的关键方法之一&#xff0c;近年来因其在图像、文本和跨模态任务上的优越表现&#xff0c;受到了学术界和工…

【重学 MySQL】三十、数值类型的函数

【重学 MySQL】三十、数值类型的函数 基本函数角度与弧度互换函数三角函数指数与对数进制间的转换示例 基本函数 MySQL提供了一系列基本的数值函数&#xff0c;用于处理数学运算和数值转换。以下是一些常用的基本函数及其用法&#xff1a; 函数用法ABS(x)返回x的绝对值。SIGN…

Linux下文件下载中文乱码问题

最近做的一个项目中&#xff0c;本地打包到线上后&#xff0c;发现生成的文件中出现中文乱码&#xff0c;但在本地运行正常。经排查&#xff0c;文件输入输出流都指定了utf-8的编码格式&#xff0c;IDE的File Encodings也都是utf-8&#xff0c;Linux编码格式也是utf-8&#xff…

商务人士必备的精准翻译工具盘点

网易翻译是一款我外出游玩时候必备的翻译工具&#xff0c;最近没出去玩但是有更多的翻译需求了&#xff0c;为了方便在电脑上的操作我也找了不少翻译工具&#xff0c;这次一起分享给大家&#xff0c;看看哪款更得你的眼缘。 1.福昕在线翻译 链接直达&#xff1a;https://fany…

回归预测|基于灰狼优化正则化极限学习机的数据回归预测Matlab程序GWO-RELM 多特征输入单输出

回归预测|基于灰狼优化正则化极限学习机的数据回归预测Matlab程序GWO-RELM 多特征输入单输出 文章目录 一、基本原理1. 极限学习机&#xff08;ELM&#xff09;模型2. 灰狼优化算法&#xff08;GWO&#xff09;3. GWO-RELM回归预测流程总结 二、实验结果三、核心代码四、代码获…

C++——多线程编程(从入门到放弃)

进程&#xff1a;运行中的程序 线程&#xff1a;进程中的进程 线程的最大数量取决于CPU的核心数 一、将两个函数添加到不同线程中 demo&#xff1a;两个函数test01()和test02()&#xff0c;实现将用户输入的参数进行打印输出1000次 将这两个函数均放到独立的线程t1和t2中&…

【优化器】Optimizer——深度学习中的优化器是什么作用呢?

【优化器】Optimizer——深度学习中的优化器是什么作用呢&#xff1f; 【优化器】Optimizer——深度学习中的优化器是什么作用呢&#xff1f; 文章目录 【优化器】Optimizer——深度学习中的优化器是什么作用呢&#xff1f;1.什么是优化器&#xff1f;梯度下降法3. 常见的优化…

在typescript浏览器端中调用C++编写的函数,WebAssembly传递指针类型的参数,以及处理指针类型的返回值。

首先要在Cmake工程中的cmakelists.txt文件中引入Emscripten工具链&#xff1a; set(CMAKE_TOOLCHAIN_FILE "D:/CppPkg/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake")直接看C代码&#xff1a; #include <emscripten/emscripten.h> #i…

鸿蒙开发之ArkTS 基础六 对象

什么是对象的呢&#xff1f;就是描述物体的特征和行为&#xff0c;是可以存储多种数据的容器 对象的定义和使用 let 对象名称: 对象结构类型 值 通过interface 关键字来约定对象结构类型,语法结构如下&#xff1a; interface 对象名{ 属性1&#xff1a;类型 属性2&#…

11.01类的定义和对象的使用(练习)

类的定义 类名&#xff1a;手机(Phone) 成员变量&#xff1a;品牌(brand&#xff09;&#xff0c;价格&#xff08;price&#xff09; 成员方法&#xff1a;打电话(calL)&#xff0c;发短信&#xff08;sendMessage&#xff09; 调用类变量和方法

基于SpringBoot+Vue+MySQL的高校心理教育辅导系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着社会的快速发展&#xff0c;大学生群体面临着日益复杂的学习、生活及就业压力&#xff0c;心理健康问题日益凸显。传统的面对面心理咨询方式因时间、空间等限制&#xff0c;难以满足学生多样化的需求。因此&#xff0c;利用…