LATEX, comment puis-je avoir une liste de références à la fin de chaque section? [fermé]

StackOverflow https://stackoverflow.com/questions/2503555

  •  21-09-2019
  •  | 
  •  

Question

Je veux générer la bibliographie pour chaque section, et ont à la fin de la section. Quand je fais cela au moment où il génère la bibliographie complète et la place après chaque section.

Est-il possible que cela peut être fait?

Les conseils dit

  

"Le paquet chapterbib une   l'option sectionbib qui met la   bibliographie dans une section \ * au lieu de   \ Chapter *, ce qui est logique   s'il y a une bibliographie dans chaque   chapitre. Cette option ne fonctionnera pas   lorsque natbib est également chargé; au lieu,   ajoutez l'option à natbib. «

Je ne comprends pas ce que cela signifie, et je l'ai essayé d'expérimenter avec ce que je pensais que les options sont. Plus précisément, ce qui signifie "ajouter l'option natbib" signifie?

Ma question suivante (qui a évolué après mon premier a été résolu) est de ne pas avoir entre les références sauts de pages et la section suivante.

Merci pour votre aide.

Était-ce utile?

La solution

Si vous utilisez biblatex , comme citant des titres d'article , vous peut l'utiliser pour produire des bibliographies à la fin des sections ou des chapitres, ou même avoir une bibliographie combiné où ils sont séparés par chapitre / section. En tant que package, il est destiné à remplacer "babelbib, bibtopic, bibunits, chapterbib, cite, inlinebib, mlbib, multibib, splitbib."

Vous pouvez mettre une bibliographie après chaque section, dans l'une des trois façons. Tout d'abord, envelopper le texte de votre section dans une paire \begin{refsection} / \end{refsection}, en tant que tel

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

En second lieu, après chaque déclaration de \section vous mettez une déclaration de \newrefsection qui se termine la section précédente et commence la nouvelle. Et, vous faites précéder la prochaine \section une déclaration de \printbibliography, encore une fois. Enfin, il y a une option de package refsection qui prend soit none, part, chapter, section ou subsection comme argument. Pour regrouper vos entrées bibliographiques par section dans une bibliographie globale que vous utilisez à la place refsegment, en utilisant \bibbysegment pour imprimer tous les segments afin. (\bibbysection peut être utilisé de la même manière pour ref-sections, aussi.)

Je ne sais pas combien vous devrez diviser votre texte, comme par @ réponse de Norman, mais avec un peu d'expérimentation vous pouvez comprendre.

Autres conseils

En plus de

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

Vous devrez mettre chaque section dans un fichier .tex séparé qui vous \include alors. Vous devrez exécuter bibtex sur chaque fichier .tex séparément.

N.B.. L'utilisation \input plutôt que \include évite les sauts de page indésirables, mais il ne crée pas le fichier .aux que BibTeX doit faire son travail. Je regardais la définition de \include, et je ne vois pas comment désactiver la fonction de rupture, sauf la page en désactivant tout à fait \clearpage. Vous pouvez essayer

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

juste après votre \begin{document}, mais vous devrez peut-être mettre un peu \originalclearpage à la main.

@celenius - si vous voulez vraiment vous débarrasser de ce saut de page, voici un très sale astuce pour le faire ...

\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

En fait, nous effectuer une intervention chirurgicale sur la macro \include pour se débarrasser de toutes les instances de \clearpage, mais la plus propre façon de faire, comme vous pouvez le voir, est toujours vraiment sale. Ceci est horriblement fragile et probablement ne fonctionnera que pour la classe article, donc si vous utilisez un autre \documentclass, vous êtes hors de la chance. Je essentiellement tirais cela en permettant \tracingcommands=1 et \tracingmacros=1 et grepper le fichier .log pour \clearpage pour que je puisse pirater tout ce qui est appelé avant pour insérer un \@noclearpage.

Je ne recommande pas cette solution - ce serait beaucoup mieux de se pencher sur la façon dont fonctionne chapterbib et fixer la bonne façon, sans dépendre de \include et les fichiers .aux séparés ... il génère, mais je suis positive qui être une tâche assez difficile. Je suppose que l'autre solution serait d'écrire une commande pour imiter la rupture de \include d'fichiers .aux, sans faire réellement le comprend ...


EDIT: D'accord, voici un quickie

\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

Ensuite, vous pouvez insérer simplement \begin{auxfile}{foo}...\end{auxfile} et il utilisera foo.aux au lieu du fichier .aux normal. Ceci est entièrement compatible avec chapterbib. Je ne pense pas que CTAN a quelque chose comme ça, alors peut-être que je vais le présenter comme un mini-paquet.

Je ne l'ai pas essayé, mais comme je l'ai lu qu'il suggère:

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

bien que je ne fais que deviner l'ordre de ces lignes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top