BibTeX در برابر BibLaTeX، توضیح داده شده
BibTeX و BibLaTeX ارجاعات را در یک فایل مشابه ذخیره میکنند، اما آن داده را به شیوههایی کاملا متفاوت پردازش و قالببندی میکنند. در اینجا تفاوت backend که واقعا این دو را از هم جدا میکند، دلیل بهتر بودن BibLaTeX در منابع غیرانگلیسی و نامتعارف، و هزینه واقعی تغییر از یکی به دیگری آمده است.
دانشجوی دکتری پوشه الگوی قدیمی پایاننامه LaTeX استاد راهنمایش را باز میکند تا نگارش پایاننامه خود را آغاز کند، اما فایل References.bib را در کنار فرمان bibliographystyle مییابد که به apalike اشاره میکند. او هیچ ایدهای ندارد که نظام ارجاعدهی هیچیک چیست. پوشه هیچ چیزی ندارد که این را بهطور مستقیم نشان دهد، و گذشته از این، نویسنده اصلی الگو اکنون سه postdocs و یک قاره دورتر است.
BibTeX در برابر BibLaTeX پرسش واقعی پنهان زیر این سردرگمی است. هر دو دادههای استناد را در فایلی مشابه ذخیره میکنند، اما آن دادهها را با سازوکارهایی کاملاً متفاوت پردازش، قالببندی و خروجی میدهند. دانستن اینکه یک سند از پیش از کدامیک استفاده میکند، و اگر آن را عوض کنید دقیقاً چه چیزی تغییر میکند، تفاوت میان یک بعدازظهر از دسترفته در سردرگمی و یک بعدازظهر صرفشده برای نوشتن است.
استناد درست به یک منبع فقط نیمی از پرسش مربوط به سبک ارجاعدهی است، و نیمهای که در راهنمای خود TextPulse درباره سبکهای ارجاعدهی پوشش داده میشود بسیار فراتر از هر نظام حروفچینی واحدی میرود. این متن بهطور محدود بر شاخه ویژه LaTeX از این پرسش متمرکز میماند: BibTeX یا BibLaTeX، و آنچه واقعاً آنها را از هم جدا میکند.
BibTeX در برابر BibLaTeX: جدایی واقعاً در کجا رخ میدهد
BibTeX قدیمیترِ این دو نظام است، و همزمان دو کار انجام میدهد. این نظام دادههای موجود در یک فایل .bib را میخواند، و آن دادهها را با هدایت یک فایل سبک جداگانه، یعنی یک فایل .bst، به فهرست نهایی منابع قالببندی میکند، فایلی که تعیین میکند هر مدخل چگونه باید به نظر برسد. زبان .bst کوچک است و دقیقاً برای همین یک کار طراحی شده است، و همین هم محدودیت آن است: گسترش آن برای پوشش دادن نوع منبعی که نویسنده اصلیاش هرگز برای آن برنامهریزی نکرده بود، خود یک مهارت تخصصی مستقل است.
BibLaTeX این دو وظیفه را از هم جدا میکند. قالببندی در خود LaTeX انجام میشود و بهوسیله ماکروهای معمول LaTeX در پیشگفتار خودِ سند کنترل میشود، نه توسط یک فایل سبک جداگانه. پردازش دادهها، یعنی خواندن، مرتبسازی و آمادهسازی مدخلهای فایل .bib برای خروجی، بر عهده یک برنامه پشتیبان اختصاصی به نام Biber است که BibLaTeX آن را هنگام کامپایل بهطور خودکار فراخوانی میکند. BibTeX پردازش و قالببندی را در یک گام انجام میدهد، BibLaTeX این دو وظیفه را میان ماکروهای LaTeX و Biber تقسیم میکند. همین جداسازی معماری، پاسخ واقعی به این است که چه چیزی آنها را از هم متمایز میکند.
| BibTeX | BibLaTeX | |
|---|---|---|
| منطق قالببندی | یک فایل سبک .bst جداگانه | ماکروهای LaTeX درون سند |
| پردازشگر پشتیبان | خود BibTeX، در یک گام | Biber، که هنگام زمان کامپایل بهطور خودکار اجرا میشود |
| پشتیبانی از Unicode | بومی ندارد | کامل |
| کتابنامههای چندزبانه | به یک بسته افزونه نیاز دارد | درونساخته است، و از تنظیم زبان سند پیروی میکند |
| فراخوان معمول در پیشگفتار | bibliographystyle بهعلاوه bibliography | usepackage biblatex بهعلاوه addbibresource |
چرا BibLaTeX منابع غیرانگلیسی و نامتعارف را بهتر مدیریت میکند
شکاف Unicode بهتنهایی بیشترِ مسئله غیرانگلیسی را توضیح میدهد. BibTeX پشتیبانی بومی از Unicode ندارد، بنابراین نام یک نویسنده یا عنوانی که شامل نویسهای بیرون از مجموعه لاتین پایه باشد، ابتدا به یک راهحل موقت نیاز دارد. پشتیبان Biber در BibLaTeX از Unicode کامل پشتیبانی میکند، بنابراین نویسههای دارای علامت، خطهای غیرلاتین و هر چیز دیگر در زبان اصلی یک منبع، مستقیم وارد فایل .bib میشوند و بهدرستی قالببندیشده بیرون میآیند.
مدیریت زبان فراتر از نویسههای منفرد است. BibLaTeX به طور خودکار واژههای پیوندی، مانند edition یا editor، را با زبانی که سند از طریق babel یا polyglossia روی آن تنظیم شده است، هماهنگ میکند، و همچنین قابلیتهایی را که پیشتر در چند بسته افزونه جداگانه برای کتابنامههای چندزبانه یا چندبخشی قرار داشت، در خود جذب کرده است. سبکهای کلاسیک BibTeX معمولاً برای یک زبان نوشته میشوند، تقریباً همیشه انگلیسی، بنابراین سندی که به منابع فرانسوی یا آلمانی ارجاع میدهد، به طور متعارف به یک بسته اضافی فقط برای همان منظور نیاز داشت.
نیمه دوم این ادعا از همان جدایی معماری ناشی میشود. BibLaTeX با نگه داشتن قواعد قالببندی خود در ماکروهای LaTeX، به جای یک زبان سبک کوچک و هدفمند، میتواند به طور پیشفرض از مجموعه گستردهتری از انواع مدخل پشتیبانی کند. اینها منابعی مانند منابع برخط، مجموعهدادهها و آثار چندجلدی را در بر میگیرند که طراحی اولیه BibTeX هرگز برای آنها پیشبینی نشده بود. پژوهشگری که به یک مجموعهداده، یک پیشچاپ یا یک گزارش فقط برخط ارجاع میدهد، معمولاً نوع مدخل BibLaTeX را از پیش آماده خواهد یافت، در حالی که یک گردش کار BibTeX به معنای خم کردن یک نوع موجود، معمولاً نوع همهمنظوره miscellaneous، برای سازگار شدن با آن است.
مقاله خود را انسانیسازی کنید
متنِ کمکگرفته از AI خود را دگرگون کنید و کاری کنید طبیعی به نظر برسد، بدون دست زدن به واژههای مهم یا ارجاعها.
چگونه تشخیص دهید سند شما از پیش از کدام یک استفاده میکند
پیشگفتار در چند ثانیه تکلیف را روشن میکند. سندی که biblatex را بارگذاری میکند، همراه با خط addbibresource که به یک فایل .bib اشاره دارد، از BibLaTeX استفاده میکند. سندی که به جای آن bibliographystyle را فراخوانی میکند و سپس در نزدیکی پایان فایل bibliography میآورد، بدون آنکه در هیچ جای پیشگفتار اشارهای به biblatex شده باشد، از BibTeX کلاسیک استفاده میکند.
- پیشگفتار را برای واژه biblatex جستجو کنید. اگر در یک خط package ظاهر شود، سند بر پایه BibLaTeX است.
- به دنبال addbibresource بگردید. این مورد فقط در BibLaTeX وجود دارد، BibTeX کلاسیک به جای آن از bibliography استفاده میکند.
- بررسی کنید برنامه ساخت از چه چیزی فراخوانی میکند. یک سند BibLaTeX برای اجرا در زنجیره گردآوری به Biber نیاز دارد، نه BibTeX.
- دستورهای ارجاع در متن را بررسی کنید. parencite و textcite فقط در BibLaTeX وجود دارند، cite به تنهایی در هر دو کار میکند، و به همین دلیل بررسی پیشگفتار در اولویت قرار میگیرد.
تغییر از BibTeX به BibLaTeX در عمل چه هزینهای دارد
خود فایل .bib تقریباً بدون تغییر از یک جابهجایی جان سالم به در میبرد، زیرا هر دو سیستم همان قالب زیربنایی مدخل را میخوانند. بیشتر فیلدها مستقیماً منتقل میشوند، و BibLaTeX نامهای اصلی فیلد در BibTeX را بهعنوان نامهای مستعار میپذیرد، هرچند گزینههای دقیقتری هم ارائه میکند، مانند یک فیلد تاریخ بهجای فیلدهای جداگانه year و month.
وقتی نظام ارجاعدهی یک سند تأیید شد، تولید هر مدخل جدید در شکل درست با یک bibtex generator اختصاصی آسانتر از تایپ کردن فیلدهای خام از حافظه است، بهویژه برای نوع منبعی که فقط یکبار در کل سند ظاهر میشود.
هزینه واقعی در پیشگفتار و زنجیره ساخت است، نه در داده. bibliographystyle و bibliography باید با biblatex و addbibresource جایگزین شوند، هر فرمان ارجاعی که از natbib گرفته شده است باید با معادلهای خود BibLaTeX بررسی شود، و باید به گردآورنده یا ویرایشگر گفته شود که در جریان ساخت بهجای BibTeX، Biber را اجرا کند. همان گام آخر است که افراد را غافلگیر میکند: ویرایشگری که هنوز برای توالی ساخت قدیمی پیکربندی شده است، سندی بدون هیچ کتابنامهای تولید میکند، و هیچ خطایی هم به علت واقعی اشاره نمیکند.
هیچیک از اینها دشوار نیست، وقتی شناسایی شود، و دقیقاً همین مسئله مشکل است. هر بخش یک تغییر کوچک و خوب مستندشده است، اما الگویی که بدون توضیح به ارث رسیده باشد، معمولاً در نخستین مورد، یعنی گام ساخت، بیصدا شکست میخورد، پیش از آنکه نویسنده حتی ببیند آیا خود ارجاعها کار میکردهاند یا نه.
آیا باید جابهجا شوید، یا یک الگوی کارآمد را دستنخورده بگذارید؟
اگر از پیش در حال تولید سندی هستید که با BibTeX کلاسیک کار میکند، یعنی هیچ ویژگی جدیدی لازم نیست، فقط به منابع انگلیسیزبان ارجاع میدهد، و هرگز به نوع منبعی جز مقالهها، کتابها و مقالههای کنفرانسی نیاز ندارد، دلیل اندکی برای انجام این جابهجایی در میانه یک پروژه وجود دارد. یک الگوی پایاننامه که دو ماه تا موعد تحویل فاصله دارد، جای مناسبی برای پذیرفتن هزینه مهاجرت بالا نیست.
سندی که منابع را به بیش از یک زبان ارجاع میدهد، از مجموعهدادهها، وبسایتها یا دیگر انواع منبع غیرمتعارف استفاده میکند، یا بهطور خاص به این دلیل به ارث رسیده است که نویسنده اصلی آن را از پیش بر پایه BibLaTeX ساخته بود، یک مورد متفاوت است. در آنجا پرسش این نیست که آیا باید تغییر داد یا نه، بلکه این است که آیا آن سند اصلاً از ابتدا با BibTeX کلاسیک اجرا میشده است یا نه، و دقیقاً همین است که بررسی پیشنویس بالا برای آن انجام میشود.
بازقالببندی یک فهرست منابع برای یک مجله دیگر صفحه مخصوص خود را دارد، و تفاوت میان یک کتابنامه حاشیهنویسیشده و یک مرور ادبیات نیز همینطور.
با این حال، هر مسئله استنادی یک مسئله LaTeX نیست. یک مولد استناد که یک منبع را مستقیماً از یک رکورد ناشر برمیگیرد همان وظیفه زیربنایی را برای هر کسی که بهجای LaTeX با Word کار میکند حل میکند، بیآنکه هیچ فایل .bst یا اجرای Biber در کار باشد.
سؤالات متداول
BibTeX در برابر BibLaTeX به این برمیگردد که کار قالببندی کجا انجام میشود. BibTeX خودِ دادههای ارجاع را میخواند و قالببندی میکند، و این کار را با هدایت یک فایل سبک .bst جداگانه انجام میدهد. BibLaTeX این وظیفه را تقسیم میکند: یک برنامه backend به نام Biber دادهها را مدیریت میکند، در حالی که قالببندی با ماکروهای معمولی LaTeX در سند کنترل میشود. همین تقسیم است که باعث میشود BibLaTeX با Unicode، زبانهای متعدد و انواع نامتعارف منابع آسانتر کار کند.
Content planner and copywriter at TextPulse. Sara runs the blog day to day, from planning and drafting through to publishing. She writes the practical guides: clear explanations of academic writing problems, aimed at the person who actually has to hand something in.