
A combinação de biblatex-chicago
Zotero e Zotero produz muitos campos excessivos na bibliografia. Este problema poderia ser resolvido adicionando advertências ao preâmbulo como estas:
\AtEveryBibitem{%
\ifentrytype{online}
{}
{\clearfield{urlyear}\clearfield{urlmonth}\clearfield{urlday}}}
(Descrito em detalhes na resposta à minha pergunta anterior:Campos excessivos no estilo biblatex chicago autor-data.)
Esta solução funcionou bem para mim, mas agora tenho que produzir um plano de estudos usando \fullcite
o comando. Infelizmente, esta solução não resolve o problema de entradas bibliográficas completas fora da própria bibliografia.
Aqui está o código com a bibliografia dentro (para obter o nome e o sobrenome do autor na ordem certa, uso a seguinte solução:Biblatex-chicago: \fullcite muda nome e sobrenome):
\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}
Aqui está a saída. Observe os campos excessivos na citação completa no texto (estão ausentes nas Referências):
Qualquer ajuda, especialmente soluções simples e acessíveis, seria muito apreciada.
Responder1
Se você deseja controlar a urldate
bibliografia e as citações de forma independente, \AtEveryBibitem
este \AtEveryCitekey
é o caminho a seguir.
\AtEveryBibitem
executa suas ações em cada item da bibliografia, enquanto \AtEveryCitekey
executa suas ações em cada item citado. (Ver páginas 228-229 dobiblatex
documentação).
Então, para se livrar, digamos, do title
único nas citações, você escolheria \AtEveryCitekey{\clearfield{title}}
- o title
é então ignorado nas citações, mas ainda impresso na bibliografia. Analogamente, \AtEveryBibitem{\clearfield{urlyear}\clearfield{urlmonth}\clearfield{urlday}}
elimina a data da URL apenas na bibliografia, não nas citações.
Para se livrar da data do URL em todos os lugares, você pode emitir
\AtEveryBibitem{\clearfield{urlyear}\clearfield{urlmonth}\clearfield{urlday}}
\AtEveryCitekey{\clearfield{urlyear}\clearfield{urlmonth}\clearfield{urlday}}
Restrições de tipo podem ser aplicadas por \ifentrytype
construções ainda mais complexas 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}}
{}}
O primeiro exemplo exclui a data do URL para todas @online
as entradas, enquanto o segundo as exclui apenas para @article
e @book
.
Por razões técnicas (eu poderia pensar em uma possível criação da data do rótulo), é melhor se livrar da data do URL o mais cedo possível, se você não quiser usá-la. Aqui entra o mapeamento de origem de Biber (ver §4.5.2Modificação Dinâmica de Dados, pp. 148-156 deo documento).
Queremos nos livrar do urldate
campo do seu .bib
arquivo, então apenas o configuramos como null
.
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldset=urldate, null]
}
}
}
Com o mapeamento de origem, restrições de tipo podem ser impostas da \pertype
mesma forma
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\pertype{article}
\pertype{book}
\step[fieldset=urldate, null]
}
}
}
Este mapa agora se aplica apenas a @article
s e @book
s. Infelizmente, como \pertype
não é possível usar negações como fizemos acima (como em "aplicar isso apenas a entradas que não são @online
"), talvez valha a pena solicitar um recurso (- valeu a pena enosso desejo foi concedido).
Como o campo de data é um pouco especial na forma como é tratado por biblatex
. No documento ele está disponível como três campos year
e month
( day
para que se possa usar \AtEveryCitekey{\clearfield{month}}
sem problemas), para fins de mapeamento de origem (lembre-se, o mapeamento de origem é um dos primeiros passos que Biber dá com um arquivo, até o momento nada foi feito interpretado ou lido do arquivo) muitas vezes a data é inserida como date = {YYYY-MM-DD}
, é por isso que apenas excluir o month
campo no mapeamento de origem só ajudará aqueles que inserirem a data como year = {2014}, month = {03}, day={04}
(o que é possível, mas um pouco menos confortável). O que podemos fazer é tornar a data apenas anual com 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}]
}
}
}
Procuramos uma string no formato "AAAA-MM-DD" ou possivelmente apenas "AAAA-MM-DD" e retemos apenas a parte "AAAA", retendo assim apenas o ano. Também definimos o mês null
para quem prefere inserir a data de forma mais detalhada.
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}
Dá
Abaixo está a saída sem qualquer mapeamento de origem para comparação
Responder2
A segunda solução do @moewe funcionou para mim (até para \fullcite
), mas descobriaquiuma solução mais curta:
\AtEveryCitekey{\UseBibitemHook}