باستخدام LATEX ، كيف يمكنني الحصول على قائمة بالمراجع في نهاية كل قسم؟ [مغلق

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

  •  21-09-2019
  •  | 
  •  

سؤال

أريد إنشاء المراجع لكل قسم ، وجعله في نهاية القسم. عندما أقوم بذلك في الوقت الحالي ، فإنه يولد المراجع الكاملة ويضعه بعد كل قسم.

هل هناك طريقة يمكن القيام بها؟

النصيحة هنا يقول

"توفر حزمة chapplebib sectionbib خيار يضع المراجع في قسم بدلاً من الفصل* ، وهو أمر منطقي إذا كان هناك مراجع في كل فصل. لن يعمل هذا الخيار عند تحميل ناتبيب أيضًا ؛ بدلاً من ذلك ، أضف بدلاً من ذلك ، إضافة خيار ناتبيب. "

لا أفهم ما يعنيه هذا ، وقد حاولت تجربة ما اعتقدت أن الخيارات. على وجه التحديد ، ماذا يعني "إضافة خيار إلى ناتبيب"؟

سؤالي اللاحق (الذي تطور بعد حل سحلي الأول) هو عدم وجود قطع صفحات بين المراجع ، والقسم التالي.

شكرا لك على مساعدتك.

هل كانت مفيدة؟

المحلول

إذا كنت تستخدم Biblatex, ، أما بالنسبة لل نقلا عن عناوين المقالات, ، يمكنك استخدامه لإنتاج ببليوغرافيا في نهاية الأقسام أو الفصول ، أو حتى الحصول على مراجع مجتمعة حيث يتم فصلها حسب الفصل/القسم. كحزمة ، يهدف إلى استبدال "babelbib ، bibtopic ، bibunits ، chapplebib ، cite ، inlinebib ، mlbib ، multibib ، splitbib."

يمكنك وضع ببليوغرافيا بعد كل قسم ، في واحدة من ثلاث طرق. أولاً ، لف نص القسم الخاص بك في \begin{refsection}/\end{refsection} زوج ، على هذا النحو

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

ثانياً بعد كل منها \section بيان وضعت أ \newrefsection البيان الذي ينهي القسم السابق ويبدأ القسم الجديد. وأنت تسبق التالي \section مع \printbibliography بيان ، مرة أخرى. أخيرًا ، هناك أ refsection خيار الحزمة الذي يستغرق none, part, chapter, section, ، أو subsection كحجة. لتجميع إدخالات الببليوغرافية الخاصة بك لكل قسم في المراجع العالمية التي تستخدمها refsegment بدلا من ذلك ، باستخدام \bibbysegment لطباعة جميع الأجزاء بالترتيب. ((\bibbysection يمكن استخدامها بنفس الطريقة لأقسام المرجع أيضًا.)

لا أعرف كم يجب عليك تقسيم النص الخاص بك ، وفقًا لإجابة @Norman ، ولكن مع القليل من التجربة ، يمكنك معرفة ذلك.

نصائح أخرى

بالإضافة إلى

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

سيتعين عليك وضع كل قسم في ملف .tex منفصلًا بعد ذلك \include. سيكون عليك الجري bibtex على كل ملف .tex بشكل منفصل.

NB باستخدام \input عوضا عن \include يتجنب فواصل الصفحة غير المرغوب فيها ، لكنه لن ينشئ ملف .aux الذي يحتاج Bibtex إلى القيام به. نظرت في تعريف \include, ، وأنا لا أرى كيفية تعطيل وظيفة كسر الصفحات إلا عن طريق تعطيل \clearpage تماما. بامكانك ان تحاول

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

مباشرة بعد الخاص بك \begin{document}, ، ولكن قد تضطر إلى وضع البعض \originalclearpage باليد.

Celenius - إذا كنت تريد حقًا التخلص من هذه الصفحة ، إليك ملف قذر جدا خدعة للقيام بذلك ...

\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

في الأساس نقوم بإجراء عملية جراحية على \include الماكرو للتخلص من كل \clearpage الحالات ، ولكن أنظف طريقة للقيام بذلك ، كما ترون ، لا تزال هل حقا قذر. هذا هش بشكل فظيع ومن المحتمل أن يعمل فقط من أجل article الفصل ، لذلك إذا كنت تستخدم مختلفة \documentclass, ، ليس لديك اي حظ. لقد اشتق هذا بشكل أساسي عن طريق التمكين \tracingcommands=1 و \tracingmacros=1 و grepping .log ملف ل \clearpage حتى أتمكن من اختراق كل ما يتم استدعاؤه قبل إدراج أ \@noclearpage.

لا أوصي بهذا الحل - سيكون من الأفضل أن ننظر إلى كيفية chapterbib يعمل وإصلاحه بالطريقة الصحيحة ، دون الاعتماد على \include والانفصال .aux الملفات التي تنشئها ... لكنني إيجابي ستكون مهمة صعبة للغاية. أعتقد أن حلًا آخر هو كتابة أمر لمحاكاة \includeتفكك .aux الملفات ، دون القيام بالفعل بما يتضمن ...


تحرير: حسنًا ، إليك 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

ثم يمكنك فقط إدخال \begin{auxfile}{foo}...\end{auxfile} وسوف تستخدم foo.aux بدلا من الطبيعي .aux ملف. هذا متوافق تمامًا مع chapterbib. لا أعتقد أن CTAN لديه أي شيء من هذا القبيل ، لذلك ربما سأقدمها كطاقة صغيرة.

لم أجربها ولكن كما قرأت أنه يوحي:

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

على الرغم من أنني أخمن فقط بالترتيب الصحيح لتلك الخطوط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top