我如何告訴 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欄位中)。結果是

讓-呂克·布林斯基。循環空間、特徵類和幾何量化,《數學進展》第 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 行開始。

  • 緊接著之前在此函數中,插入以下程式碼區塊,其中包含兩個 BibTeX 函數 --bibinfo.checkformat.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 搜尋的資料夾中。如果您選擇第二個選項,請務必適當更新 TeX 發行版的檔案名稱資料庫。如果前面這句話對你來說聽起來像是胡言亂語,我建議你選擇第一個選項。

  • 在你的主 tex 檔案中,將指令更改\bibliographystyle{plain}\bibliographystyle{plain-bookpages}並執行完整的重新編譯週期——LaTeX、BibTeX 和 LaTeX 兩次——以完全傳播所有變更。

BibTeXing 快樂!

順便說一句,我認為這是錯誤的MathSciNet 將有關條目出版商和出版商地址的資訊合併在一個欄位中;最好跟踪單獨的publisher字段address。我還認為 mathscinet 將該字段中的大多數單字小寫是錯誤的title

以下是採用新建立的圍兜樣式的完整 MWE(最小工作範例)的輸出plain-bookpages

在此輸入影像描述

plain並且,為了進行比較,如果採用參考書目樣式,則條目的格式如下:

在此輸入影像描述

最後的評論:我忍不住要說,為什麼幾乎所有程式設計的參考書目樣式都設定為忽略pages類型條目中的欄位@book。您可能會問,這是什麼原因?嗯,pages類型條目中的欄位@book幾乎肯定不會引起讀者的任何興趣。書目資訊旨在幫助讀者從圖書館(實體或電子)或書店取得感興趣的書目條目的副本。這就是為什麼publisher與 類型的條目相關@bookpages相比之下,該欄位的內容沒有類似的用途。

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

相關內容