15

我想为每个部分生成参考书目,并将其放在该部分的末尾。当我现在这样做时,它会生成完整的参考书目并将其放在每个部分之后。

有没有办法做到这一点?

这里的建议说

“chapterbib 包提供了一个选项 sectionbib,它将参考书目放在 \section* 而不是 \chapter* 中,如果每章中都有参考书目,这是有意义的。当 natbib 也加载时,此选项将不起作用;相反,添加natbib 的选项。”

我不明白这意味着什么,我尝试过尝试我认为的选项。具体来说,“将选项添加到 natbib”是什么意思?

我的下一个问题(在我的第一个问题解决后演变而来)是在参考文献和下一部分之间没有分页符。

谢谢您的帮助。

4

4 回答 4

10

此外

\usepackage[sectionbib]{natbib}
\usepackage{chapterbib}

您必须将每个部分放在一个单独的 .tex 文件中,然后\include。您必须分别bibtex在每个 .tex 文件上运行。

注意使用\input而不是\include避免不必要的分页符,但它不会创建 BibTeX 需要完成其工作的 .aux 文件。我查看了 的定义\include,除了完全禁用之外,我没有看到如何禁用分页功能\clearpage。你可以试试

\let\originalclearpage=\clearpage
\def\clearpage{\relax}

就在你的之后\begin{document},但你可能不得不\originalclearpage手动放一些。

于 2010-03-23T22:31:34.963 回答
8

如果您使用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 的回答,我不知道您需要拆分多少文本,但是通过一些实验,您可以弄清楚。

于 2010-04-19T03:30:17.167 回答
2

我没有尝试过,但当我读到它表明:

\usepackage[sectionbib]{natbib} % Note the option in the optional argument
\usepackage{chapterbib}

虽然我只是猜测这些行的正确顺序。

于 2010-03-23T21:10:58.230 回答
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{\ex​​pandafter\@noclearpage\O@@include}
\让\O@包括\包括
\def\include{\ex​​pandafter\@noclearpage\O@include}
\makeatother

基本上我们对\include宏执行手术以摆脱所有\clearpage实例,但是如您所见,最干净的方法仍然很脏。这非常脆弱,可能只适用于article班级,所以如果你使用不同的\documentclass,你就不走运了。我基本上是通过启用\tracingcommands=1\tracingmacros=1grep.log文件来得出这一点的,\clearpage这样我就可以破解在它之前被调用的任何内容以插入\@noclearpage.

我不推荐这个解决方案 - 最好研究一下如何chapterbib工作并以正确的方式修复它,而不依赖于它生成\include的单独.aux文件......但我很肯定这将是一项非常艰巨的任务。我想另一种解决方法是编写一个命令来模拟文件\include的分解.aux,而不实际执行包含...


编辑:好的,这是一个快速的

\makeatletter
\新环境{辅助文件}[1]{\放松
  \ifnum\@auxout=\@partaux
    \@latex@error{auxfile 环境不能嵌套或\string\include d}
    \@eha
  \else\@changeaux{#1}\fi
}{\立即\closeout\@partaux\let\@auxout\@mainaux}
\def\@changeaux#1{%
  \立即\写入\@mainaux{\string\@input{#1.aux}}%
  \let\@auxout\@partaux
  \立即\开放\@partaux#1.aux%
  \立即\写\@partaux{\放松}}
\makeatother

然后你可以插入\begin{auxfile}{foo}...\end{auxfile},它将使用foo.aux而不是普通.aux文件。这是完全兼容的chapterbib。我不认为 CTAN 有这样的东西,所以也许我会把它作为一个迷你包提交。

于 2010-03-24T00:53:34.823 回答