我收到了来自我所在大学的一份定制\bibliographstyle
。我的条目数量超过了 26 个,其中没有作者和年份。对于作者,我输入了“oV”。
通常情况下,我会将文件中的 Key .bbl
(由 bibtex 从我的 .bib 文件中生成)\bibitem[o.Va]
改为\bibitem[o.Vz]
这里的问题。在“z”之后,它会生成一个“{”,这显然不起作用。因此,在我的论文中,应该将 [o.Va]-[o.Vz] 写为引用。但理论上,Z 之后是 [oV{],这无法编译!
我假设我需要修改我的.bst
文件(如果我没记错的话,这是 bibliographstyle)。
我怎样才能使我的参考书目采用除 oV 之外的其他 3 个字母,或者如果我将作者留空,它就会采用我可以选择的自定义内容?
敬请期待http://pastebin.com/1Qdy83eJ第 352 行。这不起作用,并且与 jabref 无关!
答案1
您说得对,BibTeX 样式 ( alphadin.bst
) 会为看起来相同的条目添加额外的标签。此标签只是转换为字符的等效条目的计数器,之后以 ASCII 格式z
显示{
。
我们可以通过改变此转换来获得形式的额外标签,从而解决这个问题a..z, aa..az, ba..bz, ...
。
为此,请复制alphadin.bst
,例如alphadin2.bst
,并将其保存在 BibTeX 可以找到的地方。
在编辑器中打开新文件,找到函数forward.pass
(第 2144 行以下)。添加以下整数除法函数前该功能:
INTEGERS { a b aneg bneg }
%% takes two arguments a and b, and returns q = a/b, and the remainder a-q*b
FUNCTION {div} {
'a :=
'b :=
a #0 <
{ #1 'aneg :=
#0 a - 'a := }
{ #0 'aneg := }
if$
b #0 <
{ #1 'bneg :=
#0 b - 'b :=
}
{ #0 'bneg := }
if$
b #0 =
{
"Division by zero requested, will return 0 0" * warning$
#0 #0
}
{
#0 %% initialize quotient on stack
{ a b > a b = or }
{ a b - 'a := %% decrement a by b
#1 + %% increment value on stack
}
while$
aneg
{
a #0 >
{ b a - 'a :=
#-1 swap$ -
}
{ #0 swap$ - }
if$
}
{}
if$
bneg
{ #0 swap$ - }
{}
if$
a %% push remainder
}
if$
}
然后进行forward.pass
如下修改:
FUNCTION {forward.pass}
{ last.sort.label sort.label =
{ last.extra.num #1 + 'last.extra.num :=
%% last.extra.num int.to.chr$ 'extra.label := %% original; the next 10 lines are new
last.extra.num #122 >
{
last.extra.num #97 - #26 swap$ div
#97 + int.to.chr$ %% remainder; 0..25 -> a..z
swap$ #96 + int.to.chr$ %% quotient; 1..26 -> a..z
swap$ *
'extra.label :=
}
{ last.extra.num int.to.chr$ 'extra.label := }
if$
}
{ "a" chr.to.int$ 'last.extra.num :=
"" 'extra.label :=
sort.label 'last.sort.label :=
}
if$
}
现在您可以\bibliographystyle{alphadin2}
在文档中使用。
答案2
您的问题有点误导。
我想您不必更改bst
文件或其他内容。不清楚您是自己编写密钥还是使用程序为您编写密钥。
在评论中,您告诉我您正在使用 Jabref。Jabref 手册中有一章 BibTeX Keys(在我的德语 2.4 Beta 版本中是第 3.4 章)。它描述了 Jabref 为您创建 BibTex-Keys 以及您可以在哪里控制 Jabref 的行为。它还说,在第 4.3 章中您可以了解如何更改密钥的创建。
我非常确定您可以建议 Jabref 使用另一种算法来构建密钥。因为我使用 citavi,所以我无法告诉您如何操作。但我确信查看文档会有所帮助。
德语文献说:
使用 BibTEX-Keys 时,JABREF 自动生成,并且当使用这些键时,您可以在 BibTEX-Keys 4.3 自动创建对话框中体验这些键。
答案3
.bib
您用来引用参考书目中某个项目的键(使用 bibtex)在包含有关参考文献的所有数据的文件中定义。
所以如果你有一个MyBib.bib
包含该条目的书目
@article{ref1, author = "o.V."}
你可以在文中这样引用它
\documentclass{article}
\begin{document}
I am now citing the reference 1 \cite{ref1}.
\end{document}
和其他字段的值author
无关紧要。(我不知道如果您不自己提供密钥,BiBTeX 是否会自动分配密钥,但如果您像示例中那样提供密钥,那么这才是最重要的)。
该.bbl
文件是 BiBTeX 创建的辅助文件,其中的参考文献格式应正确无误,因此当第二次运行 LaTeX(在 BiBTeX 之后)时,它可以插入这些参考文献。您不必修改它。