باستخدام LATEX ، كيف يمكنني الحصول على قائمة بالمراجع في نهاية كل قسم؟ [مغلق
-
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}
على الرغم من أنني أخمن فقط بالترتيب الصحيح لتلك الخطوط.