答案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
,、harvard
或cite
,它们提供了这些宏的定义),否则文档中将使用默认定义。
让我们检查一下的第一个参数\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
不会让你实现你所陈述的格式化目标。