书目编号样式

书目编号样式

我正在为提交给《数学生物学公报》的论文创建参考书目。我使用 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

我不认为“其他一切都是正确的”:

  1. 您的作者列表在第一作者之后缩写,而要求的版本并非如此。将custom-bib“MAX AUTHORS BEFORE ET AL”的答案从默认的 1 更改为至少 4,或将相应dbj选项从mct-1更改为至少mct-4
  2. 要求的版本在作者列表、年份和标题后使用逗号,而您的样式使用句号。将您的custom-bib答案更改为“节(块)之间的标点符号:” c,或将相应选项添加blk-comdbj文件。

相关内容