是否可以修改JHEP 书目格式以简单的方式显示书目条目,按字母顺序排列,而不是基于在正文中的首次出现?
(附录)是否可以以相同的方式添加一个函数,如果重复则打印一条长水平线-----而不是作者姓名,就像 amsplain.bst 样式所做的那样?
答案1
参考书目样式JHEP
似乎是古老unsrt
样式的轻微修改版本。要启用按字母顺序排列条目,您应该进行JHEP.bst
如下修改。(附言:我不确定此过程是否满足您的目标,即“以简单的方式”进行修改。但是,我已经尝试了代码,它似乎有效!)
复制该文件
JHEP.bst
。将该副本称为JHEPsort.bst
。(不要直接编辑原始文件。)在文本编辑器中打开文件
JHEPsort.bst
。你用来编辑 tex 文件的编辑器就可以了。找到线条
MACRO {pr} {"Phys. Rev."} READ STRINGS { longest.label }
在此文件中。提示:在我的此文件副本中,此摘录从 l. 1048 开始。
插入以下 145 行左右之间线
READ
和线STRINGS { longest.label }
:FUNCTION {sortify} { purify$ "l" change.case$ } INTEGERS { len } FUNCTION {chop.word} { 's := 'len := s #1 len substring$ = { s len #1 + global.max$ substring$ } 's if$ } FUNCTION {sort.format.names} { 's := #1 'nameptr := "" s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { nameptr #1 > { " " * } 'skip$ if$ s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := nameptr numnames = t "others" = and { "et al" * } { t sortify * } if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ } FUNCTION {sort.format.title} { 't := "A " #2 "An " #3 "The " #4 t chop.word chop.word chop.word sortify #1 global.max$ substring$ } FUNCTION {author.sort} { author empty$ { key empty$ { "to sort, need author or key in " cite$ * warning$ "" } { key sortify } if$ } { author sort.format.names } if$ } FUNCTION {author.editor.sort} { author empty$ { editor empty$ { key empty$ { "to sort, need author, editor, or key in " cite$ * warning$ "" } { key sortify } if$ } { editor sort.format.names } if$ } { author sort.format.names } if$ } FUNCTION {author.organization.sort} { author empty$ { organization empty$ { key empty$ { "to sort, need author, organization, or key in " cite$ * warning$ "" } { key sortify } if$ } { "The " #4 organization chop.word sortify } if$ } { author sort.format.names } if$ } FUNCTION {editor.organization.sort} { editor empty$ { organization empty$ { key empty$ { "to sort, need editor, organization, or key in " cite$ * warning$ "" } { key sortify } if$ } { "The " #4 organization chop.word sortify } if$ } { editor sort.format.names } if$ } FUNCTION {presort} { type$ "book" = type$ "inbook" = or 'author.editor.sort { type$ "proceedings" = 'editor.organization.sort { type$ "manual" = 'author.organization.sort 'author.sort if$ } if$ } if$ " " * year field.or.null sortify * " " * title field.or.null sort.format.title * #1 entry.max$ substring$ 'sort.key$ := } ITERATE {presort} SORT
如果你好奇这段代码是从哪里来的:我当然不是自己创建的!相反,我从书目样式文件中复制了它
plain.bst
。将文件保存
JHEPsort.bst
到包含主 tex 文件的目录或 BibTeX 搜索的目录中。如果选择第二个选项,您可能需要以适合您的 TeX 发行版的方式更新 TeX 发行版的文件名数据库。通过提供说明开始使用新的书目样式
\bibliographystyle{JHEPsort}
而不是
\bibliographystyle{JHEP}
。请确保再运行 LateX、BibTeX 和 LaTeX 两次,以便所有更改都完全传播。
祝您 BibTeX 愉快!