15

各セクションの参考文献を生成し、セクションの最後に配置したいと思います。現時点でこれを行うと、完全な参考文献が生成され、各セクションの後に配置されます。

これを行う方法はありますか?

ここでのアドバイスは言う

「chapterbibパッケージは、参考文献を\chapter*ではなく\section*に配置するオプションsectionbibを提供します。これは、各章に参考文献がある場合に意味があります。このオプションは、natbibもロードされている場合は機能しません。代わりに追加します。 natbibへのオプション。」

これが何を意味するのか理解できません。私は、オプションが何であるかを試してみました。具体的には、「natbibにオプションを追加する」とはどういう意味ですか?

私の次の質問(私の最初の質問が解決された後に発展した)は、参照と次のセクションの間にページ区切りがないことです。

ご協力ありがとうございました。

4

4 に答える 4

10

に加えて

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

各セクションを別々の.texファイルに配置する必要があります\includebibtex各.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」を置き換えることを目的としています。

3つの方法のいずれかで、各セクションの後に参考文献を配置できます。\begin{refsection}まず、セクションのテキストを/\end{refsection}ペアでラップします。

\section{SomeSectionName}
\begin{refsection}
% your text goes here
\printbibliography
\end{refsection}
\section{NextSection}

次に、各\sectionステートメントの後に\newrefsection、前のセクションを終了して新しいセクションを開始するステートメントを配置します。そして、あなたは再び次の前に\section声明\printbibliographyを出します。最後に、、、、、、または引数として取るrefsectionパッケージオプションがあります。代わりに使用するグローバル書誌のセクションごとに書誌エントリをグループ化するには、を使用してすべてのセグメントを順番に印刷します。(ref-sectionsにも同じように使用できます。)nonepartchaptersectionsubsectionrefsegment\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 {\ expandafter \ @noclearpage \ O @@ include}
\ let \ O @ include \ include
\ def \ include {\ expandafter \ @noclearpage \ O @ include}
\ makeatother

\include基本的に、すべてのインスタンスを取り除くためにマクロに対して手術を行い\clearpageますが、ご覧のとおり、これを行う最もクリーンな方法はまだ本当に汚いです。これはひどくもろく、articleクラスでしか機能しない可能性が高いため、別\documentclassのを使用している場合は運が悪いです。私は基本的に、ファイルを有効\tracingcommands=1にしてgrepすることでこれ\tracingmacros=1を導き出し、.logファイル\clearpageを挿入する前に呼び出されたものをハックできるようにしました\@noclearpage

私はこの解決策をお勧めしません-それが生成する個別のファイルにchapterbib依存することなく、どのように機能するかを調べて正しい方法で修正する方がはるかに良いでしょう...しかし、それはかなり難しい作業になると確信しています。別の回避策は、実際にインクルードを実行せずに、ファイルの分割をエミュレートするコマンドを作成することだと思います...\include.aux\include.aux


編集:さて、ここに急ごしらえがあります

\ makeatletter
\ newenvironment {auxfile} [1] {\ Relax
  \ ifnum \ @ auxout = \ @ partaux
    \ @ latex @error{auxfile環境をネストまたは\string\included}することはできません
    \ @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}使用されます。これはと完全に互換性があります。CTANにはこのようなものはないと思うので、ミニパッケージとして提出するかもしれません。foo.aux.auxchapterbib

于 2010-03-24T00:53:34.823 に答える