참고문헌에서 특정 URL을 억제합니다.

참고문헌에서 특정 URL을 억제합니다.

Google 도서에서 .bib 파일을 가져온 경우 당연히 URL 필드에 Google 도서에 대한 링크가 있습니다. 이는 .bib 파일에 있으면 편리하므로 파일에서 제거하지 않는 것이 좋습니다. 정규 표현식을 사용하면 쉬울 수 있지만 인쇄하고 싶지는 않습니다.

해당 필드의 내용을 기반으로 URL 필드의 인쇄를 억제하는 방법이 있습니까?

@book또는 다음과 같은 방법으로 s 에 대한 URL 필드를 비활성화할 수 있는 것처럼 보이지만 \AtEveryBibitem{\ifentrytype{book}{\clearfield{url}}{}}실제 문제를 해결하고 URL이 포함된 책을 인용하는 기능을 유지하고 싶습니다.

답변1

\DeclareSourcemap필드를 제거하기 위해 서문에서 사용할 수 있습니다 . 다음은 완전한 예입니다. (자체 파일에 Google 도서 턱받이가 있는 경우 \perdatasource이를 해당 소스에만 적용하도록 사용할 수도 있습니다. biblatex문서의 섹션 4.5.2(데이터의 동적 수정)을 참조하세요!

\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}

답변2

완전성을 위해 주석에서 clstr이 설정한 대체 접근 방식은 단순히 // 또는 % 접두사를 붙여 문제가 되는 행을 주석 처리하는 것입니다. 나는 이를 위해 편집기나 터미널에서 정규식을 사용합니다(내 .bib에 300개의 항목이 있으므로). sed -r 's/(url\ ?=\ ?\{[a-z:\/]*books\.google\.)/%\1/g oldrefs.bib >newrefs.bib

관련 정보