Suprimir certos URLS na bibliografia

Suprimir certos URLS na bibliografia

Se você obtiver um arquivo .bib do Google Books, não é surpresa que ele tenha um link para o Google Books no campo URL. É útil ter isso no arquivo .bib, então prefiro não removê-lo do arquivo, o que seria fácil usando regex, mas não quero que ele seja impresso.

Existe uma maneira de suprimir a impressão do campo URL com base no conteúdo desse campo?

Alternativamente, parece que eu poderia desabilitar o campo URL para @books com algo como \AtEveryBibitem{\ifentrytype{book}{\clearfield{url}}{}}mas prefiro corrigir o problema real e manter a capacidade de citar livros com URLs .

Responder1

Você pode usar \DeclareSourcemapno preâmbulo para remover campos. Aqui está um exemplo completo. (Se você tiver os babadores do Google Books em seus próprios arquivos, você também pode usar \perdatasourcepara fazer com que isso se aplique apenas a essa fonte. Consulte a seção 4.5.2 (Modificação dinâmica de dados) na biblatexdocumentação!

\begin{filecontents}{\jobname.bib}
@book{bad,
  title={With link we don't want},
  url={http://books.google.se/books?id=SNeHkMXHcd8C},
}
@book{good,
  title={With link we want},
  url={http://tex.stackexchange.com/},
}
\end{filecontents}
\documentclass{article}

\usepackage{biblatex}
\addbibresource{\jobname.bib}
\DeclareSourcemap{
  \maps{
    \map{
      \step[fieldsource=url,
            match=\regexp{/books\.google\.},
            fieldset=url, null]
    }
  }
}
\begin{document}
\nocite{good, bad}
\printbibliography
\end{document}

Responder2

Para completar, a abordagem alternativa estabelecida por clstr em um comentário é simplesmente comentar as linhas incorretas prefixando-as com // ou%. Eu usaria um regex para isso (já que tenho 300 entradas no meu .bib) no editor ou em um terminal: sed -r 's/(url\ ?=\ ?\{[a-z:\/]*books\.google\.)/%\1/g oldrefs.bib >newrefs.bib

informação relacionada