Bibtex 错误页面位置

Bibtex 错误页面位置

测试.bib:

@book{PProof,
    author = {Garey Michael, Johnson David},
    title   = {Computers and Intractability; A Guide to the Theory of NP-Completeness},
    year    = {1979},
    publisher = {W H Freeman {\&} Co},
    pages = {96 -- 105},
}

测试.tex:

\documentclass[12pt,oneside,ngerman,reqno,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amsthm}     % ams stuff should be before font loading
\usepackage{lmodern}
\usepackage[T1]{fontenc}        % should be after font loading
\usepackage{fixltx2e,babel}
\usepackage[numbers]{natbib}    % bibtex package


\bibliographystyle{natdin}

\begin{document}

\bibliography{bibliography}

\end{document}

输出:

GAREY MICHAEL,Johnson D.:计算机与难解性;NP 完备性理论指南。WH Freeman & Co,1979 年。– 96 – 105 S。

为什么这里的页数在 S 之前?

我该如何修复这个问题?是不是缺少了什么?

答案1

我认为您的书目条目存在三个问题。按严重程度从低到高的顺序排列,它们分别是:

  • pages字段应为

    pages = {96-105},
    

    说明该字段pages = {96--105},也是可以的。

  • 在 BibTeX 的语法中,作者必须用关键字分隔and不是用逗号分隔。因此,该author字段应该表述为

    author = {Michael R. Garey and David S. Johnson},
    

    或者,如果你喜欢先写姓氏,再写名字,例如

    author = {Garey, Michael R. and Johnson, David S.},
    
  • pages为 类型的条目提供字段并不是常见的做法@book。我相信你需要的是不同的条目类型,即@incollection

果然,经过这些修改后,S.标签被放置页面范围:

在此处输入图片描述

\documentclass[12pt,oneside,ngerman,reqno,a4paper]{article}
\usepackage{filecontents}
\begin{filecontents}{bibliography.bib}
@incollection{PProof,
    author = {Michael R. Garey and David S. Johnson},
    title   = {Computers and Intractability: A Guide to the Theory of NP-Completeness},
    year    = {1979},
    publisher = {W\,H Freeman~\& Co},
    pages = {96-105},
}
\end{filecontents}

\usepackage[utf8]{inputenc}
\usepackage{amsmath,amsthm} 
\usepackage{lmodern}
\usepackage[T1]{fontenc}  
\usepackage{fixltx2e,babel}
\usepackage[numbers]{natbib}    
\bibliographystyle{natdin}

\begin{document}
\nocite{*}

\bibliography{bibliography}
\end{document}

答案2

选项1

Egreg 的评论通常应该采取的方式是在引用时指定页面。

为此,您需要pages@book条目中删除该字段并在文档中使用\cite[96--105]{PProof}。页面将与引文一起出现在文本中,但不会出现在文档末尾的书目条目中。

选项 2

如果你坚持要显示书目条目中的页面,你应该选择Mico 的回答

不过,我想补充一点:

如果您想要对同一本书进行多次引用,每次引用指向不同的页面、章节或类似内容,并且每次引用都作为参考书目中的单独条目出现,则可以将所有静态信息放在一个@Book条目中,并@InBook为所有特定的子引用创建条目。然后引用这些@InBook条目。

请注意,我使用@inbook和 而不是@incollection子引用,因为 – 根据 Bibtex 文档 –@incollection应该用于“有自己标题的书的一部分“ 和title booktitletitle作为必填字段,如果只给出一个字段,就会引起警告/问题。

@inbook{PProofcaseA,
crossref = {PProof},
pages = {96--105},
}

@inbook{PProofcaseB,
crossref = {PProof},
pages = {222--700},
}

@book{PProof,
author = {Garey Michael and Johnson David},
title   = {Computers and Intractability: A Guide to the Theory of NP-Completeness},
year    = {1979},
publisher = {W\,H Freeman~\& Co},
}

请注意,主条目必须放置在使交叉引用能够起作用的子条目。

这种方法的优点是您只需输入一次静态信息。此外,样式可以将所有这些条目分组,为书籍本身创建一个条目,并在参考书目中将所有单个条目链接到它,等等。

如果您想提供所引用子部分的任何其他特定信息,也可以使用此方法(如果样式文件接受相应的字段)。

相关内容