BibTeX に、タイプ '@book' のエントリの 'pages' フィールドを印刷するように指示するにはどうすればよいですか?

BibTeX に、タイプ '@book' のエントリの 'pages' フィールドを印刷するように指示するにはどうすればよいですか?

ある本を引用したいのですが、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},}

残念ながら、フォーマットされた書誌エントリにはページ数(エントリのpagesフィールドに保存されている)が表示されません。次のように表示されます。

Jean-Luc Brylinski. ループ空間、特性類、幾何量子化、Progress in Mathematics 第 107 巻。Birkhäuser Boston, Inc.、ボストン、マサチューセッツ州、1993 年。

ページ数も記載するにはどのような変更を加える必要がありますか?

最小限の動作例は

\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 (この機能には最新の LaTeX のインストールが必要です[overwrite])

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

答え1

次のように進めることをお勧めします。

  • TeX ディストリビューション内のファイルを見つけますplain.bst。このファイルのコピーを作成し、そのコピーを と呼びます。plain-bookpages.bst(TeX ディストリビューションの元の、名前を変更していないファイルを直接編集しないでください。)

  • テキスト エディターでファイルを開きますplain-bookpages.bst。Tex ファイルの編集に使用するプログラムで問題ありません。

  • ファイル でplain-bookpages.bst、BibTeX 関数 を見つけますbook。ファイルの私のコピーでは、この関数は 557 行目から始まります。

  • 直前この関数を実行するには、次のコード チャンクを挿入します。このコード チャンクには、2 つの BibTeX 関数 (bibinfo.checkおよび)が含まれています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$
    }
    
  • 関数内でbook、次の行を見つけます。

          publisher "publisher" output.check
    

    直前この行の代わりに、次の行を挿入します。

          format.book.pages output
    
  • ファイルはplain-bookpages.bst、メインの tex ファイルを含むフォルダーか、BibTeX によって検索されるフォルダーに保存します。2 番目のオプションを選択する場合は、TeX ディストリビューションのファイル名データベースを適切に更新してください。前の文が意味不明に聞こえる場合は、最初のオプションを選択することをお勧めします。

  • メインの tex ファイルで、命令\bibliographystyle{plain}を に変更し\bibliographystyle{plain-bookpages}、完全な再コンパイル サイクル (LaTeX、BibTeX、LaTeX をさらに 2 回) を実行して、すべての変更を完全に伝播します。

BibTeXを楽しんでください!

ちなみに、私はそれは間違っているMathSciNet はエントリの出版社と出版社の住所に関する情報を 1 つのフィールドにまとめているので、別々のフィールドを管理する方がよいでしょうpublisheraddressまた、mathscinet がフィールド内のほとんどの単語を小文字にするのは間違っていると思いますtitle

plain-bookpages新しく作成されたbib スタイルを採用した完全な MWE (最小限の動作例) の出力は次のとおりです。

ここに画像の説明を入力してください

比較のために、参考plain文献スタイルが採用されている場合のエントリのフォーマットは次のようになります。

ここに画像の説明を入力してください

最後に一言。これまでプログラムされたほぼすべての参考文献スタイルが、無視するpagesエントリの タイプのフィールド。@bookこれはなぜかと疑問に思うかもしれません。それは、pagesエントリの タイプのフィールド@bookは読者にとってまったく興味を引かないことがほぼ確実だからです。書誌情報は、読者が興味のある書誌エントリのコピーを図書館(物理的または電子的)または書店から入手するのに役立つはずです。そのため、フィールドpublisherタイプ のエントリに関連します。比較すると、フィールド@bookの内容は同等の目的を果たしません。pages

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

関連情報