简单Python函数将SCI论文中WORD版参考文献改为LaTeX格式
程序员文章站
2023-12-25 14:11:33
...
投出的某sci论文被reviewer指出公式的format不大行,其实自己之前在用word调的时候也发现了这个问题,于是打算改头换面,使用latex来重新写一遍。而LaTeX的引用格式和word是不一样的(至少调格式的方式不同),bibtex
是很常用的一种方式了,但是出于某些原因十分赶时间,对文中五十余篇论文去重新找各自的bibtex格式,然后再挨个照着之前word版补充一些东西,实在太费时间。那么如何“废物利用”呢,即将原来的word版的已经写好的内容直接copy过来呢?
word版的内容拿过来自然没问题,但是格式就得调,而一个个调格式显然也是效率很低的行为,因而考虑使用python写个程序进行自动化操作。
首先,不建议大家使用这种方法。这是因为一我挺赶时间的,二是之前word版已经写好了,参考文献基本上不会再改动。更建议使用bibtex。
其次,同样由于这只是临时使用的简单脚本且赶时间,就没有去认真设计变量名,代码可读性不强,不过不大长应该不影响理解叭。将就看看。
最后,在介绍函数使用方法之前,需要提醒一下,下面代码考虑的情况并不完整,因此使用其生成latex版参考文献后仍需要人工验证一遍其格式是否正确(虽然不是100%正确但是也省了很多重复劳动了)。
示例输入:
t = '[1] B. Ji, Y. Han, P. Li, et al., “Research on secure transmission performance of electric vehicles under Nakagamim channel,” IEEE Trans. Intell. Transp. Syst., pp 1-11, Nov. 2020.'
get_output(0, t)
输出为:
\bibitem{[1]}
B. Ji, Y. Han, P. Li, \emph{et al}., ``Research on secure transmission performance of electric vehicles under Nakagamim channel,"\emph{ IEEE Trans. Intell. Transp. Syst.}, pp 1-11, Nov. 2020.
作用为:
- 修改引号。latex中的引号为
``xxx"
,而非word中的"xxx"
- 设置斜体。比如将
et al
设置为斜体,将期刊名设置为斜体,或者如果是会议的话,将in
之后的会议名设为斜体。 - 拼接为latex中引用格式,包含
\bibitem{[idx]}
,其中idx为函数输入给出,可自定义。另外加上了\n,\t
等格式控制。
贴上代码:
def get_output(idx, t):
# 用正则,去掉开头序号,保存于t内
pt = re.compile(r'\[\d+\](\s|\t)')
t = ''.join(re.split(pt, t))
# 居然有中文引号...
t = t.replace("“", '"')
t = t.replace("”", '"')
# 为其添加样式
output = '\t' + r'\bibitem{' + "[" + str(idx + 1) + "]" + '}'
output += '\n'
# 添加斜体
tt = t.split('"')
if len(tt) >= 3:
g = tt[0] + '"'
g += tt[1] + '"'
ttt = tt[2].split(',', 1)
if 'in ' in ttt[0]:
tttt = ttt[0].split('in ', 1)
g += tttt[0] + 'in '
g += r'\emph{' + tttt[1] + r'}' + ','
else:
g += r'\emph{' + ttt[0] + r'}' + ','
g += ttt[1]
output += g
else:
output += '\t' + t
output = output.replace('et al', r'\emph{et al}')
output = output.replace(r'&', r'\&')
output = output.replace(r'"', r'``',1)
return output