Formato de data (na entrada do babador) / bibelatex biber

Formato de data (na entrada do babador) / bibelatex biber

Estou usando biber e biblatex e quero imprimir todas as teses anteriores a 2013. Quando uso

year = {2010}

entrada no arquivo .bib, tudo funciona bem. No entanto, se eu usar

date = {2010-11-25}

em vez de ano, minha entrada é ignorada. Estou respeitando o formato da data, certo? Então, o que há de errado? Aqui está um MWE.

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@THESIS{a,
  AUTHOR =  {Myself},
  TITLE = {Me, myself and I},
  Institution = {My University},
  type = {Ph.D. thesis},
  year = {2010} 

} %  date = {2010-11-25}
\end{filecontents*}
\usepackage[backend=biber,defernumbers=true,sorting=ydnt]{biblatex}
\addbibresource{\jobname.bib}
\DeclareSourcemap{
  \maps[datatype=bibtex]{
         \map[overwrite=true]{
            \step[fieldsource=year,  match=\regexp{199([7-9])|200([0-9])|201([0-2])},final]
            \step[fieldset=keywords, fieldvalue={,}, append]
        \step[fieldset=keywords, fieldvalue={before2013}, append]
}}}

\begin{document}
Hello world.
    \nocite{*}
    \printbibliography[type=thesis,keyword=before2013,title=Thesis,resetnumbers=true]
\end{document}

Responder1

Em vez do mapeamento de origem do Biber, você pode comparar o yearcampo com biblatexo documento. (Podemos usar yearaqui independentemente de você ter usado yearou datejá que um datecampo é sempre dividido em seus componentes quando é gravado em .bbl.)

Nós definimos um bibcheck

\defbibcheck{before2013}{%
  \iffieldint{year}
    {\ifnumless{\thefield{year}}{2013}
       {}
       {\skipentry}}
    {\skipentry}}

e use essa verificação em vez da palavra-chave

\printbibliography[type=thesis,check=before2013,title=Thesis,resetnumbers=true]

Responder2

Seus \mapsúnicos conjuntos keyword=before2013são yearde 1997 a 2012, mas não se datesão de 01/01/1997 a 31/12/2012. O índice só é impresso se keyword=before2013. Portanto, a entrada não seria impressa se dateem vez de yearfosse usado.

Você pode adicionar um mapa semelhante ao dateque você tem para year:

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@THESIS{a,
  AUTHOR =  {Myself},
  TITLE = {Me, myself and I},
  Institution = {My University},
  type = {Ph.D. thesis},
  year = {2010} 
}
@THESIS{b,
  AUTHOR =  {Another},
  TITLE = {Another, one and nobody},
  Institution = {My University},
  type = {Ph.D. thesis},
  date = {2010-11-25} 
}
@THESIS{c,
  AUTHOR= {Never},
  TITLE = {I'm to late},
  Institution = {My University},
  type = {Ph.D. thesis},
  date = {2017-01-01}
}
\end{filecontents*}
\usepackage[backend=biber,defernumbers=true,sorting=ydnt]{biblatex}
\addbibresource{\jobname.bib}
\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map[overwrite=true]{
      \step[fieldsource=year,  match=\regexp{199([7-9])|200([0-9])|201([0-2])},final]
      \step[fieldset=keywords, fieldvalue={,}, append]
      \step[fieldset=keywords, fieldvalue={before2013}, append]
    }
    \map[overwrite=true]{
      \step[fieldsource=date,  match=\regexp{199([7-9])|200([0-9])|201([0-2])},final]
      \step[fieldset=keywords, fieldvalue={,}, append]
      \step[fieldset=keywords, fieldvalue={before2013}, append]
    }
  }
}

\begin{document}
Hello world.
    \nocite{*}
    \printbibliography[type=thesis,keyword=before2013,title=Thesis,resetnumbers=true]
\end{document}

insira a descrição da imagem aqui

Outra solução seria utilizar cheque, pois o cheque é feito quando a data já está parcelada:

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@THESIS{a,
  AUTHOR =  {Myself},
  TITLE = {Me, myself and I},
  Institution = {My University},
  type = {Ph.D. thesis},
  year = {2010} 
}
@THESIS{b,
  AUTHOR =  {Another},
  TITLE = {Another, one and nobody},
  Institution = {My University},
  type = {Ph.D. thesis},
  date = {2010-11-25} 
}
@THESIS{c,
  AUTHOR= {Never},
  TITLE = {I'm to late},
  Institution = {My University},
  type = {Ph.D. thesis},
  date = {2017-01-01}
}
\end{filecontents*}
\usepackage[backend=biber,defernumbers=true,sorting=ydnt]{biblatex}
\addbibresource{\jobname.bib}
\defbibcheck{before2013}{%
  \iffieldint{year}% If an interger field year exists
  {
    \ifnumless{\thefield{year}}{2013}% and the field value is less than 2013
    {}% do nothing
    {\skipentry}% otherwise skip the entry
  }
  {\skipentry}% skip the entrie also if there isn't an integer field year
}

\begin{document}
Hello world.
    \nocite{*}
    \printbibliography[type=thesis,check=before2013,title=Thesis,resetnumbers=true]
\end{document}

O resultado é o mesmo.

informação relacionada