BibTex:修改 MR 编号周围的标点符号

BibTex:修改 MR 编号周围的标点符号

我使用 BibTeX,使用类 amsart,对于参考书目样式,我使用 amsplain。此外,我从 Mathematical Reviews 下载引文。

我的问题如下:目前,在参考文献末尾,BibTeX 在 MR 编号前添加一个句号,后面不添加任何内容。但是,我更喜欢在 MR 编号前添加逗号,在 MR 编号后添加句号。因此,不要使用例如:

Michael B. Green、John H. Schwarz 和 Edward Witten,《超弦理论》。第 1 卷,第二版,《剑桥数学物理专著》,剑桥大学出版社,剑桥,1988 年,导言。MR952374

我希望有:

Michael B. Green、John H. Schwarz 和 Edward Witten,《超弦理论》。《剑桥数学物理专著》第 1 卷,第二版,剑桥大学出版社,剑桥,1988 年,简介,MR952374。

我尝试修改 amsplain,但只收到错误消息。我应该使用什么代码才能获得所需的效果?


在我的 BibTeX 文件(test.bib)中,我有以下条目:

@book {MR952374,
AUTHOR = {Green, Michael B. and Schwarz, John H. and Witten, Edward},
TITLE = {Superstring theory. {V}ol. 1},
SERIES = {Cambridge Monographs on Mathematical Physics},
EDITION = {Second},
NOTE = {Introduction},
PUBLISHER = {Cambridge University Press, Cambridge},
YEAR = {1988},
PAGES = {x+470},
ISBN = {0-521-35752-7},
MRCLASS = {81-02 (81E30 81Exx 83-02 83E30 83Exx)},
MRNUMBER = {952374},
}

在我的 .tex 文件中,我有以下内容:

\documentclass[11pt,reqno]{amsart}    
\usepackage[T1]{fontenc}    
\usepackage{lmodern}    
\usepackage[english]{babel}

\begin{document}

\cite{MR952374}    

\bibliographystyle{amsplain}    
\bibliography{test}

\end{document}

在此先感谢您的帮助。

答案1

这个相当棘手(阅读:乐趣)。

(部分)解决问题的一种方法是重新定义\MR用于amsplain排版MR数字的宏:

\long\def\MR#1{%
  \relax
  \ifhmode
    \unskip
    \spacefactor 3000
    \space
  \fi%              ↓ dot added here
  MR~\MRhref{#1}{#1}.}

(与原始定义相同,但末尾带有句号)。

这种方法的问题在于引用的结尾将被排版为:

Press, Cambridge, 1988, Introduction. MR952374.

如果您不介意“简介”后面的句号,那么这就是要走的路。下一种方法有点混乱……


TeX 不提供(据我所知 --- 如果我错了请告诉我)可能性联合国-写点什么,所以如果数字存在,就无法删除“介绍”后面的逗号MR。所以我们必须改变 BeaST!

在第 300 行左右amsplain.bst我们有两个函数:

FUNCTION {output.nonempty.mrnumber}

正如其名称所示,它将输出一个非空MR数字,并且:

FUNCTION {fin.entry}

这样就完成了每个参考书目条目。我们需要更改两件事:

  1. 制作fin.entry 不是在条目末尾写一个句号。

  2. 如果有或没有数字output.nonempty.mrnumber则写入。, MR<number>..MR

修改后的功能为:

FUNCTION {output.nonempty.mrnumber}
{ duplicate$ missing$
    { pop$ "" }
    'skip$
  if$
  duplicate$ empty$
    { pop$ "." write$ }
    { ", \MR{" swap$ * "}." * write$ }
  if$
}

FUNCTION {fin.entry}
{ write$
  mrnumber output.nonempty.mrnumber
  newline$
}

您只需将 复制amsplain.bst到您的工作目录并替换output.nonempty.mrnumberfin.entry上述版本即可。

现在引用已正确排版,并且在没有MR数字时也能正常工作:

在此处输入图片描述

相关内容