내 출판 목록의 경우 출판 상태에 따라 자동으로 구별되는 여러 참고문헌을 생성하고 싶습니다. 출판 상태의 경우 해당 pubstate
필드를 사용하고 해당 keywords= {own}
필드를 내 참고문헌 데이터베이스에 내 출판물로 표시했습니다(놀랍죠?). 참고문헌은 옵션에 따라 내 출판물로 제한됩니다 keyword = own
.
의 필터 기능은 해당 필드에 속하지 않는 biblatex
일부 특정 필드에서만 작동하므로 명령을 통해 필드 내용을 필드에 pubstate
매핑하고 싶습니다 . 거기에서 해당 분야에 따라 참고문헌을 필터링할 수 있었습니다. 아쉽게도 옵션을 사용하든 안하든 비어있지 않은 필드에는 아무 것도 쓰여지지 않은 것처럼 보입니다. 대신 빈 필드에 매핑하려고 하면(다음 줄로 시작하는 줄에 주석을 달고 아래 줄의 주석 처리를 제거함) 나중에 해당 필드에 원하는 값이 포함됩니다.pubstate
keywords
\DeclareSourcemap
append
\DeclareSourcemap
fieldset=keywords
\begin{filecontents}{\jobname.bib}
@article{inpress,
author = {A. Uthor},
title = {Yay, they accepted my article},
keywords = {own},
pubstate = {inpress},
year = {2014},
journal = {Journal of Universal Acceptance}
}
@article{submitted,
author = {A. Uthor},
title = {Look, I've written a nice manuscript, would you publish it? Pleeease?},
keywords = {own},
pubstate = {submitted},
year = {2014},
journal = {Journal of Doubtful Acceptance}
}
\end{filecontents}
\documentclass{article}
\usepackage[backend=biber]{biblatex}
\addbibresource{\jobname.bib}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=pubstate, match={inpress},
fieldset=keywords, fieldvalue={inpress}, append]
% fieldset=note, fieldvalue={inpress}, append]
}
}
}
\listfiles
\begin{document}
\nocite{*}
\printbibliography[keyword=inpress, title = {Articles in press}]
\printbibliography[keyword=own, title = {Submitted articles}]
\end{document}
물론 다른 방법으로 이 작업을 수동으로 수행할 수도 있지만 왜 예상한 대로 작동하지 않는지 알고 싶습니다.
답변1
문제는 overwrite
지도에서 지정해야 한다는 것입니다. 이 시도:
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map[overwrite]{
\step[fieldsource=pubstate, match={inpress},
fieldset=keywords, fieldvalue={inpress}, append]
% fieldset=note, fieldvalue={inpress}, append]
}
}
}
그러나 comma
위의 코드는 owninpress
.
아래 코드가 유용할 수도 있습니다. 필드 pubstate
의 모든 내용을 추가합니다 keywords
.
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map[overwrite]{
\step[fieldsource=pubstate,final]
\step[fieldset=keywords, fieldvalue={,}, append]
\step[fieldset=keywords, origfieldval, append]
}
}
}
위 코드는 키워드: own, inpress
및 를 사용합니다 own, submitted
.
답변2
이것은 질문에 대한 해결책이 아니라 문제에 대한 해결책입니다. biblatex 필드 inpress
에 키워드를 추가하는 대신 keyword
새 bibcheck를 정의하고 check
옵션을 사용할 수 있습니다 \printbibliography
.
\defbibcheck{inpress}{
\iffieldequalstr{pubstate}{inpress}{}{\skipentry}
}
그런 다음
\printbibliography[check=inpress]