仅显示参考书目中页面范围的起始页

仅显示参考书目中页面范围的起始页

我已经与此斗争了几个小时了......

我的导师要求我以某种风格生成我需要撰写的文章的参考书目:

作者 1;作者 2,期刊名称体积,页码,(年份)

其中卷数、页码和年份均为数字(页码仅为文章的起始页)

对于章节我需要:

作者1;作者 2,在書名,页面编辑:编辑 1;编辑 2;(出版商、城市、年份)。

再次强调,年份是数字,页码是起始页

最后,书籍也遵循同样的逻辑

编辑 1;编辑 2,書名,(出版商、城市、年份)。

我尝试过这样做,makebst但它坚持使用页面范围。我尝试在线搜索bst文件,但我找到的只是没有示例的列表。我在哪里可以找到带有示例的列表或bst文件生成器?

我也考虑过切换,biblatex但找不到任何明确的概念来biblatex控制引用样式。

答案1

这是一个使用的解决方案比布拉特克斯。请注意,\mkfirstpage用作\mkpageprefix后处理器,而不是简单地嵌套这些命令;有关详细信息,请参阅 biblatex 手册第 4.6.4 节。

\documentclass{article}

\usepackage{biblatex}

\DeclareFieldFormat{pages}{\mkfirstpage[{\mkpageprefix[bookpagination]}]{#1}}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@article{Bli74,
  author = {Blinder, Alan S.},
  year = {1974},
  title = {The economics of brushing teeth},
  journaltitle = {Journal of Political Economy},
  volume = {82},
  number = {4},
  pages = {887--891},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\nocite{*}

\begin{document}

\printbibliography

\end{document}

在此处输入图片描述

答案2

除其他外,您指出:

我尝试通过 makebst 来做到这一点,但它坚持使用页面范围。

这很奇怪:当我调用 makebst 程序(latex makebst从命令行)并按照提示操作时,我最终遇到了这个问题

PAGE NUMBERS:
(*) Start and stop page numbers given
(f) Only start page number
  Select:

请注意,您必须键入f才能调用非默认选项。此问题紧接在 YEAR IN JOURNAL SPECIFICATION 问题之后,紧接在 LARGE PAGE NUMBER 问题之前。

如果您无法重新运行 makebst 程序来创建符合您(或者您的顾问)喜好的 bst 文件,您也可以编辑现有的 bst 文件,如下所示:

  1. format.pages在 bibtex 函数和之间插入以下 bibtex 函数format.journal.pages(这些函数在 bst 文件中的具体位置可能有所不同):

    FUNCTION {first.page}
    { 't :=
      ""
        {  t empty$ not t #1 #1 substring$ "-" = not and }
        { t #1 #1 substring$ *
          t #2 global.max$ substring$ 't :=
        }
      while$
    }
    
  2. 在现有函数中format.journal.pages,将以下行替换

    n.dashify

    first.page

我相信这也应该能起到作用。祝您 (Bib)TeXing 愉快!

答案3

如果记忆不错的话,页面范围是 bib 文件中的单个条目。以下面的条目为例。

@article{Chuang1997,
    author = {Chuang, Isaac and Nielsen, Michael A.},
    day = {1},
    doi = {10.1080/09500349708231894},
    issn = {0950-0340},
    journal = {Journal of Modern Optics},
    month = nov,
    number = {11},
    pages = {2455--2467},
    publisher = {Taylor \& Francis},
    title = {Prescription for experimental determination of the dynamics of a quantum black box},
    url = {http://dx.doi.org/10.1080/09500349708231894},
    volume = {44},
    year = {1997}
}

不幸的是,实现您想要的简单方法是逐个条目处理 bib 文件以删除双破折号和第二页。或者您可以使用 sed 相当轻松地完成此操作。我在我的一个 bash 脚本中使用了下面的方法,如果您有一个格式良好的 bibtex 库,它可能会满足您的需求。

sed -e 's/pages = {\(.*\)-.*--.*-.*},/pages = {\1},/' <input_bibtex_file.bib >output.bib

不过,距离我写这篇文章已经有一段时间了。否则,坚持使用 makebst 是个好主意。我把它用于我的论文,并手动编辑了样式文件以添加 DOI 链接。

补充:查看我曾经构建的 bst 文件,这可能会满足您的要求。它只抓取第一页。但不保证,其他符号(如“+”)可能会保留。

FUNCTION {first.page}
{ 't :=
  ""
    {  t empty$ not t #1 #1 substring$ "-" = not and }
    { t #1 #1 substring$ *
      t #2 global.max$ substring$ 't :=
    }
  while$
}

FUNCTION {format.journal.pages}
{ pages duplicate$ empty$ 'pop$
    { swap$ duplicate$ empty$
        { pop$ pop$ format.pages }
        {
          " " *
          swap$
          first.page
          "pages" bibinfo.check
          *
        }
      if$
    }
  if$
}

相关内容