Usando LaTeX, come posso avere un elenco di riferimenti alla fine di ogni sezione? [chiuso]

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

  •  21-09-2019
  •  | 
  •  

Domanda

voglio generare la bibliografia per ogni sezione, e lo hanno alla fine della sezione. Quando faccio questo nel momento in cui genera il pieno bibliografia e la colloca al termine di ogni sezione.

C'è un modo che questo può essere fatto?

Il consiglio qui dice

  

"Il pacchetto chapterbib fornisce un   Opzione sectionbib che mette la   bibliografia in una sezione \ * invece di   \ Chapter *, qualcosa che abbia un senso   se c'è una bibliografia in ogni   capitolo. Questa opzione non funziona   quando è anche caricato natbib; anziché,   aggiungere l'opzione per natbib. "

Non capisco cosa significa, e ho provato a sperimentare con quello che ho pensato le opzioni sono. In particolare, cosa significa "aggiungere l'opzione per natbib" mean?

La mia successiva domanda (che si è evoluta dopo il mio primo è stato risolto) è di non avere interruzioni di pagina tra i riferimenti, e la sezione successiva.

Grazie per il vostro aiuto.

È stato utile?

Soluzione

Se si utilizza biblatex , come per citando titoli degli articoli , può essere utilizzato per produrre bibliografie alla fine delle sezioni o capitoli, o addirittura avere una bibliografia combinato dove vengono separati per capitolo / sezione. Come pacchetto, è destinato a sostituire "babelbib, bibtopic, bibunits, chapterbib, citare, inlinebib, mlbib, multibib, splitbib".

È possibile inserire una bibliografia dopo ogni sezione, in uno dei tre modi. In primo luogo, avvolgere il testo della vostra sezione in un paio \begin{refsection} / \end{refsection}, come tale

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

In secondo luogo, dopo ogni istruzione \section si mette una dichiarazione \newrefsection che termina la sezione precedente e inizia quello nuovo. E, si antepone il prossimo \section con una dichiarazione \printbibliography, ancora una volta. Infine, v'è un'opzione del pacchetto refsection che accetta sia none, part, chapter, section o subsection come argomento. Per raggruppare le voci bibliografiche per sezione in una bibliografia globale si utilizza refsegment invece, utilizzando \bibbysegment per stampare tutti i segmenti in ordine. (\bibbysection può essere utilizzato nello stesso modo per ref sezioni, anche.)

Non so quanto si dovrà dividere il testo, come da @ risposta di Norman, ma con un po 'di sperimentazione si può capirlo.

Altri suggerimenti

Oltre a

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

Si dovrà mettere ogni sezione in un file tex separata che poi \include. Si dovrà eseguire bibtex su ogni file .tex separatamente.

NB. Utilizzando \input piuttosto che \include evita interruzioni di pagina indesiderati, ma non creerà il file .aux che BibTeX ha bisogno di fare il suo lavoro. Ho guardato la definizione di \include, e non vedo come disabilitare la funzione di pagina di rottura se non disattivando \clearpage del tutto. Si potrebbe provare

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

subito dopo l'\begin{document}, ma potrebbe essere necessario mettere un po '\originalclearpage a mano.

@celenius - se davvero si vuole sbarazzarsi di quel pagebreak, ecco un molto sporco trucco per farlo ...

\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

In fondo siamo eseguire un intervento chirurgico sulla macro \include di sbarazzarsi di tutte le istanze \clearpage, ma il modo più pulito per fare questo, come si può vedere, è ancora davvero sporca. Questo è terribilmente fragile e sarà probabilmente funzionerà solo per la classe article, quindi se si sta utilizzando un \documentclass diverso, sei fuori di fortuna. Io fondamentalmente derivato questo abilitando \tracingcommands=1 e \tracingmacros=1 e grep il file .log per \clearpage modo che io possa incidere qualunque viene chiamato prima di inserire un \@noclearpage.

Non consiglio questa soluzione - sarebbe molto meglio esaminare come chapterbib opere e risolvere nel modo giusto, senza dipendere i file \include separati che genera .aux e ... ma io sono positivo che avrebbe essere un compito piuttosto difficile. Credo che un'altra soluzione sarebbe quella di scrivere un comando per emulare \include di rottura dei file .aux, senza in realtà fare la include ...


EDIT: Ok, ecco una sveltina

\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

Poi si può solo inserire \begin{auxfile}{foo}...\end{auxfile} e utilizzerà foo.aux invece del file .aux normale. Ciò è pienamente compatibile con chapterbib. Non credo CTAN ha nulla di simile, così forse io lo presenta come un mini-pacchetto.

Non ho provato, ma come ho letto che suggerisce:

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

se sto solo indovinare l'ordine corretto di queste linee.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top