使用多书目格式参考文献列表存在问题

使用多书目格式参考文献列表存在问题

我正在使用 multibib 包来区分不同类型的参考文献。在我的文档中,第一个参考文献列表中有大约 50 个参考文献,第二个参考文献列表中有大约 70 个参考文献。参考文献的编号工作正常,但格式会随着参考文献编号 100 而改变。我创建了一个 MWE 来隔离主要问题:最大标签长度似乎仅由一个参考文献列表中的元素数量提取。

在这个例子中,一切正常,因为我在第二个参考文件中有 100 个参考:

\documentclass[12pt]{scrbook}

\usepackage{cite}
\usepackage{multibib}
\usepackage[fixlanguage]{babelbib}
\usepackage[german]{babel}
\selectbiblanguage{german}

\newcites{mine}{FooBar}

\begin{document}

\citemine{A1}
\cite{A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,A18,A19,A20,A21,A22,A23,A24,A25,A26,A27,A28,A29,A30,A31,A32,A33,A34,A35,A36,A37,A38,A39,A40,A41,A42,A43,A44,A45,A46,A47,A48,A49,A50,A51,A52,A53,A54,A55,A56,A57,A58,A59,A60,A61,A62,A63,A64,A65,A66,A67,A68,A69,A70,A71,A72,A73,A74,A75,A76,A77,A78,A79,A80,A81,A82,A83,A84,A85,A86,A87,A88,A89,A90,A91,A92,A93,A94,A95,A96,A97,A98,A99,A100}

\bibliographystylemine{babplain-Customized}
\bibliographymine{references}

\bibliographystyle{babplain-Customized}
\bibliography{references}

\end{document}

结果如下这

在这个例子中我遇到了一个问题,因为第二个参考文件中的参考文献少于 100 个:

\documentclass[12pt]{scrbook}

\usepackage{cite}
\usepackage{multibib}
\usepackage[fixlanguage]{babelbib}
\usepackage[german]{babel}
\selectbiblanguage{german}

\newcites{mine}{FooBar}

\begin{document}

\citemine{A1}
\cite{A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,A18,A19,A20,A21,A22,A23,A24,A25,A26,A27,A28,A29,A30,A31,A32,A33,A34,A35,A36,A37,A38,A39,A40,A41,A42,A43,A44,A45,A46,A47,A48,A49,A50,A51,A52,A53,A54,A55,A56,A57,A58,A59,A60,A61,A62,A63,A64,A65,A66,A67,A68,A69,A70,A71,A72,A73,A74,A75,A76,A77,A78,A79,A80,A81,A82,A83,A84,A85,A86,A87,A88,A89,A90,A91,A92,A93,A94,A95,A96,A97,A98,A99,A100}

\bibliographystylemine{babplain-Customized}
\bibliographymine{references}

\bibliographystyle{babplain-Customized}
\bibliography{references}

\end{document}

结果如下这

我的辅助文件看起来不错,据我对 bst 文件的理解,我预计最长的标签(即 100)会被识别。但从 MWE 来看,条目似乎是经过计数来确定最长标签的。

有谁知道如何欺骗 bibtex 来获得漂亮且干净的参考列表格式吗?

您将找到 bst 文件这里

您将找到参考文件这里

答案1

好的,我自己找到了解决方案。如果有人遇到同样的问题,以下是我的解决方案:

首先,我发现使用 plain 时会出现问题,但使用 mblain 时一切正常。关于标签宽度的确定,差异如下

在 plain.bst 中它显示

FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
  number.label #1 + 'number.label :=
  label width$ longest.label.width >
    { label 'longest.label :=
      label width$ 'longest.label.width :=
    }
    'skip$
  if$
}

在 mbplain.bst 中,它读取

FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
  number.label #1 + 'number.label :=
  label width$ longest.label.width >
  label width$ longest.label.width =   %% added to count the labels
  or                                   %% added to count the labels
  { label 'longest.label :=
    label width$ 'longest.label.width :=
  }
    'skip$
    if$
}

虽然 plain.bst 计算了其中一个参考书目中的实际条目数,但最终结果为两位数。mbplain.bst 仅搜索最长的标签,即三位数。

因此,在我的 bst 文件中,我只需用第二个版本替换函数 longest.label.pass ,一切就正常运行。

相关内容