我已经与此斗争了几个小时了......
我的导师要求我以某种风格生成我需要撰写的文章的参考书目:
作者 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 文件,如下所示:
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$ }
在现有函数中
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$
}