Usando o LATEX, como posso ter uma lista de referências no final de cada seção? [fechado

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

  •  21-09-2019
  •  | 
  •  

Pergunta

Quero gerar a bibliografia para cada seção e tê -la no final da seção. Quando faço isso no momento, ele gera a bibliografia completa e a coloca após cada seção.

Existe uma maneira de isso ser feito?

O Conselho aqui diz

"O pacote CapítuloBib fornece uma seção de opções que coloca a bibliografia em uma seção* em vez de capítulo*, algo que faz sentido se houver uma bibliografia em cada capítulo. Essa opção não funcionará quando o Natbib também for carregado; em vez disso, adicione a opção para Natbib. "

Não entendo o que isso significa e tentei experimentar o que pensei que as opções são. Especificamente, o que significa "Adicione a opção ao Natbib"?

Minha pergunta subsequente (que evoluiu após a minha primeira foi resolvida) é não ter quebras de página entre as referências e a próxima seção.

Obrigado pela ajuda.

Foi útil?

Solução

Se você está usando Biblatex, quanto a citando títulos de artigos, você pode usá -lo para produzir bibliografias no final de seções ou capítulos, ou até mesmo ter uma bibliografia combinada, onde são separadas pelo capítulo/seção. Como um pacote, pretende substituir "Babelbib, Bibtopic, Bibunits, Capítulobib, Cite, Inlinebib, Mlbib, Multibib, SplitBib".

Você pode colocar uma bibliografia após cada seção, de uma de três maneiras. Primeiro, embrulhe o texto da sua seção em um \begin{refsection}/\end{refsection} par, como tal

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

Segundo, depois de cada \section Declaração que você coloca um \newrefsection Declaração que termina a seção anterior e inicia a nova. E você precede o próximo \section com um \printbibliography declaração, novamente. Finalmente, existe um refsection Opção de pacote que leva ou none, part, chapter, section, ou subsection como um argumento. Para agrupar suas entradas bibliográficas por seção em uma bibliografia global que você usa refsegment em vez disso, usando \bibbysegment Para imprimir todos os segmentos em ordem. (\bibbysection Também pode ser usado da mesma maneira para reflexões.)

Não sei quanto você terá que dividir seu texto, conforme a resposta de @Norman, mas com um pouco de experimentação, você pode descobrir.

Outras dicas

Além de

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

Você terá que colocar cada seção em um arquivo .tex separado que você então \include. Você terá que correr bibtex em cada arquivo .tex separadamente.

NB usando \input ao invés de \include Evita quebras de página indesejadas, mas não criará o arquivo .aux que o Bibtex precisa fazer seu trabalho. Eu olhei para a definição de \include, e não vejo como desativar a função de quebra de página, exceto desabilitar \clearpage inteiramente. Você poderia tentar

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

Logo depois do seu \begin{document}, mas você pode ter que colocar alguns \originalclearpage na mão.

@celenius - Se você realmente quer se livrar daquele quebra de página, aqui está um muito sujo truque para fazer isso ...

\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

Basicamente, realizamos cirurgia no \include macro para se livrar de todos os \clearpage instâncias, mas a maneira mais limpa de fazer isso, como você pode ver, ainda é verdade sujo. Isso é terrivelmente quebradiço e provavelmente funcionará apenas para o article classe, então se você estiver usando um diferente \documentclass, Você não está com sorte. Eu basicamente derivei isso, permitindo \tracingcommands=1 e \tracingmacros=1 e gritando o .log arquivo para \clearpage para que eu pudesse invadir o que é chamado antes de inserir um \@noclearpage.

Eu não recomendo esta solução - seria muito melhor examinar como chapterbib funciona e conserte da maneira certa, sem depender \include e o separado .aux Arquivos que gera ... mas tenho certeza de que seria uma tarefa bastante difícil. Eu acho que outra solução alternativa seria escrever um comando para imitar \includeestá quebrando .aux arquivos, sem realmente fazer os inclui ...


EDIT: Ok, aqui está uma rapidinha

\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

Então você pode simplesmente inserir \begin{auxfile}{foo}...\end{auxfile} e vai usar foo.aux em vez do normal .aux Arquivo. Isso é totalmente compatível com chapterbib. Eu não acho que a CTAN tenha algo assim, então talvez eu o envie como uma mini-package.

Eu não tentei, mas como li, sugere:

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

Embora eu esteja apenas adivinhando a ordem correta dessas linhas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top