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