El uso de látex, ¿cómo puedo tener una lista de referencias al final de cada sección? [cerrado]

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

  •  21-09-2019
  •  | 
  •  

Pregunta

quiero generar la bibliografía para cada sección, y la tengan al final de la sección. Cuando hago esto en el momento en que se genera la bibliografía completa y lo coloca después de cada sección.

¿Hay alguna manera de que esto se puede hacer?

El consejo aquí dice

  

"El paquete proporciona una chapterbib   la opción que pone el sectionbib   Bibliografía en una sección \ * en lugar de   \ Chapter *, algo que tiene sentido   si hay una bibliografía en cada   capítulo. Esta opción no funcionará   cuando natbib también está cargado; en lugar,   añadir la opción de natbib. "

No entiendo lo que esto significa, y lo he intentado experimentar con lo que creía que las opciones son. Específicamente, ¿qué significa "añadir la opción de natbib" media?

Mi pregunta subsiguiente (que se desarrolló después de mi primera se resolvió) es no tener saltos de página entre las referencias, y la siguiente sección.

Gracias por su ayuda.

¿Fue útil?

Solución

Si está utilizando Biblatex , como para citando títulos de los artículos , se puede utilizar para producir bibliografías al final de las secciones o capítulos, o incluso tener una bibliografía combinado en el que están separados por capítulo / sección. Como un paquete, que está destinado a sustituir "babelbib, bibtopic, bibunits, chapterbib, citar, inlinebib, mlbib, multibib, splitbib."

Se puede poner una bibliografía después de cada sección, en una de tres maneras. En primer lugar, envolver el texto de su sección en un par \begin{refsection} / \end{refsection}, como tal

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

En segundo lugar, después de cada declaración \section le puso una declaración \newrefsection que termina la sección anterior y comienza el nuevo. Y, que preceden a la próxima \section con una declaración \printbibliography, otra vez. Por último, hay una opción de paquete refsection que se lleva bien none, part, chapter, section o subsection como argumento. Para agrupar los registros bibliográficos por sección en una bibliografía mundial utiliza refsegment lugar, utilizando \bibbysegment para imprimir todos los segmentos en orden. (\bibbysection se puede utilizar de la misma manera para Ref-secciones, también.)

No sé cuánto tendrá que dividir su texto, como por @ respuesta de Norman, pero con un poco de experimentación puede averiguarlo.

Otros consejos

Además de

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

Se tendrá que poner cada sección en un archivo separado .tex que luego \include. Tendrá que ejecutar bibtex en cada archivo .tex por separado.

N.B. Usando \input en lugar de \include evita los saltos de página no deseados, pero no va a crear el archivo .aux que BibTeX necesita para hacer su trabajo. Miré a la definición de \include, y no veo cómo deshabilitar la función de la página sin precedentes, excepto mediante la desactivación de \clearpage por completo. Usted podría intentar

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

inmediatamente después de su \begin{document}, pero puede que tenga que poner un poco \originalclearpage en la mano.

@celenius - si realmente quiere deshacerse de ese salto de página, aquí hay un muy sucio truco para hacerlo ...

\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

Básicamente realizar la cirugía en la macro \include para deshacerse de todos los casos \clearpage, pero la forma más limpia de hacer esto, como se puede ver, sigue siendo realmente sucio. Esto es terriblemente frágil y es probable que sólo el trabajo para la clase article, por lo que si usted está utilizando una \documentclass diferente, usted está fuera de suerte. Yo deriva básicamente esto permitiendo \tracingcommands=1 y \tracingmacros=1 y grepping el archivo .log para \clearpage para que pudiera cortar lo que sea es llamada antes de que al insertar un \@noclearpage.

No recomiendo esta solución - que sería mucho mejor que mirar en cómo funciona la chapterbib y solucionarlo de la manera correcta, sin depender de \include y los archivos separados .aux que genera ... pero estoy seguro de que lo haría ser una tarea bastante difícil. Creo que otra solución sería escribir un comando para emular \include está rompiendo de archivos .aux, sin hacer realmente los includes ...


EDIT: Bueno, aquí hay un polvo rápido

\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

A continuación, se puede insertar simplemente \begin{auxfile}{foo}...\end{auxfile} y utilizará foo.aux en lugar del archivo .aux normal. Esto es totalmente compatible con chapterbib. No creo CTAN tiene nada como esto, así que tal vez voy a presentar como un mini-paquete.

Yo no lo he probado, pero como he leído que sugiere:

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

aunque yo sólo estoy tratando de adivinar el orden correcto de esas líneas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top