Comment gérer une chaîne trop longue dans #

Parfois donne l’avertissement suivant :

Warning--you've exceeded 1000, the global-string-size, for entry
XXX
while executing--line 42 of file ma_biblio.bst
*Please notify the bibstyle designer*

Il est généralement du à deux causes simultanées :

  • un résumé ou une annotation avec un volume de texte important dans la base de données ;

  • l’utilisation du style bibliographique abstract.bst ou des styles qui en sont dérivés (dana la mesure où il n’y a généralement pas d’annotations dans les autres styles).

1.  Avec une modification du fichier de style bibliographique#

La solution est de faire une copie du fichier de style (par exemple abstract-long.bst). Maintenant, éditez-le :

  • trouvez la fonction output.nonnull. Sa première ligne (ligne 60 dans la version sur CTAN) doit être :

    { 's :=
    
  • changez cette ligne en

    { swap$
    
  • enfin, supprimez la dernière ligne de la fonction, qui dit simplement s (ligne 84 dans la version sur CTAN).

Enfin, modifiez votre commande \bibliographystyle{⟨style⟩} pour qu’elle fasse référence au nom du nouveau fichier de ⟨style⟩.

Cette technique s’applique également à n’importe quel style bibliographique : la même modification peut être apportée à n’importe quelle fonction output.nonnull similaire.

2.  Avec une modification de l’entrée bibliographique#

Si vous êtes réticent à faire ce genre de changement, la seule solution serait de retirer l’entrée de la base de données, afin de ne pas rencontrer la limite de mais vous pouvez avoir besoin de conserver l’entrée parce qu’elle sera incluse dans le document dactylographié. Dans ce cas, placez le corps de l’entrée dans un fichier séparé :

@article{long.boring,
  author   =  "Fred Bavard",
  ...      = "...",
  abstract =  "{\input{abstracts/long.tex}}
}

De cette façon, ne s’occupe que du nom du fichier, mais il demande bien à (le cas échéant) d’inclure votre texte long présent dans le fichier long.tex.