我想为每个部分生成参考书目,并在该部分的末尾进行。当我这样做时,它会生成完整的参考书目并将其放在每个部分之后。
有没有办法可以做到这一点?
建议here说
“chapterbib包提供了一个 选项sectionbib放置 参考文献中的\ section *而不是 \ chapter *,有意义的东西 如果每个都有参考书目 章节。此选项不起作用 当natbib也被装载;代替, 将选项添加到natbib。 “
我不明白这意味着什么,我已经尝试过我认为的选项。具体来说,“为natbib添加选项”是什么意思?
我后来的问题(在我的第一个问题解决之后发展而来)是在引用和下一部分之间没有分页。
感谢您的帮助。
答案 0 :(得分:10)
除了
\usepackage[sectionbib]{natbib}
\usepackage{chapterbib}
您必须将每个部分放在一个单独的.tex文件中,然后\include
。您必须分别在每个.tex文件上运行bibtex
。
N.B。使用\input
而不是\include
可以避免不必要的分页符,但它不会创建BibTeX需要完成其工作的.aux文件。我查看了\include
的定义,除了完全禁用\clearpage
之外,我没有看到如何禁用分页功能。你可以试试
\let\originalclearpage=\clearpage
\def\clearpage{\relax}
在您的\begin{document}
之后,但您可能需要手动放入一些\originalclearpage
。
答案 1 :(得分:6)
如果您正在使用Biblatex,那么您可以使用它来创建章节或章节末尾的参考书目,甚至可以使用组合的参考书目,它们由章节/章节分隔。作为一个包,它旨在取代“babelbib,bibtopic,bibunits,chapterbib,cite,inlinebib,mlbib,multibib,splitbib。”
您可以使用以下三种方式之一在每个部分之后放入参考书目。首先,将您的部分文字包含在\begin{refsection}
/ \end{refsection}
对中
\section{SomeSectionName}
\begin{refsection}
% your text goes here
\printbibliography
\end{refsection}
\section{NextSection}
其次,在每个\section
语句之后,您放置一个\newrefsection
语句,该语句结束上一节并开始新节。并且,您再次使用\section
语句在下一个\printbibliography
之前。最后,有refsection
个包选项,可以将none
,part
,chapter
,section
或subsection
作为参数。要在全局参考书目中对每个部分的书目条目进行分组,请使用refsegment
,使用\bibbysegment
按顺序打印所有细分。 (\bibbysection
也可以以相同的方式用于参考部分。)
根据@ Norman的回答,我不知道你要分割你的文本多少钱,但通过一些实验你可以弄明白。
答案 2 :(得分:2)
我没有尝试过,但正如我读到的那样:
\usepackage[sectionbib]{natbib} % Note the option in the optional argument
\usepackage{chapterbib}
虽然我只是猜测这些线的正确顺序。
答案 3 :(得分:2)
@celenius - 如果你真的想要摆脱那个分页,那么这是一个非常脏的技巧......
\makeatletter \let\O@@input@\@input@ \def\@noclearpage{\@ifnextchar\clearpage\@gobble\relax} \def\@input@#1{\O@@input@{#1}\@noclearpage} \let\O@@include\@include \def\@include{\expandafter\@noclearpage\O@@include} \let\O@include\include \def\include{\expandafter\@noclearpage\O@include} \makeatother
基本上我们在\include
宏上进行手术以摆脱所有\clearpage
个实例,但正如你所看到的,最简洁的方法仍然是真的脏。这非常脆弱,可能只适用于article
类,所以如果你使用不同的\documentclass
,那你就不走运了。我基本上通过启用\tracingcommands=1
和\tracingmacros=1
以及为.log
点击\clearpage
文件来获得此结果,这样我就可以在插入\@noclearpage
之前修改任何被调用的内容
我不建议使用此解决方案 - 在不依赖chapterbib
和单独的\include
文件的情况下,查看.aux
如何工作并以正确方式修复它会更好它产生......但我很肯定这将是一项非常困难的任务。我想另一个解决方法是编写一个命令来模拟\include
分解.aux
文件,而不实际执行包含...
<小时/> 编辑:好的,这是一个快速
\makeatletter \newenvironment{auxfile}[1]{\relax \ifnum\@auxout=\@partaux \@latex@error{auxfile environments cannot be nested or \string\include d} \@eha \else\@changeaux{#1}\fi }{\immediate\closeout\@partaux\let\@auxout\@mainaux} \def\@changeaux#1{% \immediate\write\@mainaux{\string\@input{#1.aux}}% \let\@auxout\@partaux \immediate\openout\@partaux#1.aux% \immediate\write\@partaux{\relax}} \makeatother
然后您只需插入\begin{auxfile}{foo}...\end{auxfile}
即可使用foo.aux
代替普通的.aux
文件。这与chapterbib
完全兼容。我不认为CTAN有这样的东西,所以也许我会把它作为迷你包提交。