问题
在有些期刊投稿时,需要使用作者+年份的参考文献格式来写。如下所示:
从Springer官网下载的LATEX格式(https://www.springernature.com/gp/authors/campaigns/latex-author-support)编译报错,且无法显示参考文献或参考文献的年份在最后。
解决步骤
1. 在sn-article.tex中找到如下语句:
将这行注释,并将上一行取消注释
2. 复制bst/sn-basic.bst,并粘贴到与.tex同一级下
3. 查找刚粘贴的sn-basic.bst文件里的两个SORT并注释!(1708行和1761行)
% SORT
STRINGS { last.label next.extra }
INTEGERS { last.extra.num number.label }
FUNCTION {initialize.extra.label.stuff}
{ #0 int.to.chr$ 'last.label :=
"" 'next.extra :=
#0 'last.extra.num :=
#0 'number.label :=
}
FUNCTION {forward.pass}
{ last.label label =
{ last.extra.num #1 + 'last.extra.num :=
last.extra.num int.to.chr$ 'extra.label :=
}
{ "a" chr.to.int$ 'last.extra.num :=
"" 'extra.label :=
label 'last.label :=
}
if$
number.label #1 + 'number.label :=
}
FUNCTION {reverse.pass}
{ next.extra "b" =
{ "a" 'extra.label := }
'skip$
if$
extra.label 'next.extra :=
extra.label
duplicate$ empty$
'skip$
{ "{\natexlab{" swap$ * "}}" * }
if$
'extra.label :=
label extra.label * 'label :=
}
EXECUTE {initialize.extra.label.stuff}
ITERATE {forward.pass}
REVERSE {reverse.pass}
FUNCTION {bib.sort.order}
{ sort.label
" "
*
year field.or.null sortify
*
" "
*
title field.or.null
sort.format.title
*
#1 entry.max$ substring$
'sort.key$ :=
}
ITERATE {bib.sort.order}
% SORT
4. 在sn-jnl.cls中,找到如下语句:
\if@Spr@basic@refstyle%
\if@Numbered@refstyle%
\usepackage[numbers,sort&compress]{natbib}%
\gdef\NumBib{YES}%
\else%
\usepackage[authoryear]{natbib}%
\gdef\NumBib{NO}%
\fi%
\bibliographystyle{sn-basic}%
\setlength{\bibsep}{1em}%
\def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\fi%
注释其中以下语句
% \usepackage[authoryear]{natbib}%
% \gdef\NumBib{NO}%
并替换为:
\usepackage[authoryear]{natbib}%
\gdef\NumBib{YES}%
完整如下:
\if@Spr@basic@refstyle%
\if@Numbered@refstyle%
\usepackage[numbers,sort&compress]{natbib}%
\gdef\NumBib{YES}%
\else%
% \usepackage[authoryear]{natbib}%
% \gdef\NumBib{NO}%
\usepackage[authoryear]{natbib}%
\gdef\NumBib{YES}%
\fi%
\bibliographystyle{sn-basic}%
\setlength{\bibsep}{1em}%
\def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\fi%
5. 在tex文件的\end{document}前面添加
% 参考文献表号从[1]改为1.
\makeatletter
\renewcommand\@biblabel[1]{#1.}
\makeatother
\bibliography{sn-bibliography}