我使用的natbib
是作者年份引用样式和自定义参考样式(.bst
我用 创建的自定义参考样式(文件)custom-bib
。当然,该参考样式文件也是以作者年份为导向的。
我不是.bst
文件方面的专家。我用custom-bib
对我来说很完美,但有两种情况可以(也应该)改进:
- 条目无年份和
- 条目无作者,还有一个不太重要的改进:
- 条目有一个 URL(记录在案)但是不是在线网站。
.bst
我在这里复制了我的 MWE(可能不是那么小)以及我的文件的链接:
\begin{filecontents}{mybib.bib}
@book{GAMSCPLEX,
publisher = {GAMS Development Corporation},
title = {{GAMS/CPLEX} 10 Solver Manual},
url = {http://www.gams.com/dd/docs/solvers/cplex.pdf}
},
@book{GAMSSBB02,
address = {Washington, DC},
publisher = {GAMS Development Corporation},
title = {{GAMS/SBB} Solver Manual},
url = {http://www.gams.com/dd/docs/solvers/sbb.pdf},
year = {2002}
},
@book{GAMSCONOPT,
address = {Bagsvaerd},
author = {Drud, A},
publisher = {{ARKI} Consulting and Development},
title = {{GAMS/CONOPT} Solver Manual},
url = {http://www.gams.com/dd/docs/solvers/conopt.pdf}
},
@article{Chou2006,
author = {Chou, C. Y. and Chen, C. H.},
journal = {Expert Systems with Applications},
number = {2},
pages = {233--242},
title = {Economic design of variable sampling intervals {$T^2$} control charts using genetic algorithms},
volume = {30},
year = {2006}
},
@article{DRUZOVEC98,
address = {Ljubljana (Slovenija-Slovenia)},
author = {Dru\v{z}ovec, M and \v{S}ostar, A and Godina, A},
journal = {Strojni{\v{s}}ki Vestnik-Journal of Mechanical Engineering},
number = {1-2},
pages = {29--34},
title = {{MPC} process control procedure},
volume = {44},
year = {1998}
}
\end{filecontents}
\documentclass[11pt]{book}
\usepackage[a4paper,showframe]{geometry}
\RequirePackage[latin1]{inputenc}
%\usepackage{amsmath}
\usepackage[spanish]{babel}
\usepackage[autostyle=true]{csquotes}
\usepackage[round,semicolon,authoryear,longnamesfirst]{natbib}
\usepackage[%implicit=false,
pdftex,hyperfootnotes=false,
pdfpagelabels]{hyperref} % backref linktocpage pagebackref
\pdfcompresslevel=9
\pdfadjustspacing=1
\hypersetup{hyperfootnotes=false,
colorlinks=true, linkcolor=blue, citecolor=green,%
filecolor=red, urlcolor=red,
pdfpagemode=UseOutlines, pdfpagelayout=SinglePage,%
pdfhighlight=/N, pageanchor=true,%
pdftoolbar=true, pdfmenubar=true, pdfstartview=FitH}
\begin{document}
Referencias:
\begin{itemize}
\item \cite{Chou2006}.
\item \cite{DRUZOVEC98}.
\item \cite{GAMSCPLEX}.
\item \cite{GAMSSBB02}.
\item \cite{GAMSCONOPT}.
\end{itemize}
\bibliographystyle{mycustom}
\bibliography{mybib}
\end{document}
这是mycustom.bst
:https://dl.dropbox.com/u/155485/mycustom.bst
这些是我得到的参考列表的结果:
好的,所以我的问题显然如下:
我如何调整我的
.bst
文件(或前面的.dbj
文件)以便隐藏那些丑陋的空圆括号没有年份对于物品??我的文件该如何
.bst
处理没有作者的项目?是否应该采取出版商信息?我认为正确的顺序可能是:作者,如果不是,那么編輯,如果不是,那么出版商或者机构。我怎样才能以我的自定义风格完成它?*我不知道 URL 信息到底能做什么。在我示例中展示的情况中,它们实际上是在线文档,因此我认为显示它们的链接并没有错。但在其他情况下,您的文件中有一个 URL 地址
.bib
仅供您参考...无论如何,在这种情况下我的问题更简单:如何去掉URL地址前面那个丑陋的“URL”标签?
编辑:虽然这不是这个问题的目的,但我还想问您以下问题:
您是否知道任何(natbib 或只是 bibtex)现有风格与我的自定义风格相同或几乎相同围兜风格??我无法找到这种风格,但也许我错过了一些东西。
答案1
- 首先,您的文件有几个问题
bib
。BibTeX 手册,book
入口需要年份、作者或编辑。所以我建议将前三个条目变成manual
,只需要title
。 - 对于那些手册,特别是当
author
缺少时,应该提供一个key
BibTeX 可以用来排序条目的条目,有时会显示该条目而不是作者(取决于样式)。 - 我还会将
publisher
手册的字段更改为organization
字段,因为它们是的可选字段manual
,而publisher
不是。
生成的数据库看起来将像这样:
@manual{GAMSCPLEX,
key = {GAMS/CPLEX},
organization = {GAMS Development Corporation},
title = {{GAMS/CPLEX} 10 Solver Manual},
url = {http://www.gams.com/dd/docs/solvers/cplex.pdf}
},
@manual{GAMSSBB02,
key = {GAMS/SBB},
address = {Washington, DC},
organization = {GAMS Development Corporation},
title = {{GAMS/SBB} Solver Manual},
url = {http://www.gams.com/dd/docs/solvers/sbb.pdf},
year = {2002}
},
@manual{GAMSCONOPT,
key = {GAMS/CONOPT},
address = {Bagsvaerd},
author = {Drud, A.},
organization = {{ARKI} Consulting and Development},
title = {{GAMS/CONOPT} Solver Manual},
url = {http://www.gams.com/dd/docs/solvers/conopt.pdf}
},
@article{Chou2006,
author = {Chou, C. Y. and Chen, C. H.},
journal = {Expert Systems with Applications},
number = {2},
pages = {233--242},
title = {Economic design of variable sampling intervals {$T^2$} control charts using genetic algorithms},
volume = {30},
year = {2006}
},
@article{DRUZOVEC98,
address = {Ljubljana (Slovenija-Slovenia)},
author = {Dru\v{z}ovec, M. and \v{S}ostar, A. and Godina, A.},
journal = {Strojni{\v{s}}ki Vestnik-Journal of Mechanical Engineering},
number = {1-2},
pages = {29--34},
title = {{MPC} process control procedure},
volume = {44},
year = {1998}
}
关于不存在年份的空括号,我有三点建议:
yr-par
从文件中删除选项dbj
以删除全部年份用括号括起来。(可能不适合你)- 只需提供一年!如果您使用特定版本(例如 GAMS/CPLEX),请查找其发布日期并使用该日期。可以合理地假设手册与软件版本一起发布。(可能不适合你)
bst
hackery:虽然year
是的可选字段manual
,但您的样式文件无法正确检查年份是否存在。这是一个漏洞为了custom-bib
避免这种情况,请在样式文件的函数中添加以下五行代码format.date
:FUNCTION {format.date} { year "year" bibinfo.check duplicate$ empty$ { } 'skip$ if$ extra.label * before.all 'output.state := duplicate$ empty$ %% added { pop$ "{}" } %% added { %% added " (" swap$ * ")" * } %% added if$ %% added }
原则上,可以将其添加到
merlin.mbs
,以修复所有派生样式。通过此 hack 以及对数据库的建议更改,我得到:
答案2
我想添加一个答案一部分我自己的问题。但仍然有一些未解决的问题。
关于如何去掉“URL”标签(问题3),我刚刚打开了.bst
我创建的文件(我在我的问题中链接到的文件),然后我意识到这可以起作用:
\providecommand{\urlprefix}{ }
这一行应该加在调用.bst
样式之前,我的意思是,在我的情况下,不是在行之后\bibliographystyle{mycustom}
。例如,它可以加在之前\begin{document}
。
至于问题2,我必须说,这里可能的一种解决方法是手动editor
为那些没有作者和编辑者的条目添加一个字段。这个编辑器可以具有与字段相同的内容publisher
,实际上它应该替换它。这样,我检查了我的围兜风格editor
作为一种作者当author
字段为空时。
但这不是一个好的解决办法。
请注意,我不是 LaTeX 或 BibTeX 编码方面的专家,因此任何其他答案都将不胜感激。
答案3
Bst 文件是用后缀语言编写的,如果您有点动力,那么这并不难理解,因此您可以涉足并添加代码以优雅地处理缺失的作者(我相信它已经按标题对此类记录进行了排序,因此没有太多需要修复的地方)。但最好尽可能少地破解您生成的文件。
许多引用样式使用无日期或者nd代替没有日期的文档的日期。如果您在参考书目中这样做,则无需调整样式。
除了编辑生成的 bst 之外,目前还没有想到其他解决缺少作者问题的好方法。
前面丑陋的“URL”标签是宏的内容。您可以通过在每个使用它的文档的序言中
\urlprefix
重新定义来摆脱它。要永久修复,请编辑您生成的并查找此代码片段(在):\urlprefix
.bst
FUNCTION {begin.bib}
"\expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{URL }\fi" write$ newline$
\urlprefix
如果您的文档尚未定义它,它会设置默认值,因此您可以将其更改为另一个前缀(包括\relax
)。
3a. 如果我没记错的话,是否始终显示该url
字段由运行期间的选项控制custom-bib
。我建议重新运行 custom-bib 以生成不带该选项的样式;它可能会完全按照您的要求执行。如果这不起作用,最简单的解决方法是使用自定义字段名称,例如myurl
您不想排版的 URL。