biblatex: Preservar letras maiúsculas em inproceedings/booktitle

biblatex: Preservar letras maiúsculas em inproceedings/booktitle

Estou usando Biblatex-APA/Biber com LyX e um arquivo Bibtex produzido a partir do Mendeley. Posso produzir bibliografias sem problemas, mas gostaria de alterar o estilo de referência para inproceedings/booktitle. No momento, minhas referências são:

Cole, R., Purao, S., Rossi, M. & Sein, M. (2005). Being proactive: Where action research meets design research. In Proceedings of the 26th international conference on information systems.

Do meu arquivo Bibtex:

@inproceedings{Cole2005,
   author = {Cole, Robert and Purao, Sandeep and Rossi, Matti and Sein, Maung},
   booktitle = {Proceedings of the 26th International Conference on Information Systems},
   title = {{Being proactive: Where action research meets design research}},
   year = {2005}
}

Agora quero preservar a capitalização dos meus procedimentos/título do livro para obter isto:

Cole, R., Purao, S., Rossi, M. & Sein, M. (2005). Being proactive: Where action
research meets design research. In Proceedings of the 26th International Conference
on Information Systems.

Eu experimentei o seguinte, mas não tive sucesso.

\DeclareFieldFormat[inproceedings]{booktitle}{#1}

Alguma sugestão?

Responder1

No arquivo de estilo de bibliografia apa.bbx,

\DeclareFieldFormat[inproceedings]{booktitle}{#1}

não funciona porque o booktitlecampo está definido com \printfield[apacase]{booktitle}, onde a apacasediretiva de formatação é definida como

\DeclareFieldFormat{apacase}{\MakeSentenceCase*{#1}}

Para preservar a capitalização de origem do booktitlecampo no @inproceedingstipo de entrada, você pode redefinir a booktitlemacro bibliográfica ou a apacasediretiva no preâmbulo do documento. Um exemplo desta última abordagem é:

\DeclareFieldFormat{apacase}{%
  \ifboolexpr{ test {\ifentrytype{inproceedings}}
    and ( test {\ifcurrentfield{booktitle}}
          or test {\ifcurrentfield{booksubtitle}} ) }
    {#1}{\MakeSentenceCase*{#1}}}

Para evitar maiúsculas e minúsculas em todos os títulos, exceto os originais ( origtitle) e complementos de título, use

\DeclareFieldFormat{apacase}{#1}

em vez de. Como biblatex-apadepende apenas da variante com estrela, \MakeSentenceCase*você pode evitar todas as letras maiúsculas e minúsculas adicionando \DeclareCaseLangs{}ao preâmbulo e usando o hyphenationcampo em seu bibarquivo.

Observe que você pode evitar proteger algumas palavras contra minúsculas por meio do subtitlecampo. Por exemplo:

   title = {Being proactive},
   subtitle = {Where action research meets design research},

Responder2

Pode-se preservar a capitalização específica simplesmente colocando a letra da pergunta entre chaves. Então

@inproceedings{Cole2005,
   author = {Cole, Robert and Purao, Sandeep and Rossi, Matti and Sein, Maung},
   booktitle = {{Proceedings} of the 26th {International} {Conference} on {Information} {Systems}},
   title = {{Being proactive: Where action research meets design research}},
   year = {2005}
}

fará o trabalho. Mas na maioria das vezes é muito mais fácil colocar a linha inteira entre chaves, assim como é feito com o título.

Responder3

Como estava procurando uma solução conveniente, pelo menos para mim, escrevi um pequeno script Python que analisa meu arquivo bib local produzido pelo Mendeley. Este script coloca os títulos dos livros entre duas chaves.

import re
import fileinput

library = 'path/to/file'

import re

def re_sub_verbose(pattern, replace, string):
  def substitute(match):
    return match.expand(replace)

  result = re.sub(pattern, substitute, string)

  return result

for line in fileinput.input(library, inplace=1):
    print re_sub_verbose("booktitle = \{(.*)\},", "booktitle = {{\\1}},", line)

informação relacionada