Implementación de “Título Caso” en Bibtex

Implementación de “Título Caso” en Bibtex

¿Cómo se define "título" en bibtex? cual es la lista de palabrasnoponer en mayúscula y en qué archivo está definido? Es posible cambiarlo? Revisé el .bstarchivo, pero aparentemente está delegado a una función change.casecuya definición no puedo encontrar.

Respuesta1

Hasta donde yo sé, no existe ningún biblatexestilo BibTeX (ni ningún otro) que implemente una macro/función de "convertir a título" (habíauna pregunta hace un tiempo sobre cómo lograr esto conbiblatex, la respuesta muestra una manera de comenzar con una macro de este tipo biblatexcon Biber).

Sin embargo, existe una función para convertir los títulos en mayúsculas y minúsculas (primera letra de la primera palabra en mayúscula y el resto en minúsculas). Depende del estilo si se utiliza o no esta función. Si su estilo aplica mayúsculas y minúsculas, probablemente encontrará una línea como esta en el .bstarchivo title "t" change.case$.

Entonces, las reglas son dar los títulos en mayúsculas y minúsculas en el .bibarchivo y hacer que el estilo de bibliografía los convierta a mayúsculas y minúsculas si lo desea (cf.¿Cuál es la mayúscula adecuada a utilizar al almacenar títulos en la base de datos de bibliografía?).

Por lo general, los títulos de .biblos archivos siempre deben escribirse en mayúsculas y minúsculas, donde además se incluyen las palabras quesiempre tiene que estar en mayúsculade cierta manera (nombres, acrónimos, fórmulas, etc.) están encerrados entre llaves {}.

Ejemplo

title = {From {Brouwer} to {Hilbert}: {The} Debate on the Foundations of Mathematics in the 1920s}
title = {{NASA} Ends Unmanned Launchings in {Florida}}

Ver tambiénBibTeX pierde mayúsculas al crear un archivo .bbl, especialmentela respuesta de alexis.

Respuesta2

La change.case$función incorporada se describe en la fuente ( texk/bibtex-x/bibtex-4.cen 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.)

Eso es complejo y no entendí la mayor parte, pero en la práctica, creo que lo que hay que recordar es que incluso después de caracteres de puntuación como ".", "!" o "?", las letras se convierten a minúsculas de forma predeterminada... excepto después de ":" (dos puntos). En efecto,

title = {Test! Test? Test: Test. Test, Test}

en un archivo .bib produce:

\newblock Test! test? test: Test. test, test.

Esta única excepción es bastante extraña e inesperada.

Respuesta3

Esto se puede hacer de la siguiente manera, si está dispuesto a crear un archivo .bst personalizado. En su documento, necesita las siguientes líneas:

\usepackage{titlecaps}
\Addlcwords{the of into}

donde \usepackagehace uso del titlecapspaquete que tiene la \titlecapmacro. La \Addlcwordsmacro proporciona una lista de palabras que deben permanecer en minúsculas y no en mayúscula.

En su .bstarchivo, necesita agregar una nueva macro:

FUNCTION {titlecap}
{ duplicate$ empty$
    { pop$ "" }
    { "\titlecap{" swap$ * "}" * }
  if$
}

Lo único que queda por hacer es usarlo para los distintos estilos de documento que esté formateando. Por ejemplo, una línea de tu estilo podría haber dicho algo como esto:

title ". " * output

que imprime el título, concatena un punto y genera el resultado. Ahora, editarías eso para decir:

title titlecap ". " * output

que primero aplicará la titlecapmacro a title, antes de concatenar el período y generar el resultado. la invocación de\titlecap en la macro pondrá en mayúscula la primera letra de cada palabra, excepto aquellas en la lista de exclusión. Consulte la documentación del paquete enhttp://ctan.org/pkg/titlecaps.

información relacionada