测试.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
和 booktitle
title
作为必填字段,如果只给出一个字段,就会引起警告/问题。
@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},
}
请注意,主条目必须放置在后使交叉引用能够起作用的子条目。
这种方法的优点是您只需输入一次静态信息。此外,样式可以将所有这些条目分组,为书籍本身创建一个条目,并在参考书目中将所有单个条目链接到它,等等。
如果您想提供所引用子部分的任何其他特定信息,也可以使用此方法(如果样式文件接受相应的字段)。