Agrupando booktile e séries em biblatex-chicago

Agrupando booktile e séries em biblatex-chicago

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 inproceedingsentradas, incluí a abreviatura usando o seriescampo. Eu gostaria de agrupar os campos booktitlee seriesjuntos.

\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 inproceedingsentradas, para que os campos booktitlee seriessejam 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 inproceedingsas entradas possuem um seriescampo.

isso é possível com biblatex-chicago?

Responder1

As outras soluções sugeridas para serem usadas booktitleaddonem vez de series. Pessoalmente, não acho que esse seriesseja 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 acronymcampo.

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}

insira a descrição da imagem aqui

Responder2

Meu conselho seria usar o booktitleaddoncampo, 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 inproceedingsas entradas, uma vez que ele usa as mesmas bibmacros que outros "in-

Eu faria assim: criaria novas bibmacros e usaria o xpatchpacote 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 titleaddoncampo.

Responder3

Acho que a posição do título abreviado (seu seriescampo) é a de booksubtitle, então o que podemos fazer é o seguinte:

Apenas alteramos o seriescampo para @inproccedingsto booksubtitle. É claro que isso só funciona se não houver nenhuma entrada que realmente tenha uma seriesentrada adequada e também booksubtitleprecisa 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}

insira a descrição da imagem aqui

informação relacionada