我正在为提交给《数学生物学公报》的论文创建参考书目。我使用 custom-bib 创建了一个自定义 .bst 文件,但无法正确编号。我不确定我是否错过了 custom-bib 中的选项,是否需要对 custom-bib 进行一些不寻常的操作,或者是否必须在其他地方进行控制。
这是编号样式的当前/所需版本(其他一切都是正确的,抱歉“必需”中的图像质量较差)
当前的:
必需的:
我该如何改变这种状况?
答案1
删除参考书目中项目标签上的括号
要从参考书目中的项目标签中删除括号,只需重新定义\@biblabel
。它的原始定义是
% latex.ltx, line 6161:
\def\@biblabel#1{[#1]}
因此,您可以将其更改为\renewcommand
打印,而不是[<arg>]
:<arg>.
\makeatletter
\renewcommand\@biblabel[1]{#1.}
\makeatother
删除参考书目中的悬挂缩进
我们必须重新定义thebibliography
环境,它是一个\list
。为了方便起见,我检查了环境的定义asparaenum
,从paralist
包并在环境中重现长度thebibliography
(我们需要重新定义)。假设您正在使用article
类:
\makeatletter
\renewenvironment{thebibliography}[1]
{\section*{\refname}%
\@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}%
\list{\@biblabel{\@arabic\c@enumiv}}%
\@openbib@code
\usecounter{enumiv}%
\let\p@enumiv\@empty
\renewcommand\theenumiv{\@arabic\c@enumiv}%
\sloppy
\clubpenalty4000
\@clubpenalty \clubpenalty
\widowpenalty4000%
\sfcode`\.\@m
% We redefine the lenghts here
\setlength{\labelwidth}{0pt}
\setlength{\labelsep}{.5em}
\setlength{\leftmargin}{0pt}
\parsep\parskip
\setlength{\itemsep}{0pt}
\setlength{\topsep}{0pt}
\partopsep\parskip
\itemindent\parindent
\advance\itemindent\labelsep
}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}
\makeatother
以下是 MWE:
\documentclass{article}
\begin{filecontents}{\jobname.bib}
@article{Geddes:2003,
author = {Geddes, Chris D. and
Parfenov, Alex and
Gryczynski, Ignacy and
Lakowicz, Joseph R.},
title = {Luminescent Blinking from Silver Nanostructures},
journal = {The Journal of Physical Chemistry B},
volume = {107},
number = {37},
pages = {9989-9993},
year = {2003},
}
\end{filecontents}
\makeatletter
\renewcommand{\@biblabel}[1]{#1.}
% article.cls, line 570:
\renewenvironment{thebibliography}[1]
{\section*{\refname}%
\@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}%
\list{\@biblabel{\@arabic\c@enumiv}}%
\@openbib@code
\usecounter{enumiv}%
\let\p@enumiv\@empty
\renewcommand\theenumiv{\@arabic\c@enumiv}%
\sloppy
\clubpenalty4000
\@clubpenalty \clubpenalty
\widowpenalty4000%
\sfcode`\.\@m
% We redefine the lenghts here
\setlength{\labelwidth}{0pt}
\setlength{\labelsep}{.5em}
\setlength{\leftmargin}{0pt}
\parsep\parskip
\setlength{\itemsep}{0pt}
\setlength{\topsep}{0pt}
\partopsep\parskip
\itemindent\parindent
\advance\itemindent\labelsep
}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}
\makeatother
\begin{document}
\cite{Geddes:2003}
\bibliographystyle{plain}
\bibliography{\jobname}
\end{document}
输出结果如下:
答案2
我不认为“其他一切都是正确的”:
- 您的作者列表在第一作者之后缩写,而要求的版本并非如此。将
custom-bib
“MAX AUTHORS BEFORE ET AL”的答案从默认的 1 更改为至少 4,或将相应dbj
选项从mct-1
更改为至少mct-4
。 - 要求的版本在作者列表、年份和标题后使用逗号,而您的样式使用句号。将您的
custom-bib
答案更改为“节(块)之间的标点符号:”c
,或将相应选项添加blk-com
到dbj
文件。