¿Cómo le digo a BibTeX que imprima el campo 'páginas' para entradas de tipo '@libro'?

¿Cómo le digo a BibTeX que imprima el campo 'páginas' para entradas de tipo '@libro'?

Quiero citar un libro. Obtuve la siguiente información bibliográfica de MathSciNet:

@book {Brylinski,
AUTHOR = {Brylinski, Jean-Luc},
TITLE = {Loop spaces, characteristic classes and geometric
quantization},
SERIES = {Progress in Mathematics},
VOLUME = {107},
PUBLISHER = {Birkh\"{a}user Boston, Inc., Boston, MA},
YEAR = {1993},
PAGES = {xvi+300},
ISBN = {0-8176-3644-7},
MRCLASS = {57Rxx (18G50 55P35 58F06)},
MRNUMBER = {1197353},
MRREVIEWER = {Daniel S. Freed},
DOI = {10.1007/978-0-8176-4731-5},
URL = {https://doi.org/10.1007/978-0-8176-4731-5},}

Desafortunadamente, la entrada bibliográfica formateada no muestra el número de páginas (almacenadas en el pagescampo de la entrada). sale como

Jean-Luc Brylinski. Espacios de bucle, clases características y cuantificación geométrica, volumen 107 de Progreso en Matemáticas. Birkhäuser Boston, Inc., Boston, MA, 1993.

¿Qué cambios debo hacer para que también mencione el número de páginas?

Un ejemplo de trabajo mínimo es

\documentclass[12pt,reqno,a4paper]{amsart}
%\usepackage[utf8]{inputenc} % not needed with up-to-date TeX systems
\usepackage[english]{babel}

\usepackage{amsmath,amsthm,amsfonts,amssymb}
\usepackage{mathtools}
\usepackage{color}

\usepackage{mathrsfs}
\usepackage[all]{xy}
\usepackage{tikz-cd}
\usepackage[normalem]{ulem} % do you *really* need it?
\usepackage{datetime}

\usepackage{hyperref}

\theoremstyle{definition}

\newtheorem{theorem}{Theorem}[section]
\newtheorem{construction}{Construction}[section]
\newtheorem{corollary}{Corollary}[section]
\newtheorem{lemma}{Lemma}[section]
\newtheorem{definition}{Definition}[section]
\newtheorem{remark}{Remark}[section]
\newtheorem{proposition}{Proposition}[section]
\newtheorem{example}{Example}[section]
\newtheorem*{question}{Question}
\newtheorem*{solution}{Solution}
\newtheorem{exercise}{Exercise} 

\newcommand{\mc}{\mathcal}
\newcommand{\mf}{\mathfrak}
\newcommand{\xra}{\xrightarrow}
\newcommand{\ra}{\rightarrow}

\pagestyle{myheadings}

\textheight 9.3in 
\textwidth 6.5in
\calclayout

% metadata

%\date{\today}

\title{****}
\author{***} 

\begin{document}
    %\today
\bibliography{****}
\bibliographystyle{plain}
\end{document}

MWE autónomo (requiere una instalación LaTeX moderna para la [overwrite]función)

\documentclass[12pt,reqno,a4paper]{amsart}

\begin{filecontents}[overwrite]{sample.bib}
@book {Brylinski,
AUTHOR = {Brylinski, Jean-Luc},
TITLE = {Loop spaces, characteristic classes and geometric
quantization},
SERIES = {Progress in Mathematics},
VOLUME = {107},
PUBLISHER = {Birkh\"{a}user Boston, Inc., Boston, MA},
YEAR = {1993},
PAGES = {100-3010},
ISBN = {0-8176-3644-7},
MRCLASS = {57Rxx (18G50 55P35 58F06)},
MRNUMBER = {1197353},
MRREVIEWER = {Daniel S. Freed},
DOI = {10.1007/978-0-8176-4731-5},
URL = {https://doi.org/10.1007/978-0-8176-4731-5},}
\end{filecontents}


%\usepackage[utf8]{inputenc} % not needed with up-to-date TeX systems
\usepackage[english]{babel}

\usepackage{amsmath,amsthm,amsfonts,amssymb}
\usepackage{mathtools}
\usepackage{color}

\usepackage{mathrsfs}
\usepackage[all]{xy}
\usepackage{tikz-cd}
\usepackage[normalem]{ulem} % do you *really* need it?
\usepackage{datetime}

\usepackage{hyperref}

\theoremstyle{definition}

\newtheorem{theorem}{Theorem}[section]
\newtheorem{construction}{Construction}[section]
\newtheorem{corollary}{Corollary}[section]
\newtheorem{lemma}{Lemma}[section]
\newtheorem{definition}{Definition}[section]
\newtheorem{remark}{Remark}[section]
\newtheorem{proposition}{Proposition}[section]
\newtheorem{example}{Example}[section]
\newtheorem*{question}{Question}
\newtheorem*{solution}{Solution}
\newtheorem{exercise}{Exercise} 

\newcommand{\mc}{\mathcal}
\newcommand{\mf}{\mathfrak}
\newcommand{\xra}{\xrightarrow}
\newcommand{\ra}{\rightarrow}

\pagestyle{myheadings}

\textheight 9.3in 
\textwidth 6.5in
\calclayout

% metadata

\begin{document}

\nocite{*}

\bibliography{sample}
\bibliographystyle{plain}
\end{document}

Respuesta1

Te sugiero proceder de la siguiente manera:

  • Busque el archivo plain.bsten su distribución TeX. Haga una copia de este archivo y llame a la copia, digamos, plain-bookpages.bst. (No edite directamente un archivo original sin nombre de su distribución TeX).

  • Abra el archivo plain-bookpages.bsten un editor de texto. El programa que utilices para editar tus archivos tex funcionará bien.

  • En el archivo plain-bookpages.bst, busque la función BibTeX book. En mi copia del archivo, esta función comienza en la línea 557.

  • Inmediatamente antesesta función, inserte el siguiente fragmento de código, que contiene dos funciones BibTeX, bibinfo.checky format.book.pages:

    FUNCTION {bibinfo.check}
    { swap$ duplicate$ missing$
        { pop$ pop$ "" }
        { duplicate$ empty$
            { swap$ pop$ }
            { swap$ pop$ }
          if$
        }
      if$
    }
    FUNCTION {format.book.pages}
    { pages "pages" bibinfo.check
      duplicate$ empty$ 'skip$
        { " " * "pages" * }   
      if$
    }
    
  • En la bookfunción, busque la siguiente línea:

          publisher "publisher" output.check
    

    Inmediatamente antesesta línea, inserte la siguiente línea:

          format.book.pages output
    
  • Guarde el archivo plain-bookpages.bsten la carpeta que contiene sus archivos tex principales o en una carpeta en la que BibTeX busca. Si elige la segunda opción, asegúrese de actualizar adecuadamente la base de datos de nombres de archivos de su distribución TeX. Si la frase anterior te parece un galimatías, te recomiendo que elijas la primera opción.

  • En su archivo tex principal, cambie la instrucción \bibliographystyle{plain}y \bibliographystyle{plain-bookpages}realice un ciclo de recompilación completo (LaTeX, BibTeX y LaTeX dos veces más) para propagar completamente todos los cambios.

¡Feliz BibTeXing!

Por cierto, creo que esequivocadoque MathSciNet combina información sobre el editor de la entrada y la dirección del editor en un solo campo; es mejor realizar un seguimiento de los publishercampos separados address. También creo que está mal que Mathscinet ponga en minúsculas la mayoría de las palabras del titlecampo.

Aquí está el resultado de un MWE completo (ejemplo de trabajo mínimo) que emplea el plain-bookpagesestilo babero recién creado:

ingrese la descripción de la imagen aquí

Y, a modo de comparación, así es como se formatea la entrada si plainse emplea el estilo de bibliografía:

ingrese la descripción de la imagen aquí

Un comentario final: no puedo evitar comentar que hay una muy buena razón por la cual prácticamente todos los estilos de bibliografía alguna vez programados están configurados paraignorarel pagescampo en entradas de tipo @book. ¿Cuál es esta razón, te preguntarás? Bueno, es que se garantiza que el pagescampo en las entradas de tipo no tendrá ningún interés para los lectores. @bookSe supone que la información bibliográfica ayuda a los lectores a obtener copias de entradas bibliográficas de interés, ya sea de una biblioteca (física o electrónica) o de una librería. Por eso el publishercampoesrelevante para entradas de tipo @book. pagesEn comparación, los contenidos del campo no tienen un propósito comparable.

\documentclass{article}
\begin{filecontents}[overwrite]{mybib.bib}
@book{Brylinski,
    AUTHOR    = {Brylinski, Jean-Luc},
    TITLE     = {Loop Spaces, Characteristic Classes and Geometric Quantization},
    SERIES    = {Progress in Mathematics},
    VOLUME    = {107},
    PUBLISHER = {Birkh{\"a}user},
    address   = {Boston~MA},
    YEAR      = {1993},
    PAGES     = {xvi+300},
    ISBN      = {0-8176-3644-7},
    MRCLASS   = {57Rxx (18G50 55P35 58F06)},
    MRNUMBER  = {1197353},
    MRREVIEWER= {Daniel S. Freed},
    DOI       = {10.1007/978-0-8176-4731-5},
    URL       = {https://doi.org/10.1007/978-0-8176-4731-5},
}
\end{filecontents}

\usepackage{cite}
\bibliographystyle{plain-bookpages}

\begin{document}
\nocite{Brylinski}
\raggedright
\bibliography{mybib}
\end{document}

información relacionada