修改 .bst 文件以消除参考列表中的括号

修改 .bst 文件以消除参考列表中的括号

我需要一个格式的参考列表

1. ...
2. ...

代替

[1] ...
[2] ...

我想知道在 .bst 文件中要更改什么,例如自然杂志,来实现这一目标。

我想做到这一点,而无需调用额外的包,也不需要在序言中添加任何新的定义,因为这种方法已经被探索过了这里

答案1

文档book类为环境提供了以下默认设置thebibliography

\newenvironment{thebibliography}[1]
     {\chapter*{\bibname}%
      \@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}%
      \list{\@biblabel{\@arabic\c@enumiv}}%
           {\settowidth\labelwidth{\@biblabel{#1}}%
            \leftmargin\labelwidth
            \advance\leftmargin\labelsep
            \@openbib@code
            \usecounter{enumiv}%
            \let\p@enumiv\@empty
            \renewcommand\theenumiv{\@arabic\c@enumiv}}%
      \sloppy
      \clubpenalty4000
      \@clubpenalty \clubpenalty
      \widowpenalty4000%
      \sfcode`\.\@m}
     {\def\@noitemerr
       {\@latex@warning{Empty `thebibliography' environment}}%
      \endlist}

文档类还为和book提供了以下定义:\bibindent\bibname

\newdimen\bibindent
\setlength\bibindent{1.5em}
\newcommand\bibname{Bibliography}

该宏\@biblabel在 LaTeX 内核中定义如下(参见latex.ltx):

\def\@biblabel#1{[#1]}

\list和指令\endlist也在 LaTeX 内核中定义。

除非加载了引文管理包(例如natbib,、harvardcite,它们提供了这些宏的定义),否则文档中将使用默认定义。


让我们检查一下的第一个参数\list

\@biblabel{\@arabic\c@enumiv}

您大概可以猜到,这\@arabic\c@enumiv会生成计数器的阿拉伯数字表示形式enumiv,并将\@biblabel{...}该数字括在方括号中 - 当然,除非\@biblabel手动或通过加载合适的 LaTeX 包进行了更改。

总而言之,如果你想要放置在 bib 项目之前的数字“标签”不是显示为[1][2]等,如果您不想加载合适的包(例如natbib)来处理这项工作,则需要\@biblabel“手动”修改宏。这就是您在帖子中链接的答案中所做的:

\makeatletter
\renewcommand\@biblabel[1]{#1.}
\makeatother

最后,正如书目naturemag风格不是修改thebibliography环境,编辑naturemag.bst不会让你实现你所陈述的格式化目标。

相关内容