修复使用 AMSALPHA 时参考书目关键字边距的问题

修复使用 AMSALPHA 时参考书目关键字边距的问题

我在文档末尾使用以下参考书目代码:

\documentclass[...]{book}
...
\begin{singlespace}
\begin{footnotesize}
\addcontentsline{toc}{chapter}{References}
\bibliographystyle{amsalpha}
\renewcommand{\bibname}{References}
\bibliography{thesis}
\end{footnotesize}
\end{singlespace}

但是,我想稍微加宽一下引文关键字和完整条目之间的边距,因为有些引文关键字太大,突出在描述中。例如:

替代文本


更新:使用列夫的答案,我几乎让它工作了:

替代文本

但现在左方括号始终右对齐,并且在参考键中有一个空格。


附加问题:如果可能的话,amsalpha似乎也只在作者数量大于 4 时使用 + 后缀(例如 [SAJ+02])。是否可以将阈值降低到 3?

答案1

我猜问题在于amsalpha.bst使用 bibtexwidth$原语来计算最长的标签。但这个计算是基于“使用 1987 年 6 月的 cmr10”。如果你使用具有不同度量标准的字体,那么这并不总是有效。有多种方法可以解决这个问题,最简单的方法可能是编辑 .bbl 文件行\begin{thebibliography}{longestlabel}。一个“更好”的解决方案是使用等式包。例如,使用纳特比布这就像在序言中写到的那样简单:

\usepackage{eqparbox}
\usepackage[numbers]{natbib}
\renewcommand*{\bibnumfmt}[1]{\eqparbox[t]{bblnm}{[#1]}}

要更改缩写前的作者数量,您可以编辑amsalpha.bst。 该format.lab.names功能似乎是执行此操作的地方。

答案2

调整列表边距:

标签的宽度和左边距应由最宽的标签决定。但您可以自行指定。

要检查发生了什么,你可以查看由 BibTeX 创建的扩展名为 的文件.bbl。在那里你会看到如下一行:

\begin{thebibliography}{WYWB09}

WYWB09是标签宽度的模型。该参数可以更改,您甚至可以在序言中准备好它:

\let\stdthebibliography\thebibliography
\let\stdendthebibliography\endthebibliography
\renewenvironment*{thebibliography}[1]{%
  \stdthebibliography{WYWBJ07}}
  {\stdendthebibliography}

这里我使用了一种常见的解决方法:我保存了原始的 thebibliography 环境并重新定义它。重新定义使用原始环境命令,但使用固定标签。您可以选择所需的标签,或者仅将虚拟文本声明为占位符,这样您就可以调整边距。

关于几位作者:

查看文件 amsalpha.bst。你可以这样找到它:

kpsewhich amsalpha.bst

在命令提示符下,位置可能类似于C:\texlive\2009\texmf-dist\bibtex\bst\amscls\amsalpha.bstC:\Program Files\MiKTeX 2.8\bibtex\bst\amscls\amsalpha.bst或类似,具体取决于您的安装。在该文件中,您将找到一个名为 的函数format.lab.names,这可能是所需修改的位置。简单一看可能会发现这种修改有时有点困难。我宁愿不加修改地使用该样式,因为许多作者都这样使用它,只要没有非常重要的理由偏离它。

答案3

关于您的奖励问题(降低了作者门槛):Stefan 已经提供了部分解决方案。复制amsalpha.bst到您的工作目录。在副本中,搜索字符串(出现两次)

numnames #4 >

并将两个事件替换为

numnames #3 >

相关内容