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.

Я сузил проблему: проблема в \verb"полях" в bbl. Если они присутствуют (например, для DOI или URL), то выдается ошибка вышепока небаррель включен через \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

Из-за изменений в 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}
...

Мне это помогло:

введите описание изображения здесь

Связанный контент