我学校的规则之一是使用“~”而不是“--”来合并参考文献引用列表中的页码。我尝试修改原始的 .bst 样式文件,但我对 biblatex 的语法还不熟悉。我发现定义页码默认行为的关键代码如下所示:
FUNCTION {n.dashify}
{ 't :=
""
{ t empty$ not }
{ t #1 #1 substring$ "-" =
{ t #1 #2 substring$ "--" = not
{ "--" *
t #2 global.max$ substring$ 't :=
}
{ { t #1 #1 substring$ "-" = }
{ "-" *
t #2 global.max$ substring$ 't :=
}
while$
}
if$
}
{ t #1 #1 substring$ *
t #2 global.max$ substring$ 't :=
}
if$
}
while$
}
答案1
给你:
FUNCTION { n.dashify }
{
't :=
""
{ t empty.or.unknown not }
{
t #1 #1 substring$ "-" =
{
t #1 #2 substring$ "--" = not
{ "\textasciitilde{}" *
t #2 global.max$ substring$ 't :=
}
{
{ t #1 #1 substring$ "-" = }
{
t #2 global.max$ substring$ 't :=
}
while$
"\textasciitilde{}" t * 't :=
}
if$
}
{
t #1 #1 substring$ *
t #2 global.max$ substring$ 't :=
}
if$
}
while$
}
未命名bst
语言使用逆波兰表示法,因此程序的逻辑不太容易理解。基本上,如果我们看到一个单独的-
,我们就用 代替它\textasciitilde{}
,如果我们看到一串-
,我们就删除它们并\textasciitilde{}
用 代替。
答案2
在文件中进行全局搜索和替换.bib
?
我认为更简单的方法是避免更改任何样式文件,只需在您拥有的.bst
任何文件中进行全局搜索和替换。虽然这更容易,但我认为如果其中有任何(长破折号),这不是一个好主意,所以要小心进行任何替换。(此外,我不确定这是否会很好地换行,并对此表示怀疑)。.bib
---
\begin{filecontents}{references.bib}
@article{author00,
title = {{A Title}},
author= {Person, Some},
journal={SIAM Journal on Something},
volume={10},
number={1},
pages={25\textasciitilde2587},
year={2011},
publisher={SIAM}
}
@article{author01,
title = {{A Title}},
author= {Person, Some},
journal={SIAM Journal on Something},
volume={10},
number={1},
pages={25$\sim$2587},
year={2011},
publisher={SIAM}
}
\end{filecontents}
\documentclass[11pt, a4paper, twoside]{extarticle}
\usepackage[numbers, sort&compress]{natbib} % Nice references.
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\bibliographystyle{unsrtnat}
\begin{document}
\noindent
\citet{author00} and \citet{author01}.
\bibliography{references}
\end{document}