这是一个后续问题Biblatex:向期刊投稿。
正如评论中指出的那样赫伯特的回答,一些用户对他的解决方案有疑问,因为编译会产生错误Use of \blx@bbl@verbadd@i doesn't match its definition \blx@bblfile@biber ...2004} \verb {eprint} \verb cond-mat/0407066 \endverb
。
我已经缩小了问题范围:问题在于\verb
bbl 中的“字段”。如果存在这些字段(例如 DOI 或 URL),则会抛出上述错误除非bbl 是通过 包含的\input
。
请参阅以下 MWE:
\documentclass[a4paper,10pt]{article}
\usepackage{biblatex}
%-------------- start insert modified commands ------------------
\makeatletter
\def\blx@bblfile@biber{%
\blx@secinit
\begingroup
\blx@bblstart
\refsection{0}
\sortlist{entry}{nty}
\entry{Agarwal2007}{article}{}
\verb{doi}
\verb 10.2139/ssrn.943524 %%--PROBLEM--%%
\endverb
\endentry
\endsortlist
\endrefsection
\blx@bblend
\endgroup
\csnumgdef{blx@labelnumber@\the\c@refsection}{0}}
\makeatother
%-------------- end insert modified commands --------------
\begin{document}
Some words \cite{Agarwal2007}.
\printbibliography
\end{document}
除非进行注释,否则编译不起作用\verb 10.2139/ssrn.943524
。
编辑:生成 bbl 的代码是
@article{Agarwal2007,
author = {Agarwal, S.},
doi = {10.2139/ssrn.943524},
year = {2006}
}
答案1
有问题的部分应该在某个外部文件中。因此,使用 filecontents-environment 来创建它:
\documentclass[a4paper,10pt]{article}
\usepackage{biblatex}
\usepackage{filecontents}
\begin{filecontents}{testinput-bbl.bbl}
\refsection{0}
\sortlist{entry}{nty}
\entry{Agarwal2007}{article}{}
\verb{doi}
\verb 10.2139/ssrn.943524
\endverb
\endentry
\endsortlist
\endrefsection
\end{filecontents}
%-------------- start insert modified commands ------------------
\makeatletter
\def\blx@bblfile@biber{%
\blx@secinit
\begingroup
\blx@bblstart
\input{testinput-bbl.bbl}%<------------
\blx@bblend
\endgroup
\csnumgdef{blx@labelnumber@\the\c@refsection}{0}}
\makeatother
%-------------- end insert modified commands --------------
\begin{document}
Some words \cite{Agarwal2007}.
\printbibliography
\end{document}
编辑 2017 年 4 月
由于 biblatex 的变化,重新定义\blx@bblfile@biber
不再起作用,因为该命令不再存在。以下是替代品。它也应该适用于较旧的 biblatex。如果 bbl 的内容不适合 biblatex 版本,它还会发出警告。
\documentclass[a4paper,10pt]{article}
\usepackage{biblatex}
\usepackage{filecontents}
%Use the starred version of filecontents to avoid comments in the written file
%Insert the complete bbl in the environment including the starting comments!
\begin{filecontents*}{testinput-bbl.bbl}
% $ biblatex auxiliary file $
% $ biblatex bbl format version 2.8 $
% Do not modify the above lines!
%
% This is an auxiliary file used by the 'biblatex' package.
% This file may safely be deleted. It will be recreated by
% biber as required.
%
\begingroup
\makeatletter
\@ifundefined{[email protected]}
{\@latex@error
{Missing 'biblatex' package}
{The bibliography requires the 'biblatex' package.}
\aftergroup\endinput}
{}
\endgroup
\refsection{0}
\sortlist[entry]{nty/global/}
\entry{doody}{article}{}
\name{author}{1}{}{%
{{hash=936cee5fdd47aac6238f650db8b23a07}{%
family={Doody},
familyi={D\bibinitperiod},
given={Terrence},
giveni={T\bibinitperiod}}}%
}
\strng{namehash}{936cee5fdd47aac6238f650db8b23a07}
\strng{fullhash}{936cee5fdd47aac6238f650db8b23a07}
\strng{authornamehash}{936cee5fdd47aac6238f650db8b23a07}
\strng{authorfullhash}{936cee5fdd47aac6238f650db8b23a07}
\field{sortinit}{D}
\field{sortinithash}{d10b5413de1f3d197b20897dd0d565bb}
\field{labelnamesource}{author}
\field{labeltitlesource}{title}
\field{annotation}{An \texttt{article} entry cited as an excerpt from a \texttt{collection} entry. Note the format of the \texttt{related} and \texttt{relatedstring} fields}
\field{journaltitle}{The Journal of Narrative Technique}
\field{langid}{english}
\field{langidopts}{variant=american}
\field{number}{3}
\field{relatedstring}{\autocap{e}xcerpt in}
\field{title}{Hemingway's Style and {Jake's} Narration}
\field{volume}{4}
\field{year}{1974}
\field{related}{1e63d4bbc14872275675171be2dfa906}
\field{pages}{212\bibrangedash 225}
\range{pages}{14}
\endentry
\entry{1e63d4bbc14872275675171be2dfa906}{collection}{dataonly}
\name{editor}{1}{}{%
{{hash=cf369effe2b1de0066543cc38f7f8369}{%
family={Matuz},
familyi={M\bibinitperiod},
given={Roger},
giveni={R\bibinitperiod}}}%
}
\list{location}{1}{%
{Detroit}%
}
\list{publisher}{1}{%
{Gale}%
}
\strng{namehash}{cf369effe2b1de0066543cc38f7f8369}
\strng{fullhash}{cf369effe2b1de0066543cc38f7f8369}
\strng{editornamehash}{cf369effe2b1de0066543cc38f7f8369}
\strng{editorfullhash}{cf369effe2b1de0066543cc38f7f8369}
\field{sortinit}{M}
\field{sortinithash}{c26a05ef03e4429073ed5c825140fac3}
\field{labelnamesource}{editor}
\field{labeltitlesource}{title}
\field{clonesourcekey}{matuz:doody}
\field{annotation}{A \texttt{collection} entry providing the excerpt information for the \texttt{doody} entry. Note the format of the \texttt{pages} field}
\field{langid}{english}
\field{langidopts}{variant=american}
\field{title}{Contemporary Literary Criticism}
\field{volume}{61}
\field{year}{1990}
\field{pages}{204\bibrangedash 208}
\range{pages}{5}
\endentry
\endsortlist
\endrefsection
\endinput
\end{filecontents*}
\usepackage{xpatch}
%Patch the biblatex input command.
%replace "testinput-bbl" if you change the name above.
%disable if you want to run biblatex/biber normally
\makeatletter
\patchcmd\blx@bblinput{\blx@blxinit}
{\blx@blxinit
\def\jobname{testinput-bbl}%new jobname
}{}{\fail}
\makeatother
\addbibresource{biblatex-examples.bib} %not needed but doesn't harm either
\begin{document}
Some words \cite{doody}.
\printbibliography
\end{document}
答案2
用于两个动词行:
...
\field{doi}{10.2139/ssrn.943524}
...
它对我有用: