Los campos excesivos en biblatex no se pueden eliminar si se usa \fullcite

Los campos excesivos en biblatex no se pueden eliminar si se usa \fullcite

La combinación de biblatex-chicagoy Zotero produce muchos archivados excesivos en la bibliografía. Este problema podría resolverse añadiendo al preámbulo advertencias como ésta:

\AtEveryBibitem{%
\ifentrytype{online}
{}
{\clearfield{urlyear}\clearfield{urlmonth}\clearfield{urlday}}}

(Descrito en detalle en la respuesta a mi pregunta anterior:Campos excesivos en estilo biblatex chicago autor-fecha.)

Esta solución funcionó bien para mí, pero ahora tengo que producir un programa de estudios usando \fullciteel comando. Desafortunadamente, esta solución no resuelve el problema de las entradas bibliográficas completas fuera de la bibliografía misma.

Aquí está el código con la bibliografía dentro (para obtener el nombre y apellido del autor en el orden correcto, uso la siguiente solución:Biblatex-chicago: \fullcite invierte el nombre y apellido):

\begin{filecontents*}{database.bib}
    @book{dalton_apartisan_2012,
        title = {The Apartisan American: Dealignment and Changing Electoral Politics},
        isbn = {9781452216942},
        url = {http://books.google.com/books?id=eYkczUyX5wMC},
        shorttitle = {The Apartisan American},
        pagetotal = {241},
        publisher = {{CQ} Press},
        author = {Dalton, Russell J.},
        urldate = {2014-04-03},
        date = {2012-02-22},
        langid = {english},
        keywords = {Political Science / Political Process / Elections, Political Science / Public Policy / General}
    }
\end{filecontents*}
\documentclass[11pt]{article}
\usepackage[hmargin=3cm,vmargin=3cm]{geometry}
\usepackage[onehalfspacing]{setspace}
\usepackage{amssymb,amsmath,amsthm}
\usepackage{booktabs,graphicx}
\usepackage{paralist}
\usepackage{cancel,soul}
\usepackage{enumitem}
\usepackage[authordate,backend=biber,bibencoding=utf8,bookpages=false,doi=only,isbn=false,footmarkoff]{biblatex-chicago}
\usepackage[colorlinks, pdfstartview={XYZ null null 1.25},bookmarksopen=true,bookmarksopenlevel=\maxdimen,citecolor={blue},urlcolor={blue}]{hyperref}
\addbibresource{database.bib}
\DeclareCiteCommand{\fullcite}
{\usebibmacro{prenote}}
{\usedriver
    {}
    {\thefield{entrytype}}}
{\multicitedelim}
{\usebibmacro{postnote}}
\AtEveryBibitem{%
    \ifthenelse{\ifentrytype{article}\OR\ifentrytype{book}\OR\ifentrytype{collection}\OR\ifentrytype{incollection}\OR\ifentrytype{mvbook}\OR\ifentrytype{mvcollection}\OR\ifentrytype{mvincollection}}
    {\clearfield{month}\clearfield{url}\clearfield{doi}\clearfield{urlyear}\clearfield{urlmonth}\clearfield{urlday}}}


\begin{document}
\begin{center}
{\huge Partisanship in Old, New and Non-Democracies}\\
\end{center}

\vspace{30pt}
\noindent\textbf{Instructor: }  \hfill
\textbf{Time and Location:} TBA\\
\textbf{Contact:} 
\hfill
\hfil \textbf{Office Hours:} TBA\\

\vspace{-20pt}



\subsection*{Partisanship in the United States}


\begin{enumerate}
    \item \parencite{dalton_apartisan_2012}
    \item \fullcite{dalton_apartisan_2012}
\end{enumerate}

\printbibliography[heading=bibintoc]

\end{document} 

Aquí está el resultado. Tenga en cuenta los archivos excesivos en la cita completa en el texto (están ausentes en las Referencias):

ingrese la descripción de la imagen aquí

Cualquier ayuda, especialmente soluciones simples y accesibles, sería muy apreciada.

Respuesta1

Si desea controlar la urldatebibliografía y las citas de forma independiente, \AtEveryBibitemeste \AtEveryCitekeyes el camino a seguir.

\AtEveryBibitemrealiza sus acciones en cada elemento de la bibliografía, mientras \AtEveryCitekeyrealiza sus acciones en cada elemento citado. (Ver págs. 228-229 delbiblatexdocumentación).

Entonces, para deshacerse de, digamos, el titleúnico en las citas, debe optar por \AtEveryCitekey{\clearfield{title}}: titleluego se ignora en las citas, pero aún se imprime en la bibliografía. De manera análoga, \AtEveryBibitem{\clearfield{urlyear}\clearfield{urlmonth}\clearfield{urlday}}elimina la fecha de la URL sólo en la bibliografía, no en las citas.

Para deshacerse de la fecha de la URL en todas partes, puede emitir

\AtEveryBibitem{\clearfield{urlyear}\clearfield{urlmonth}\clearfield{urlday}}
\AtEveryCitekey{\clearfield{urlyear}\clearfield{urlmonth}\clearfield{urlday}}

Las restricciones de tipo pueden ser aplicadas por \ifentrytypeconstrucciones incluso más complejas como esta.

\AtEveryBibitem{%
  \ifentrytype{online}
    {}
    {\clearfield{urlyear}\clearfield{urlmonth}\clearfield{urlday}}}

\AtEveryCitekey{%
  \ifboolexpr{test {\ifentrytype{article}} or test {\ifentrytype{book}}}
    {\clearfield{urlyear}\clearfield{urlmonth}\clearfield{urlday}}
    {}}

El primer ejemplo elimina la fecha de la URL para todos menos @onlinelas entradas, mientras que el segundo las elimina solo para @articley @book.


Por razones técnicas (podría pensar en una posible creación de la fecha de la etiqueta), es mejor deshacerse de la fecha de la URL lo antes posible, si no desea usarla en absoluto. Aquí entra en juego el mapeo de fuentes de Biber (ver §4.5.2Modificación dinámica de datos, págs. 148-156 deEl documento).

Queremos deshacernos del urldatecampo en su .bibarchivo, así que simplemente lo configuramos en null.

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldset=urldate, null]
    }
  }
}

Con el mapeo de fuentes, las restricciones de tipo se pueden imponer de \pertypeesta manera

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \pertype{article}
      \pertype{book}
      \step[fieldset=urldate, null]
    }
  }
}

Este mapa ahora solo se aplica a @articles y @books. Lamentablemente, dado que \pertypeno se pueden usar negaciones como lo hicimos anteriormente (como en "aplicar esto solo a las entradas que no lo son @online"), tal vez valga la pena solicitar una función (valió la pena una ynuestro deseo ha sido concedido).

Dado que el campo de fecha es un poco especial en la forma en que lo maneja biblatex. En el documento está disponible en tres campos yeary month( daypara que se pueda utilizar \AtEveryCitekey{\clearfield{month}}sin ningún problema) para propósitos de mapeo de código fuente (recuerde, el mapeo de código fuente es uno de los primeros pasos que toma Biber con un archivo, en este punto no se ha hecho nada). interpretado o leído del archivo) a menudo la fecha se ingresa como date = {YYYY-MM-DD}, es por eso que simplemente eliminar el monthcampo en el mapeo de origen solo ayudará a aquellos que ingresan la fecha como year = {2014}, month = {03}, day={04}(lo cual es posible, pero un poco menos cómodo). Sin embargo, lo que podemos hacer es hacer que la fecha sea solo de un año con RegEx.

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldset=month, null]
      \step[fieldsource=date,
            match=\regexp{([0-9]{4})-[0-9]{2}(-[0-9]{2})*},
            replace=\regexp{$1}]
    }
  }
}

Buscamos una cadena con el formato "AAAA-MM-DD" o posiblemente simplemente "AAAA-MM-DD" y conservamos la parte "AAAA", conservando así sólo el año. También configuramos el mes nullpara aquellos que prefieren ingresar la fecha de manera más detallada.

MWE

\documentclass{article}
\usepackage[style=authoryear,backend=biber,mergedate=false]{biblatex}
\addbibresource{biblatex-examples.bib}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \pertype{online}
      \step[fieldset=urldate, null]
    }
    \map{
      \step[fieldset=month, null]
      \step[fieldsource=date,
            match=\regexp{([0-9]{4})-[0-9]{2}(-[0-9]{2})*},
            replace=\regexp{$1}]
    }
  }
}

\begin{document}
\cite{baez/online,itzhaki,markey}

\printbibliography
\end{document}

Da

ingrese la descripción de la imagen aquí

A continuación se muestra el resultado sin ningún mapeo de fuente para comparar.

ingrese la descripción de la imagen aquí

Respuesta2

La segunda solución de @moewe funcionó para mí (incluso para \fullcite), pero encontréaquíuna solución más corta:

\AtEveryCitekey{\UseBibitemHook}

información relacionada