El uso de látex, ¿cómo puedo tener una lista de referencias al final de cada sección? [cerrado]
-
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.
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.