Como o "título" é definido no bibtex? Qual é a lista de palavrasnãocolocar em maiúscula e em qual arquivo ela está definida? É possível mudar isso? Verifiquei o .bst
arquivo, mas aparentemente ele está delegado a uma função change.case
cuja definição não consigo encontrar.
Responder1
Até onde eu sei, não existe biblatex
um estilo BibTeX (nem qualquer) que implemente uma macro/função "converter para maiúsculas e minúsculas" (haviauma pergunta há algum tempo sobre como conseguir isso combiblatex
, a resposta mostra uma maneira de começar com essa macro no biblatex
Biber).
Existe, no entanto, uma função para transformar os títulos em maiúsculas e minúsculas (primeira letra da primeira palavra em maiúscula, restante em minúscula). Depende do estilo se esta função é usada ou não. Se o seu estilo aplica maiúsculas e minúsculas, você provavelmente encontrará uma linha como esta no .bst
arquivo title "t" change.case$
.
Portanto, as regras são fornecer os títulos em caixa de título no .bib
arquivo e fazer com que o estilo da bibliografia os converta para caixa de frase, se desejado (cf.Qual é a caixa adequada a ser usada ao armazenar títulos no banco de dados bibliográfico?).
Geralmente, então, os títulos nos .bib
arquivos devem sempre ser dados em maiúsculas, onde adicionalmente as palavras quesempre tem que ser maiúsculode certa forma (nomes, siglas, fórmulas etc.) são colocados entre chaves {}
.
Exemplo
title = {From {Brouwer} to {Hilbert}: {The} Debate on the Foundations of Mathematics in the 1920s}
title = {{NASA} Ends Unmanned Launchings in {Florida}}
Veja tambémBibTeX perde letras maiúsculas ao criar arquivo .bbl, especialmenteResposta de Alexis.
Responder2
A change.case$
função integrada é descrita na fonte ( texk/bibtex-x/bibtex-4.c
no TeX Live):
* The |built_in| function change.case$ pops the top two (string)
* literals; it changes the case of the second according to the
* specifications of the first, as follows. (Note: The word `letters' in
* the next sentence refers only to those at brace-level~0, the top-most
* brace level; no other characters are changed, except perhaps for
* special characters, described shortly.) If the first literal is the
* string t, it converts to lower case all letters except the very
* first character in the string, which it leaves alone, and except the
* first character following any |colon| and then nonnull |white_space|,
* which it also leaves alone; if it's the string l, it converts all
* letters to lower case; if it's the string u, it converts all
* letters to upper case; and if it's anything else, it complains and
* does no conversion. It then pushes this resulting string. If either
* type is incorrect, it complains and pushes the null string; however,
* if both types are correct but the specification string (i.e., the
* first string) isn't one of the legal ones, it merely pushes the second
* back onto the stack, after complaining. (Another note: It ignores
* case differences in the specification string; for example, the strings
* t and T are equivalent for the purposes of this |built_in|
* function.)
Isso é complexo e não entendi a maior parte, mas na prática acho que o que precisa ser lembrado é que mesmo depois de pontuação caracteres como ".", "!" ou "?", as letras são convertidas para minúsculas por padrão... exceto depois de ":" (dois pontos). De fato,
title = {Test! Test? Test: Test. Test, Test}
em um arquivo .bib produz:
\newblock Test! test? test: Test. test, test.
Esta única exceção é bastante estranha e inesperada.
Responder3
Isso pode ser feito da seguinte maneira, se você desejar criar um arquivo .bst personalizado. No seu documento, você precisa das seguintes linhas:
\usepackage{titlecaps}
\Addlcwords{the of into}
onde \usepackage
faz uso do titlecaps
pacote que contém a \titlecap
macro. A \Addlcwords
macro fornece uma lista de palavras que devem permanecer em letras minúsculas e não em maiúsculas.
No seu .bst
arquivo, você precisa adicionar uma nova macro:
FUNCTION {titlecap}
{ duplicate$ empty$
{ pop$ "" }
{ "\titlecap{" swap$ * "}" * }
if$
}
A única coisa que resta a fazer é usá-lo para os vários estilos de documento que você está formatando. Por exemplo, uma linha no seu estilo poderia dizer algo assim:
title ". " * output
que imprime o título, concatena um ponto final e gera o resultado. Agora, você editaria isso para dizer:
title titlecap ". " * output
que primeiro aplicará a titlecap
macro a title
, antes de concatenar o período e gerar o resultado. a invocação de \titlecap
na macro colocará em maiúscula a primeira letra de cada palavra, exceto aquelas da lista de exclusão. Veja a documentação do pacote emhttp://ctan.org/pkg/titlecaps.