我想定制这个.bst
文件。现在,当我编译一个参考时,它会给我(对于类型的条目@article
):
作者 1、作者 2、“标题”期刊卷(年份)页,arxiv:0208157。
但我想让逗号出现在引号后面,并且我想arxiv:0208157
用以下形式替换[hep-ph/0208157]
:
作者 1、作者 2、“标题”、期刊卷(年份)页码 [hep-ph/0208157]。
以下是 MWE:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{test.bib}
@article{AA,
archivePrefix = {arXiv},
arxivId = {hep-th/9605032},
primaryClass = {hep-th},
author = {AuthorI, A. and AuthorII, B. and AuthorIII, C.},
eprint = {9605032},
journal = {Journal},
pages = {pages},
title = {{Title with ?}},
volume = {Volume},
year = {Year}
}
\end{filecontents*}
\begin{document}
\nocite{*}
%Bibloography
\bibliographystyle{utphys}
\bibliography{test}
\end{document}
更新:关于 arxiv 问题,你必须在文件中将代码替换FUNCTION {format.primaryClass}
为.bst
。"{ " [" primaryClass * "]" *}
在 { "" primaryClass *}
函数中FUNCTION {format.eprint}
,你应该将其替换"{{\ttfamily " * format.archive * eprint * format.primaryClass * "}}" *}
为"{{" * " [" * format.primaryClass * "/" * eprint * "]" * "}}" * }
现在,我遇到了一个新问题:当arxivId
不包含类别例如hep-th
,在 中primaryClass = {hep-th}
,引用打印为[/9605032]
。因此,我的新问题是,在这种情况下如何将其写入[Arxiv:9605032]
?。
更新二:解决方案非常简单!我只需输入"Arxiv"
而不是""
之后primaryClass empty$
答案1
您需要对文件中从 l. 519 开始的以下两个函数进行微小的修改utphys.bst
:
FUNCTION {format.title}
{ title empty$
{ "" }
{ "``" title "t" change.case$ * ",''" * }
if$
}
FUNCTION {format.title.p}
{ title empty$
{ "" }
{ "``" title "t" change.case$ * ".''" * }
if$
}
具体来说,就是将 改为在,''
,将改为在。'',
format.title
.''
''.
format.title.p
请注意,您不应直接编辑和更改 TeX 发行版中的原始文件。相反,请复制该文件utphys.bst
并将上述两个建议应用于副本。
答案2
要修复 arxiv 论文的问题,首先,你必须在文件中替换utphys.bst
代码
FUNCTION {format.primaryClass}
{
primaryClass empty$
{ "" }
{ " [" primaryClass * "]" *}
if$
}
FUNCTION {format.eprint}
{ eprint empty$
{ ""}
{ archive empty$
{"\href{http://arxiv.org/abs/" eprint * "}" *
"{{\ttfamily " * format.archive * eprint *
format.primaryClass * "}}" *}
{"\href{" archive * "/" * eprint * "}" *
"{{\ttfamily " * format.archive * eprint *
format.primaryClass * "}}" *}
if$
}
if$
}
通过以下代码:
FUNCTION {format.primaryClass}
{
primaryClass empty$
{ "Arxiv:" } %
{ "" primaryClass * "/" *} %Vall { " [" primaryClass * "]" *}
if$
}
FUNCTION {format.eprint} % eprint:9605032, http://arxiv.org/abs/hep-th/9605023
{ eprint empty$
{ "" }
{ archive empty$
{"\href{http://arxiv.org/abs/" format.primaryClass * eprint * "}" *
"{{" * " [" * format.primaryClass * % vall "{{\ttfamily " * format.archive * eprint *
eprint * "]" * "}}" * }
{"\href{http://arxiv.org/abs/" "}" *
"{{" * " [" * format.primaryClass *
eprint * "]" * "}}" *}
if$
}
if$
}
解释:
我)format.primaryClass
{ "" primaryClass * "/" *}
而不是{ " [" primaryClass * "]" *}
将被 替换 [hep-th]
。因此 ,当它被定义时hep-th/
,它将打印primaryClass/
(printClass 是论文的类别,例如hep-th
),否则(某些 arxiv 论文没有primaryClass
)它将打印Arxiv:
(If$ 将检查这一点)。
二)在 format.eprint
:
A): \href{http://arxiv.org/abs/" format.primaryClass * eprint * "}"
: 这仅在您使用该hyperref
包时才有用,它会生成超链接http://arxiv.org/abs/primerClass/eprint
,例如,如果 primaryClass = {hep-th}
和eprint = {9605032}
它将生成
http://arxiv.org/abs/hep-th/9605032
。代码"{{" * " [" * format.primaryClass * eprint * "]" * "}}" * }
是超链接的打印文本,即
[format.primaryClass eprint]
我前面示例中的[hep-th/9605032]
。备注:如果您不使用该hyperref
包,这将仅打印
[hep-th/9605032]
。
B):现在,您可以猜一下代码的"\href{http://arxiv.org/abs/" "}"
作用是什么?当 arxiv 论文没有primaryClass
案例 时A)被省略,程序将执行此代码,所以这只不过是,因为没有。\href{http://arxiv.org/abs/format.primaryClass eprint }
例如,如果 这将提供超链接,您将自动重定向到链接。最后,代码将打印超链接文本,即我们最后一个例子中的文本。primaryClass
format.primaryClass
Arxiv:
eprint = {1512.00704}
http://arxiv.org/abs/Arxiv:1512.00704
http://arxiv.org/abs/1512.00704
"{{" * " [" * format.primaryClass * eprint * "]" * "}}" *
[format.primaryClass eprint]
[Arxiv:1512.00704]
要删除之前的逗号,Arxiv
必须替换以下代码(例如这个答案):
FUNCTION {article}
{ output.bibitem
format.collaboration output
format.authors "author" output.check
format.title "title" output.check
blank.sep
crossref missing$
{ journal missing$
{}
{ format.journal add.doi "journal" output.check}
if$
report missing$
{format.eprint output}
{blank.sep format.report output format.eprint output}
if$
}
{ format.article.crossref output.nonnull
format.pages output
format.eprint output
}
if$
new.sentence
format.url output
new.sentence
note output
new.sentence
format.SLACcitation output
fin.entry
}
通过代码:
FUNCTION {article}
{ output.bibitem
format.collaboration output
format.authors "author" output.check
format.title "title" output.check
blank.sep
crossref missing$
{ journal missing$
{}
{ format.journal add.doi "journal" output.check}
if$
report missing$
{before.all 'output.state := %% added
format.eprint output}
{blank.sep format.report output format.eprint output}
if$
}
{ format.article.crossref output.nonnull
format.pages output
format.eprint output
}
if$
new.sentence
format.url output
new.sentence
note output
new.sentence
format.SLACcitation output
fin.entry
}
一位 MWE 表示:
\documentclass{article}
\begin{filecontents*}{test.bib}
@article{A,
archivePrefix = {arXiv},
arxivId = {hep-th/9605032},
author = {AuthorI, A. and AuthorII, B. and AuthorIII, C.},
eprint = {9605032},
journal = {Journal of Bla bla},
pages = {12},
primaryClass = {hep-th},
title = {{Title of the paper A}},
volume = {123},
year = {2016}
}
@article{B,
archivePrefix = {arXiv},
author = {AuthorA, A. and AuthorB, B. and AuthorC, C.},
arxivId = {1512.00704},
eprint = {1512.00704},
journal = {Journal of bla bla},
pages = {1233},
title = {{Title of the paper B}},
volume = {567},
year = {2016}
}
\end{filecontents*}
\begin{document}
~\nocite{*}
%Bibleography
\bibliographystyle{Vall}
\bibliography{test}
\end{document}