زی‌پرشین و BibTeX

از پارسی لاتک
پرش به: ناوبری، جستجو

مقدمه

یکی از روش‌های قدرتمند و انعطاف‌پذیر برای نوشتن مراجع مقالات و مدیریت مراجع در لاتک، استفاده از بسته‌ی BibTeX است. اگر این بسته را به کار نبریم (و از ویژگی‌های پیش‌فرض لاتک برای مدیریت مراجع استفاده کنیم)، باید مراجع هر مقاله را در پایان همان مقاله بنویسیم و در متن نوشته به آن‌ها ارجاع دهیم. ولی روش کار با بسته‌ی BibTeX به این صورت است که مجموعه‌ی همه‌ی مراجعی را که در نوشتن مقاله‌هایمان به کارمان می‌آید، در پرونده‌ی جداگانه‌ای نوشته و از آن در مقالات مختلف‌مان استفاده می‌کنیم. این روش ممکن است در آغاز کمی کار بیشتری بخواهد، ولی در پایان به سرعت کار می‌افزاید. گذشته از این، اگر کنفرانس‌ها یا مجله‌های گوناگون برای نوشتن مراجع، قالب‌ها یا قراردادهای متفاوتی داشته باشند (مثلاً در ترتیب مراجع، ترتیب نام نویسنده‌های هر مرجع، بزرگی و کوچکی حروف و نحوه‌ی چینش اجزاء مرجع) و شما می‌خواهید مقالاتی در یک موضوع را آماده نمایید، لازم نیست قالب مراجع را در هر سند خود به صورت جداگانه تغییر دهید. در این حالت به کمک سبک‌های BibTeX خواهید توانست تنها با تغییر یک پارامتر در پرونده‌ی ورودی خود، مراجع را مطابق قالب موردنظر تنظیم کنید. بیشتر مجلات و کنفرانس‌های معتبر یک پرونده‌ی سبک (BibTeX Style) با پسوند bst در وب‌گاه خود می‌گذارند که برای همین منظور طراحی شده است.

به جز نوشتن مقالات این سبک‌ها کمک بسیار خوبی برای تهیه‌ی مستندات علمی همچون پایان‌نامه‌هاست که فرد می‌تواند هر قسمت از کارش را که نوشت مراجع مربوطه را به بانک مراجع خود اضافه نماید. با داشتن چنین بانکی از مراجع، وی خواهد توانست به راحتی یک یا چند ارجاع به مراجع و یا یک یا چند بخش را حذف یا اضافه ‌نماید؛ مراجع به صورت خودکار مرتب شده و فقط مراجع ارجاع داده شده در قسمت کتاب‌نامه خواهندآمد. قالب مراجع به صورت یکدست مطابق سبک داده شده بوده و نیازی نیست که کاربر درگیر قالب‌دهی به مراجع باشد.

در این جا مجموعه‌ای از سبک‌های BibTeX که برای بسته‌ی زی‌پرشین تنظیم شده‌اند معرفی شده و روش کار با آن‌ها گفته می‌شود.

قسمت اصلی این نوشتار در راهنمای بسته‌ی Persian-bib آمده است. اگر توزیع تِکِ شما تک‌لایو است با تایپ دستور زیر در خط فرمان راهنما را خواهید دید:

texdoc persian-bib

سبک‌های فعلی قابل استفاده در زی‌پرشین

برخی از سبک‌های فارسی بسته‌ی Persian-bib که برای استفاده در زی‌پرشین آماده شده‌اند به قرار زیرند:

  • unsrt-fa.bst این سبک متناظر با unsrt.bst می‌باشد. مراجع به ترتیب ارجاع در متن ظاهر می‌شوند.
  • plain-fa.bst این سبک متناظر با plain.bst می‌باشد. مراجع بر اساس نام‌خانوادگی نویسندگان، به ترتیب صعودی مرتب می‌شوند. همچنین ابتدا مراجع فارسی و سپس مراجع انگلیسی خواهند آمد.
  • acm-fa.bst این سبک متناظر با acm.bst می‌باشد. شبیه plain-fa.bst است. قالب مراجع کمی متفاوت است. اسامی نویسندگان انگلیسی با حروف بزرگ انگلیسی نمایش داده می‌شوند.
  • ieeetr-fa.bst این سبک متناظر با ieeetr.bst می‌باشد. مراجع مرتب نمی‌شوند.
  • plainnat-fa.bst این سبک متناظر با plainnat.bst می‌باشد. نیاز به بستهٔ natbib دارد. (مراجع مرتب می‌شوند)
  • chicago-fa.bst این سبک متناظر با chicago.bst می‌باشد. نیاز به بستهٔ natbib دارد. (مراجع مرتب می‌شوند)
  • asa-fa.bst این سبک متناظر با asa.bst می‌باشد. نیاز به بستهٔ natbib دارد. (مراجع مرتب می‌شوند)


همراه با بسته‌ی Persian-bib یک برنامه پرل با نام gen_pdf وجود دارد که نمونه مثالهایی با سبکهای فوق برای شما تولید می‌کند. در تک‌لایو این فایل در مسیر texmf-dist\doc\xelatex\persian-bib قرار دارد. همچنین می‌توانید در صفحه‌ی سبکهای فارسی Persian-bib خروجی‌های مختلف را مشاهده و مقایسه فرمایید.

نحوه استفاده از سبک‌های فارسی

با مطالعه و اجرای مثال ارائه شده با بسته‌ی Persian-bib (فایل bibtex_example.tex) با نحوه‌ی استفاده از سبک‌های فارسی آشنا خواهید شد. مراحل اصلی برای استفاده از این سبک‌ها در ذیل آمده است:

  • در ابتدا باید یک بانک از مراجع خود همانند فایل MyReferences.bib تهیه نمایید. اغلب انواع مراجع معمول مورد استفاده در آن آمده است. این فایل را در هر زمان می‌توانید ویرایش نموده، مراجعی را حذف یا اضافه نمایید. به علاوه فقط مراجعی از این فایل که در متن به آنها ارجاع داده شده باشد در خروجی سند شما قرار خواهد گرفت.
  • برای هر مدخل فارسی بایستی فیلدی با نام language و با مقدار persian داشته باشید.
  • در محلی از سورس زی‌پرشین خود که می‌خواهید لیست مراجع قرار بگیرد (معمولاً آخر سند) دستورات زیر را قرار دهید:
 \bibliographystyle{STYLE_FILE_NAME} % such as plain-fa
 \bibliography{BIB_FILE_NAME} %such as MyReferences
  • دنباله پردازشهای زیر را برای حصول به نتیجه نهایی انجام دهید:
 xelatex filename
 bibtex  filename
 xelatex filename
 xelatex filename

یک فایل bib شامل چیست؟

یک فایل bib در واقع یک پایگاه داده از مراجع (Bibliography Database) شماست که هر مرجع در آن به عنوان یک رکورد از این پایگاه داده با قالبی خاص ذخیره می‌شود. به هر رکورد یک مدخل(Entry) گفته می‌شود. یک نمونه مدخل برای معرفی کتاب Digital Image Processing در ادامه آمده است:

  @BOOK{Gonzalez02book,
   AUTHOR =      {Rafael Gonzalez and Richard Woods},
   TITLE =       {Digital Image Processing},
   PUBLISHER =   {Prentice-Hall, Inc.},
   YEAR =        {2006},
   ISBN = 	      {013168728X},
   EDITION =     {3rd},
   ADDRESS =     {Upper Saddle River, NJ, USA}
  }

در مثال فوق، BOOK@ مشخصه‌ی شروع یک مدخل مربوط به یک کتاب و Gonzalez02book برچسبی است که به این مرجع منتسب شده است. این برچسب بایستی یکتا باشد. برای آنکه فرد به راحتی بتواند برچسب مراجع خود را به خاطر بسپارد و حتی‌الامکان برچسب‌ها متفاوت با هم باشند معمولاً از قوانین خاصی به این منظور استفاده می‌شود. یک قانون می‌تواند فامیل نویسنده‌ی اول+دورقم سال نشر+اولین کلمه‌ی عنوان اثر باشد. به AUTHOR و ... و ADDRESS فیلدهای این مدخل گفته می‌شود؛ که هر یک با مقادیر مربوط به مرجع مقدار گرفته‌اند. ترتیب فیلدها مهم نیست.

انواع متنوعی از مدخل‌ها برای اقسام مختلف مراجع همچون کتاب، مقاله‌ی کنفرانس و مقاله‌ی ژورنال وجود دارد که برخی فیلدهای آنها با هم متفاوت است. نام فیلدها بیانگر نوع اطلاعات آن می‌باشد. مثالهای ذکر شده در فایل MyReferences.bib کمک خوبی به شما خواهد بود. این فایل یک فایل متنی بوده و با ویرایشگرهای معمول همچون Notepad++ قابل ویرایش می‌باشد. برنامه‌هایی همچون TeXMaker امکاناتی برای نوشتن این مدخل‌ها دارند و به صورت خودکار فیلدهای مربوطه را در فایل bib شما قرار می‌دهند. با استفاده از سبک‌های فارسی آماده شده، محتویات هر فیلد می‌تواند به فارسی نوشته شود، ترتیب مراجع و نحوه‌ی چینش فیلدهای هر مرجع را سبک مورد استفاده مشخص خواهد کرد.

برای اطلاع از انواع فایلهای bst و نحوه‌ی کار با BibTeX به سایت‌های زیر مراجعه فرمایید:

چند نکته در مورد استفاده از سبک‌های فارسی

  • در حال حاضر نام کوچک نویسندگان فارسی به صورت کامل نمایش داده می‌شود. در صورت نیاز به ذکر فقط حرف اول نام، مدخل مراجع خود را اصلاح فرمایید.
  • به جای ایجاد فایل bib جدید برای خود، فایل MyReferencesbib که با رمزینه‌ی UTF-8 ذخیره شده است را تغییر داده در صورت نیاز با نامی دیگر ذخیره نمایید.

در غیراینصورت با مشکل مواجه خواهید شد.

  • برای فونت فارسی از فونت‌های سری XB استفاده نمایید.
  • در حال حاضر در تمامی سبک‌های فارسی ارائه شده (برخلاف فرم اصلی برخی از آنها) ابتدا نام خانوادگی و سپس نام افراد ظاهر می‌‌شود.
  • ممکن است خروجی فایل‌های سبک برای مراجع انگلیسی کمی متفاوت با متناظر اصلی آنها باشد. برای متون صرفاً لاتین خود از سبک‌های اصلی استفاده نمایید.
  • برچسب‌ هر مرجع می‌تواند به فارسی نوشته شود، لیکن در آن نباید فاصله بکار برده شده باشد.

به عنوان مثال به جای 'امین طوسی` بایستی از نیم فاصله استفاده نمود و آنرا به صورت 'امین‌طوسی` نوشت. از آنجا که برچسب فارسی با برخی بسته‌ها سازگار نیست، توصیه می‌شود از برچسب انگلیسی برای مراجع خود (چه فارسی و چه انگلیسی) استفاده نمایید.

مرتب‌سازی مراجع بر اساس نام نویسنده

مرتب‌سازی مراجع در سبک‌های plain-fa و acm-fa به شرطی که از bibtex8 و به صورت مناسب استفاده شود، به صورت خودکار انجام می‌شود. به این منظور دنباله پردازشهای زیر را انجام دهید:

 xelatex filename
 bibtex8 -W -c cp1256fa filename
 xelatex filename
 xelatex filename

در این حالت اگر از استیلهایی که مراجع را مرتب می‌کنند استفاده کرده باشید، ابتدا مراجع فارسی - بر حسب حروف الفبای فارسی- و سپس مراجع لاتین - بر حسب حروف الفبای لاتین- خواهند آمد. در ویرایشگرهای مختلف معمولا این امکان هست که bibtex را به گونه‌ای تنظیم نمود که همیشه به صورت فوق عمل نماید و تا آنجا که نگارنده می‌داند تنظیم به این صورت تاثیری روی اسناد لاتین کاربر نخواهد داشت.

برای تنظیم bibtex ویرایشگر texworks کافیست از منوی Edit گزینه Preferences را انتخاب کنید. سپس برگه Typesetting را برگزینید و پس از انتخاب BibTeX و زدن دکمه Edit پارامترهای آنرا مطابق شکل زیر اصلاح فرمایید:

Bibtex8-texworks.png

دقت فرمایید که نام برنامه را نیز از Bibtex به bibtex8 تغییر دهید.

پرسش و پاسخ

  • پرسش: آیا می‌توان شماره صفحات ارجاعی به هر مرجع را در انتهای هر مرجع داشت؟ این حالت مخصوصاً هنگام‌ داوری یک مقاله یا پروژه خیلی مفید است.

پاسخ: بله، اگر بستهٔ hyperref را به همراه گزینه pagebackref=true بکار برید به نتیجه مطلوب دست خواهید یافت:

 \usepackage[pagebackref=true]{hyperref}

همچنین با استفاده از بسته‌ی backref می‌توان این کار را انجام داد. به این منظور کافیست دستور زیر را در قسمت آغازین سند خود قرار دهید:

 \usepackage{backref}

به این ترتیب پس از هر مرجع شماره‌ی صفحه/صفحات ارجاعی به آن پس از کلمه‌ی 'صفحات' خواهد آمد. اگر مرجع لاتین باشد، از کلمهٔ pages استفاده خواهد شد.

  • پرسش: به صورت معمول وقتی از cite استفاده می‌کنیم شمارهٔ مرجع مربوطه را در خروجی داریم؛اگر لازم باشد که در جایی غیر از بخش مراجع متن مرجعی خاص را داشته باشیم چگونه عمل کنیم؟ این حالت مثلاً هنگامی که در بخشی از یک رساله می‌خواهیم ذکر کنیم که مطالب این بخش در فلان مقالهٔ ما چاپ شده است مورد نیاز است.

پاسخ: به صورت زیر از بستهٔ bibentry استفاده کنید:

  1.  \usepackage{bibentry}
  2.  ...
  3.  \begin{document}
  4.  \nobibliography*
  5.  ...
  6.  \bibentry{BIBITEM_TAG}
  7.  ...
  8.  \bibliographystyle{YOUR_STYLE}
  9.  \bibliography{YOUR_BIB_FILE}
  10.  \end{document}

این مثال را ملاحظه فرمایید.

نکته: این بسته با زی‌پرشین سازگار نشده است. مخصوصاً با بسته‌های backref و hyperref سازگار نیست. مسؤولیت استفاده از آن با خودتان می‌باشد.

  • پرسش: گاهی اوقات اخطار Underfull \hbox را دریافت می‌کنیم. مشکل از چیست؟

پاسخ: در برخی حالات به دلیل عدم توانایی تک در تنظیم بهینه‌ی محل شکستن خطوط این اخطار داده می‌شود که مهم نیست.

  • پرسش: چرا به جای خط فاصله در بین شماره صفحات مراجع فارسی یک مربع چاپ می‌شود؟

پاسخ: شما از فونت‌ مناسبی برای فارسی استفاده نکرده‌اید. از فونت‌های سری XB استفاده نمایید.

  • پرسش: چرا در سبک ieeetr-fa شماره‌ی مجله (number) در مراجع از نوع article نمایش داده نمی‌شود؟

پاسخ: در سبک اصلی ieeetr اگر ماه نشر مجله مشخص باشد، شماره‌ی آن نمایش داده نخواهد شد. همچنین دقت داشته باشید که این سبک کاملاً مطابق با سبک جدید IEEEtran نیست.

  • پرسش: حروف فارسی در لیست مراجع من به‌هم ریخته و ناخوانا است. مشکل از چیست؟

پاسخ: همان‌گونه که قبلاً اشاره شد فایل bib بایستی با رمزینه‌ی UTF-8 ذخیره شده باشد. به جای ایجاد فایل bib جدید برای خود، فایل MyReferencesbib را که با رمزینه‌ی UTF-8 ذخیره شده است را تغییر داده در صورت نیاز با نامی دیگر ذخیره نمایید.

  • پرسش: هنگامیکه تمام مراجع من لاتین بوده و از یک فایل سبک لاتین مانند plain.bst استفاده می‌کنم خروجی از راست به چپ نوشته می‌شود! و اگر آنرا در داخل محیط انگلیسی قرار دهم به جای کلمه 'مراجع' عبارت 'References' در خروجی ظاهر می‌شود، چاره چیست؟

پاسخ:

اگر از بسته bidi (نسخه >= 30.7) و بسته xepersian (نسخه>= 18.7) استفاده می‌کنید، فقط کافیست قبل از بخش مراجع، دستور setLTRbibitems را بنویسید. پرسش و پاسخ را ملاحظه فرمایید.

اما اگر از نسخه‌های قدیمی‌تر (قبل از خرداد ۱۳۹۶، ژوئن ۲۰۱۷) استفاده می‌کنید، مطالب ادامه را مطالعه فرمایید. برای تغییر References به 'مراجع' یا 'منابع' در محیط latin می‌توانید به صورت زیر عمل کنید (بسته به اینکه در طبقه نوشتاری article یا book هستید):

 \renewcommand{\refname}{\rl{{مراجع}\hfill}}\renewcommand{\bibname}{\rl{{کتاب‌نامه}\hfill}}

اما این روش توصیه نمی‌شود. اگر از هر یک از دو شیوه زیر استفاده کنید، ضمن داشتن مراجع لاتین، عنوان بخش مراجع هم به درستی نمایش داده خواهد شد.

راه حل اول: (استفاده از bibtex)

 \setLTRbibitems
 \makeatletter
 \bidi@AtBeginEnvironment{thebibliography}{\latinfont}
 \makeatother
 \bibliographystyle{STYLE_FILE_NAME} % such as plain
 \bibliography{BIB_FILE_NAME} %such as MyReferences

راه حل دوم: (بدون استفاده از bibtex) اگر از بیب‌تک استفاده نمی‌کنید، به صورت زیر عمل کنید:

 \setLTRbibitems
 \begin{thebibliography}{9}
 \resetlatinfont
 \bibitem{Amintoosi09afast}
 Mahmood Amintoosi, Mahmood Fathy, and Nasser Mozayani.
 \newblock A fast image registration approach based on sift key-points applied to super-resolution.
 \newblock {\em Imaging Science Journal}, 60(4):185--201, 2012.
 
 \bibitem{Khalighi08xepersian}
 Vafa Khalighi.
 \newblock {The XePersian Package, Persian for \LaTeX2e over \XeTeX}.
 \newblock \url{http://ctan.org/pkg/xepersian}, 2008.
 \end{thebibliography}

خروجی مربوط به قطعه کد فوق به صورت زیر خواهد بود:

LTR refs in RTL.png

البته newblock و em ضروری نیستند و خروجی را می‌توانید به هر صورتی که مدنظرتان است داشته باشید. برای دیدن مثال و روش دیگر این پرسش و پاسخ را ملاحظه فرمایید.