Biblatex:包括 bbl,“动词”字段的问题

Biblatex:包括 bbl,“动词”字段的问题

这是一个后续问题Biblatex:向期刊投稿

正如评论中指出的那样赫伯特的回答,一些用户对他的解决方案有疑问,因为编译会产生错误Use of \blx@bbl@verbadd@i doesn't match its definition \blx@bblfile@biber ...2004} \verb {eprint} \verb cond-mat/0407066 \endverb

我已经缩小了问题范围:问题在于\verbbbl 中的“字段”。如果存在这些字段(例如 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}
...

它对我有用:

在此处输入图片描述

相关内容