Perpage 在参考书目后期重置

Perpage 在参考书目后期重置

我正在使用自定义 bst 文件,它在 bbl 文件中生成如下代码:

\bibitem[Fodor(1981)]{Fodor:Representations}
\stepcounter{bibitem}
% \theperpage \lastpage % debugging code 
  \ifthenelse{\equal{\theperpage}{\lastpage}}
  {\pageswitchfalse}{\pageswitchtrue}\ifthenelse{\isodd{0\theperpage}}
  {\rule[0.5ex]{2em}{1pt}} {\ifpageswitch{Fodor, J.}\else
  \rule[0.5ex]{2em}{1pt}\fi}\let\lastpage=\theperpage{} 
  % \theperpage \lastpage % debugging code 
  (1981).
\newblock {\em Representations}.
\newblock Cambridge MA, MIT Press.

这样做的目的是 (i) 当作者与上一个条目中的作者相同时,打印规则而不是作者姓名,但 (ii) 如果条目出现在偶数页的顶部,则重新打印作者姓名。(我从 comp.text.tex 上的很多人那里得到了关于此代码的帮助。)

在用于以前的图书项目(十年前)时,此代码运行良好。现在它失败了。第一个条目没有重新打印作者姓名,而是第二个条目重新打印了作者姓名。因此,我得到了第一个条目(在偶数页上)的规则,然后是第二个条目(如果有的话)中的名字。

问题是每页计数器重置得比较晚。如果我激活调试代码,它会打印出以前的页面,而不是当前的每页计数器随即更新该条目已完成,下一个条目将打印作者的姓名,因为 \equal 测试现在失败了。

我使用 natbib 是因为这是一些论文的集合,其中一些论文相当古老,然后使用 natbib 编写。我不想把所有内容都改成 biblatex,但我很好奇这个问题在那里是否更容易解决。

谢谢你的帮助。

相关内容