Estou usando biblatex-chicago para minhas referências. Meu arquivo de inscrição inclui muitas referências a trabalhos de conferências que importei da biblioteca digital da ACM. As abreviaturas destas conferências são muitas vezes mais conhecidas do que os títulos completos das próprias conferências. Portanto, para inproceedings
entradas, incluí a abreviatura usando o series
campo. Eu gostaria de agrupar os campos booktitle
e series
juntos.
\documentclass{article}
\usepackage[
authordate,
backend=biber,
]{biblatex-chicago} % biblatex setup
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@inproceedings{paper2012,
author = {Smith, John},
date = {2012},
title = {Paper Title},
booktitle = {Proceedings of the 2012 ACM annual conference on Human Factors in Computing Systems},
series = {CHI '12},
pages = {937-946},
location = {New York, NY, USA},
publisher = {{ACM}},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\nocite{*}
\begin{document}
\printbibliography
\end{document}
Este exemplo atualmente produz o seguinte:
SMITH, João. 2012. “Título do artigo” emAnais da conferência anual ACM de 2012 sobre Fatores Humanos em Sistemas Computacionais, 937–946. CHI '12. Nova York, NY, EUA: ACM.
em vez disso, gostaria de alterar a saída das inproceedings
entradas, para que os campos booktitle
e series
sejam agrupados assim:
SMITH, João. 2012. “Título do artigo” emAnais da Conferência Anual da ACM de 2012 sobre Fatores Humanos em Sistemas de Computação - CHI '12, 937–46. Nova York, NY, EUA: ACM.
uma ressalva importante é que nem todas inproceedings
as entradas possuem um series
campo.
isso é possível com biblatex-chicago?
Responder1
As outras soluções sugeridas para serem usadas booktitleaddon
em vez de series
. Pessoalmente, não acho que esse series
seja o campo certo a ser usado. Considere, por exemplo, a série Springer Lecture Notes in Computer Science, publicando anais de conferências de ciência da computação. Cada livro tem seu título (que muitas vezes é diferente do título da conferência), mas os anais são conhecidos pelo nome da conferência ou mais frequentemente pela sigla. E então costuma-se incluir uma referência à série LNCS e ao número da série.
Biblatex, quando usado com biber
, oferece a possibilidade de criar um novo campo. Sugiro adicionar o acronym
campo.
Isso pode ser feito com
\begin{filecontents}{biblatex-dm.cfg}
\DeclareDatamodelFields[type=field,datatype=literal,skipout=false]{acronym}
\end{filecontents}
Ele cria um arquivo de configuração local do biblatex.
Depois temos que dar as instruções sobre como compor o novo campo (em itálico para in proceedings
)
\DeclareFieldFormat[inproceedings]{acronym}{\textit{#1}}
A etapa final é modificar o apropriado bibmacro
, neste caso btitle+bstitle
.
\newbibmacro*{btitle+bstitle}{%
\iffieldundef{booktitle}
{}
{\ifthenelse{\ifentrytype{audio}\OR\ifentrytype{music}\OR%
\ifentrytype{video}}%
{}%
{\usebibmacro{cms-in:}}%
\printtext{%
\printfield{booktitle}%
\setunit{\addcolon\addspace}%
\printfield[booktitle]{booksubtitle}}%
\setunit{\addspace---\addspace}%
\ifentrytype{inproceedings}
{\printfield{acronym}}
{}%
\newcunit
\printfield{booktitleaddon}%
\setunit*{\addcomma\addspace}}}
Observe que usamos \ifentrytype{inproceedings}
para localizar a alteração apenas para este tipo de entrada.
Aqui está o MWE completo
\documentclass{article}
\usepackage[
authordate,
backend=biber,
]{biblatex-chicago} % biblatex setup
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@inproceedings{paper201x,
author = {Smith, John},
date = {2012},
title = {Paper Title},
booktitle = {Long Title of the Confererence},
acronym = {CONF'2012},
pages = {937-946},
series = {LNCS},
number = {1234},
location = {Heidelberg},
publisher = {Springer},
}
@inproceedings{paper2012a,
author = {Smith, John},
date = {2012},
title = {Paper Title},
booktitle = {Proceedings of the 2012 ACM annual conference on Human Factors in Computing Systems},
series = {CHI '12},
pages = {937-946},
location = {New York, NY, USA},
publisher = {{ACM}},
}
@inproceedings{paper2012b,
author = {Smith, John},
date = {2012},
title = {Paper Title},
booktitle = {Proceedings of the 2012 ACM annual conference on Human Factors in Computing Systems},
acronym = {CHI '12},
pages = {937-946},
location = {New York, NY, USA},
publisher = {{ACM}},
}
\end{filecontents}
\begin{filecontents}{biblatex-dm.cfg}
\DeclareDatamodelFields[type=field,datatype=literal,skipout=false]{acronym}
\end{filecontents}
\DeclareFieldFormat[inproceedings]{acronym}{\textit{#1}}
\newbibmacro*{btitle+bstitle}{% InIn fix from N&B
\iffieldundef{booktitle}
{}
{\ifthenelse{\ifentrytype{audio}\OR\ifentrytype{music}\OR%
\ifentrytype{video}}%
{}%
{\usebibmacro{cms-in:}}%
\printtext{%
\printfield{booktitle}%
\setunit{\addcolon\addspace}%
\printfield[booktitle]{booksubtitle}}%
\setunit{\addspace---\addspace}%
\ifentrytype{inproceedings}
{\printfield{acronym}}
{}%
\newcunit
\printfield{booktitleaddon}%
\setunit*{\addcomma\addspace}}}
\addbibresource{\jobname.bib}
\nocite{*}
\begin{document}
\printbibliography
\end{document}
Responder2
Meu conselho seria usar o booktitleaddon
campo, pois ele já foi projetado para ser impresso no local desejado. No entanto, esses tipos de campos geralmente são bastante 'profundos' no driver, então você precisa ter cuidado para garantir que suas alterações afetem apenas inproceedings
as entradas, uma vez que ele usa as mesmas bibmacros que outros "in-
Eu faria assim: criaria novas bibmacros e usaria o xpatch
pacote para substituir o que for necessário.
\documentclass{article}
\usepackage[
authordate,
backend=biber,
]{biblatex-chicago} % biblatex setup
\usepackage{xpatch}
\usepackage{xcolor}
\newcommand{\diff}[1]{\textcolor{red}{#1}}% <-- just to highlight differences
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}% we need more entries...
@inproceedings{paper2012,
author = {Smith, John},
date = {2012},
title = {Paper Title},
booktitle = {Proceedings of the 2012 ACM annual conference on Human Factors in Computing Systems},
booktitleaddon = {\diff{CHI '12}},
number = 33,
series = {\diff{This is the series}},
pages = {937-946},
location = {New York, NY, USA},
publisher = {{ACM}},
}
@inproceedings{paper2013,
author = {Smith, John},
date = {2013},
title = {Different Paper Title},
booktitle = {Proceedings of the 2012 ACM annual conference on Human Factors in Computing Systems},
booksubtitle = {\diff{With a Subtitle}},
booktitleaddon = {CHI '12},
number = 34,
series = {\diff{This is the series}},
pages = {937-946},
location = {New York, NY, USA},
publisher = {{ACM}},
}
@inproceedings{paper2011,
author = {Smith, John},
date = {2011},
title = {Another Paper Title},
booktitle = {Proceedings of the 2012 ACM annual conference on Human Factors in Computing Systems},
booksubtitle = {\diff{With a Subtitle \& No Booktitleaddon}},
pages = {937-946},
location = {New York, NY, USA},
publisher = {{ACM}},
}
@incollection{paper2014,
author = {Doe, Jane},
date = {2014},
title = {Jane's Paper Title},
booktitle = {Collected Essays},
booksubtitle = {\diff{With a Series and a Booktitleaddon}},
series = {CHI '13},
booktitleaddon = {\diff{This is the booktitleaddon (which is preceded by the normal comma)}},
pages = {937-946},
location = {New York, NY, USA},
publisher = {{ACM}},
}
\end{filecontents*}
% we need our own bibmacros
\newbibmacro*{INP-btitle+bstitle}{%
\iffieldundef{booktitle}
{}
{\printtext{%
\printfield{booktitle}%
\setunit{\addcolon\addspace}%
\printfield[booktitle]{booksubtitle}}%
\newcunit
\setunit{\addspace ---\addspace}%
\printfield{booktitleaddon}}}
\newbibmacro*{INP-mtitle+mstitle+vol+part+btitle+bstitle}{%
\usebibmacro{INP-btitle+bstitle}%
\iffieldundef{booktitle}
{\setunit{\addperiod\addspace}}% Fix customc?
{\setunit{\addcomma\addspace}}%
\iffieldundef{maintitle}
{}
{\iffieldundef{volume}
{\printtext{%
\printfield{maintitle}%
\setunit{\addcolon\addspace}%
\printfield[maintitle]{mainsubtitle}}%
\newcunit
\printfield{maintitleaddon}}
{\printfield{volume}%
\printfield{part}%
\setunit{\addspace}
\bibstring{ofseries}%
\setunit{\addspace}
\printtext{%
\printfield{maintitle}%
\setunit{\addcolon\addspace}%
\printfield[maintitle]{mainsubtitle}}%
\newcunit
\printfield{maintitleaddon}}}}
\addbibresource{\jobname.bib}
% this puts the booktitleaddon field in 'italics' only for @inproceedings entry types
\DeclareFieldFormat[inproceedings]{booktitleaddon}{\emph{#1}}
% this replaces a portion of the default inproceedings bibdriver with the macrs we defined above.
\xpatchbibmacro{inproceedings}{mtitle+mstitle+vol+part+btitle+bstitle}{INP-mtitle+mstitle+vol+part+btitle+bstitle}
\nocite{*}
\begin{document}
\printbibliography
\end{document}
... E, enquanto eu escrevia isso, vi que moewe postou uma solução diferente. Parte disso pode ser combinada aqui para que você não precise reescrever suas entradas de peito. No entanto, ainda acho que mapear booktitleaddon
é o melhor campo a ser usado por padrão, até porque é muito mais provável que os livros tenham um subtítulo do que informações bibliográficas que precisam ser colocadas no titleaddon
campo.
Responder3
Acho que a posição do título abreviado (seu series
campo) é a de booksubtitle
, então o que podemos fazer é o seguinte:
Apenas alteramos o series
campo para @inproccedings
to booksubtitle
. É claro que isso só funciona se não houver nenhuma entrada que realmente tenha uma series
entrada adequada e também booksubtitle
precisa estar vazia.
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\pertype{inproceedings}
\step[fieldsource=series, fieldtarget=booksubtitle]
}
\map{
\pertype{proceedings}
\step[fieldsource=series, fieldtarget=subtitle]
}
}
}
MWE
\documentclass{article}
\usepackage[
authordate,
backend=biber,
]{biblatex-chicago} % biblatex setup
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@inproceedings{paper2012,
author = {Smith, John},
date = {2012},
title = {Paper Title},
booktitle = {Proceedings of the 2012 ACM annual conference on Human Factors in Computing Systems},
series = {CHI '12},
pages = {937-946},
location = {New York, NY, USA},
publisher = {{ACM}},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\nocite{*}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\pertype{inproceedings}
\step[fieldsource=series, fieldtarget=booksubtitle]
}
\map{
\pertype{proceedings}
\step[fieldsource=series, fieldtarget=subtitle]
}
}
}
\begin{document}
\printbibliography
\end{document}