
と Zoteroを組み合わせると、biblatex-chicago
参考文献に過剰なフィールドが多数生成されます。この問題は、次のような注意事項を前文に追加することで解決できます。
\AtEveryBibitem{%
\ifentrytype{online}
{}
{\clearfield{urlyear}\clearfield{urlmonth}\clearfield{urlday}}}
(前回の質問の回答に詳しく記載されています:Biblatex Chicago の著者日付形式のフィールドが多すぎる。
この解決策は私にとってはうまくいきましたが、コマンドを使用してシラバスを作成する必要があります\fullcite
。残念ながら、この解決策では、参考文献自体の外にある完全な参考文献エントリの問題は解決されません。
ここに参考文献を含むコードがあります (著者の名と姓を正しい順序で取得するために、次のソリューションを使用します)。Biblatex-chicago: \fullcite は姓と名を反転します):
\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}
出力は次のとおりです。本文中の完全な引用に余分なフィールドがあることに注意してください (参考文献には存在しません)。
どのようなご助力でも、特にシンプルでアクセスしやすい解決策があれば大変助かります。
答え1
urldate
参考文献と引用文献を個別に制御したい場合は、\AtEveryBibitem
これ\AtEveryCitekey
が最適な方法です。
\AtEveryBibitem
は参考文献のすべての項目でアクションを実行しますが、 は\AtEveryCitekey
引用されたすべての項目でアクションを実行します。(228-229ページを参照)biblatex
ドキュメンテーション)。
したがって、たとえば引用文献内の のみを削除するにはtitle
、 を使用します。\AtEveryCitekey{\clearfield{title}}
はtitle
引用文献内では無視されますが、参考文献には引き続き印刷されます。 同様に、 は\AtEveryBibitem{\clearfield{urlyear}\clearfield{urlmonth}\clearfield{urlday}}
URL の日付を参考文献内でのみ削除し、引用文献内では削除しません。
URLの日付をどこからでも削除するには、次のようにします。
\AtEveryBibitem{\clearfield{urlyear}\clearfield{urlmonth}\clearfield{urlday}}
\AtEveryCitekey{\clearfield{urlyear}\clearfield{urlmonth}\clearfield{urlday}}
\ifentrytype
型制限は、次のように、またはさらに複雑な構造で適用できます。
\AtEveryBibitem{%
\ifentrytype{online}
{}
{\clearfield{urlyear}\clearfield{urlmonth}\clearfield{urlday}}}
\AtEveryCitekey{%
\ifboolexpr{test {\ifentrytype{article}} or test {\ifentrytype{book}}}
{\clearfield{urlyear}\clearfield{urlmonth}\clearfield{urlday}}
{}}
最初の例では、エントリを除くすべての URL 日付が削除され@online
、2 番目の例では、および の URL 日付のみが削除され@article
ます@book
。
技術的な理由(ラベルの日付作成の可能性も考えられる)から、URLの日付をまったく使用したくない場合は、できるだけ早く削除する方がよいでしょう。ここで、Biberのソースマッピングが登場します(§4.5.2を参照)。データの動的変更、148-156ページドク)。
urldate
ファイル内のフィールドを削除したい.bib
ので、 に設定しますnull
。
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldset=urldate, null]
}
}
}
\pertype
ソースマッピングでは、次のようにして型制限を課すことができます。
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\pertype{article}
\pertype{book}
\step[fieldset=urldate, null]
}
}
}
@article
このマップは、現在s とsにのみ適用されます@book
。残念ながら、 では\pertype
上記のように否定を使用することはできません (「 ではないエントリにのみ適用する@online
」など)。これは機能リクエストの価値があるかもしれません (- 1 つだけの価値がありました)。私たちの願いは叶えられました)。
日付フィールドは、 による処理方法が少し特殊ですbiblatex
。 ドキュメントではyear
、 、month
の3 つのフィールドとして使用できますday
(問題なく使用できます\AtEveryCitekey{\clearfield{month}}
)。ソース マッピングの目的で (ソース マッピングは Biber がファイルに対して行う最初の手順の 1 つであり、この時点ではファイルから何も解釈または読み込まれていないことに注意してください)、日付は として入力されることがよくありますdate = {YYYY-MM-DD}
。そのため、month
ソース マッピングでフィールドを削除するだけでは、日付を として入力するユーザーのみに役立ちます year = {2014}, month = {03}, day={04}
(これは可能ですが、少し不便です)。ただし、正規表現を使用して日付を年のみにすることはできます。
\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}]
}
}
}
「YYYY-MM-DD」または「YYYY-MM-DD」形式の文字列を検索し、「YYYY」部分のみを保持して、年のみを保持します。null
日付をより詳細に入力することを好む人のために、月も設定します。
ムウェ
\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}
与える
以下は比較のためにソースマッピングなしの出力です。
答え2
@moeweの2番目の解決策は私にとってはうまくいきました(でも\fullcite
)が、ここより短い解決策:
\AtEveryCitekey{\UseBibitemHook}