Como digo ao BibTeX para imprimir o campo 'páginas' para entradas do tipo '@book'?

Como digo ao BibTeX para imprimir o campo 'páginas' para entradas do tipo '@book'?

Quero citar um livro. Obtive as seguintes informações bibliográficas do 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},}

Infelizmente, o verbete bibliográfico formatado não mostra o número de páginas (armazenadas no pagescampo do verbete). Sai como

Jean-Luc Brylinski. Espaços de loop, classes características e quantização geométrica, volume 107 de Progress in Mathematics. Birkhäuser Boston, Inc., Boston, MA, 1993.

Que alterações devo fazer para que também mencione o número de páginas?

Um exemplo mínimo de trabalho é

\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 independente (requer uma instalação moderna do LaTeX para o [overwrite]recurso)

\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}

Responder1

Sugiro que você proceda da seguinte forma:

  • Encontre o arquivo plain.bstem sua distribuição TeX. Faça uma cópia deste arquivo e chame a cópia, digamos, plain-bookpages.bst. (Não edite diretamente um arquivo original e sem nome de sua distribuição TeX.)

  • Abra o arquivo plain-bookpages.bstem um editor de texto. O programa que você usa para editar seus arquivos tex funcionará bem.

  • No arquivo plain-bookpages.bst, encontre a função BibTeX book. Na minha cópia do arquivo, esta função começa na linha 557.

  • Imediatamente antesesta função, insira o seguinte pedaço de código, que contém duas funções BibTeX - bibinfo.checke 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$
    }
    
  • Na bookfunção, encontre a seguinte linha:

          publisher "publisher" output.check
    

    Imediatamente antesesta linha, insira a seguinte linha:

          format.book.pages output
    
  • Salve o arquivo plain-bookpages.bstna pasta que contém seus arquivos tex principais ou em uma pasta pesquisada pelo BibTeX. Se você escolher a segunda opção, certifique-se de atualizar o banco de dados de nomes de arquivos da sua distribuição TeX adequadamente. Se a frase anterior parece algo sem sentido para você, recomendo que você escolha a primeira opção.

  • Em seu arquivo tex principal, altere a instrução \bibliographystyle{plain}para \bibliographystyle{plain-bookpages}e execute um ciclo completo de recompilação - LaTeX, BibTeX e LaTeX mais duas vezes - para propagar totalmente todas as alterações.

Feliz BibTeXing!

Aliás, acho que éerradoque o MathSciNet combina informações sobre o editor da entrada e o endereço do editor em um único campo; é melhor acompanhar os campos publishere separados address. Eu também acho que é errado do mathscinet colocar a maioria das palavras na titleárea em letras minúsculas.

Aqui está o resultado de um MWE completo (exemplo mínimo de trabalho) que emprega o plain-bookpagesestilo de babador recém-criado:

insira a descrição da imagem aqui

E, para efeito de comparação, veja como a entrada é formatada se o plainestilo bibliográfico for empregado:

insira a descrição da imagem aqui

Um comentário final: não posso deixar de observar que há uma boa razão para que praticamente todos os estilos de bibliografia já programados sejam configurados paraignoraro pagescampo em entradas do tipo @book. Qual é esse motivo, você pode perguntar? Bem, é praticamente certo que o pagescampo nas entradas do tipo @booknão terá nenhum interesse para os leitores. A informação bibliográfica deve ajudar os leitores a obter cópias de verbetes bibliográficos de interesse, seja em uma biblioteca (física ou eletrônica) ou em uma livraria. É por isso que o publishercampoérelevante para entradas do tipo @book. O conteúdo do pagescampo, em comparação, não serve a nenhum propósito comparável.

\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}

informação relacionada