
La combinación de biblatex-chicago
y 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 \fullcite
el 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):
Cualquier ayuda, especialmente soluciones simples y accesibles, sería muy apreciada.
Respuesta1
Si desea controlar la urldate
bibliografía y las citas de forma independiente, \AtEveryBibitem
este \AtEveryCitekey
es el camino a seguir.
\AtEveryBibitem
realiza sus acciones en cada elemento de la bibliografía, mientras \AtEveryCitekey
realiza sus acciones en cada elemento citado. (Ver págs. 228-229 delbiblatex
documentación).
Entonces, para deshacerse de, digamos, el title
único en las citas, debe optar por \AtEveryCitekey{\clearfield{title}}
: title
luego 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 \ifentrytype
construcciones 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 @online
las entradas, mientras que el segundo las elimina solo para @article
y @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 urldate
campo en su .bib
archivo, 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 \pertype
esta manera
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\pertype{article}
\pertype{book}
\step[fieldset=urldate, null]
}
}
}
Este mapa ahora solo se aplica a @article
s y @book
s. Lamentablemente, dado que \pertype
no 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 year
y month
( day
para 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 month
campo 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 null
para 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
A continuación se muestra el resultado sin ningún mapeo de fuente para comparar.
Respuesta2
La segunda solución de @moewe funcionó para mí (incluso para \fullcite
), pero encontréaquíuna solución más corta:
\AtEveryCitekey{\UseBibitemHook}