在 bibtex 输出中显示引用类型,“书籍”、“期刊”等

在 bibtex 输出中显示引用类型,“书籍”、“期刊”等

我正在使用unsrt.bstbib 样式并希望对其进行修改,以便在输出中它以条目类型开头:

[1] 書籍:其他等......

[2] 文章:AN其他等等....

但是.bst无论我在那里放了“BOOK: ”条目,我都会破坏文件。有什么想法吗?我只使用一小部分引用类型,因此可以轻松地逐个修改,.bst而不是以一般方式修改。如果我知道如何做的话。

答案1

对于unsrt.bst以下食谱来说有效。

  1. unsrt.bst在您的机器上找到。您可以通过kpsewhich unsrt.bst在命令行/终端中输入来执行此操作。或者,从 CTAN 获取该文件的副本http://mirrors.ctan.org/biblio/bibtex/base/unsrt.bst

  2. 将文件复制到 TeX 可以找到的位置。文档目录就可以了。另请参阅https://texfaq.org/FAQ-inst-wlcf

  3. 将文件重命名为unsrt-typed.bst(许可证unsrt.bst要求您在修改文件时更改名称)

  4. 查找FUNCTION {output.bibitem}(ll. 85-93) 并将完整函数定义替换为

    FUNCTION {output.bibitem}
    { newline$
      "\bibitem{" write$
      cite$ write$
      "}" write$
      newline$
      type$ "u" change.case$ ":" * write$
      newline$
      ""
      before.all 'output.state :=
    }
    

    也就是说,添加两行

      type$ "u" change.case$ ":" * write$
      newline$
    

    请注意,这"u" change.case$给了我们全部大写,如果你想要全部小写,你只需说

      type$ ":" * write$
    

    如果你想应用 LaTeX 宏,你可以说

      "\textbf{" type$ * "}:" * write$
    
  5. 在文件顶部添加一条包含您的姓名、当前日期和更改的简短描述的评论。

  6. 在您的文档中使用\bibliographystyle{unsrt-typed}而不是。\bibliographystyle{unsrt}

作为步骤 1 至 5 的替代方案,您可以在以下位置获取该文件的修补版本https://gist.github.com/moewew/e0c609d7162524a9f82d74cff14bdc61

然后

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{sigfridsson,
  author  = {Sigfridsson, Emma and Ryde, Ulf},
  title   = {Comparison of methods for deriving atomic charges from the
             electrostatic potential and moments},
  journal = {Journal of Computational Chemistry},
  year    = 1998,
  volume  = 19,
  number  = 4,
  pages   = {377-395},
  doi     = {10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P},
}
@book{nussbaum,
  author    = {Nussbaum, Martha},
  title     = {Aristotle's \enquote{De Motu Animalium}},
  year      = 1978,
  publisher = {Princeton University Press},
  address   = {Princeton},
}
@phdthesis{geer,
  author  = {de Geer, Ingrid},
  title   = {Earl, Saint, Bishop, Skald~-- and Music:
             The {Orkney Earldom} of the Twelfth Century.
             {A} Musicological Study},
  school  = {Uppsala Universitet},
  year    = 1985,
  address = {Uppsala},
}
\end{filecontents}


\begin{document}
\cite{sigfridsson,nussbaum,geer}
\bibliographystyle{unsrt-typed}
\bibliography{\jobname}
\end{document}

生产

参考书目采用全大写形式:例如“文章:Emma Sigfridsson 和 Ulf Ryde。从静电势和电矩推导原子电荷的方法比较。计算化学杂志,19(4):377–395, 1998。”


一个更简单的方法是添加

"<TYPE>: " write$

output.bibitem在每种类型之后FUNCTION

文章函数将会显示

FUNCTION {article}
{ output.bibitem
  "ARTICLE: " write$
  format.authors "author" output.check
  new.block
  format.title "title" output.check
  new.block
  crossref missing$
    { journal emphasize "journal" output.check
      format.vol.num.pages output
      format.date "year" output.check
    }
    { format.article.crossref output.nonnull
      format.pages output
    }
  if$
  new.block
  note output
  fin.entry
}

但显然这需要做更多工作。参见https://gist.github.com/moewew/e7e53020544f16d3db619ca8b33f1896。从好的方面来说,您在输出时更加灵活,因为您不必依赖于type$,它只会为您提供正式的 BibTeX 条目类型。(article有人可能想说“期刊文章”等。)


当然,biblatex这些事情不需要操作.bst文件:如何标记书目项目、书籍和文章等?

相关内容