کتاب‌نامه

در هر نوشتهٔ دانشگاهی و پژوهشی، افزودن مراجع به نوشته یک بخش مهم از کار است. از آن‌جا که لاتک برای همین جور کارها ساخته شده است، خوشبختانه ویژگی‌های زیادی دارد که کار با مراجع را آسان می‌کنند. در لاتک ویژگی‌های توکاری برای مدیریت مراجع هست، ولی با ابزار کمکی دیگری به نام بیب‌تک (Bibtex) (که به همراه لاتک موجود است) می‌توان همین کار را به شکل بسیار قدرتمندتر و انعطاف‌پذیرتری انجام داد.

به کمک بیب‌تک می‌توانید همهٔ مراجع خود را در یک پروندهٔ جداگانه به شکل یک پایگاه دادهٔ ساده نگه دارید. سپس به آسانی این پرونده را به نوشتهٔ لاتک خود پیوند می‌زنید، و به هر مرجعی که در آن پرونده باشد، در نوشتهٔ خود ارجاع می‌دهید. این کار معمولاً آسان‌تر از این است که مراجع خود را در پایان هر نوشتهٔ لاتک بنویسید. می‌توانیم یک پروندهٔ مرکزی داشته باشیم که همهٔ مراجع را در آن نوشته‌ایم، و آن را برای همهٔ مقاله‌هایی که می‌نویسیم به کار ببریم (یک بار بنویسید، چند بار بخوانید!) البته این امکان هم هست که مراجع خود را در پرونده‌های جداگانه‌ای گروه‌بندی کنید؛ مثلاً یک پرونده برای مراجع مربوط به نظریهٔ نسبیت داشته باشید و یکی هم برای مراجع مربوط به فیزیک کوانتومی. و اگر بخواهید مقاله‌ای دربارهٔ نظریهٔ وحدت بزرگ (GUT) بنویسید که می‌کوشد ناسازگاری‌های این دو نظریه را با هم آشتی دهد، آن‌گاه می‌توانید هر دو پرونده را به مقالهٔ خود پیوند بزنید، به علاوهٔ پروندهٔ دیگری مربوط به مراجع GUT. البته شما هر جور که بخواهید می‌توانید مراجع خود را ذخیره کنید.

بیب‌تک

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

یک پایگاه دادهٔ بیب‌تک در پرونده‌ای با پسوند .bib ذخیره می‌شود. این یک پروندهٔ متنی ساده است و بنابراین به آسانی خوانده و ویرایش می‌شود. ساختار این پرونده هم بسیار ساده است. نمونه‌ای از یک مدخل بیب‌تک به شکل زیر است:

@article{greenwade93,
    author  = "George D. Greenwade",
    title   = "The {C}omprehensive {T}ex {A}rchive {N}etwork ({CTAN})",
    year    = "1993",
    journal = "TUGBoat",
    volume  = "14",
    number  = "3",
    pages   = "342--351"
}

هر مدخل با عبارت @type آغاز می‌شود که نوع آن مدخل را مشخص می‌کند. بیب‌تک هر جور مرجعی را که فکرش را بکنید می‌شناسد، مثلاً کتاب (book)، مقاله (article)، مقاله‌های کنفرانس (inproceedings) و غیره. در مثال بالا من به یک مقاله در یک مجله ارجاع داده‌ام.

پس از آن، باید یک کروشه باز کنیم تا اطلاعات آن مرجع را بنویسیم. نخستین مورد بلافاصله پس از کروشه می‌آید که کلید ارجاع (citation key) یا شناسه نام دارد. این شناسه باید برای هر مرجعی یکتا باشد. با همین شناسه است که شما در نوشتهٔ خود به این مرجع ارجاع می‌دهید. این شناسه را می‌توانید به دلخواه خود هر چیزی بگذارید، ولی یک استاندارد غیررسمی وجود دارد که می‌گوید شناسه را باید نام فامیل نویسنده بگذارید که سال انتشار هم به آن افزوده شده است. من هم در این درس همین روش را به کار می‌برم.

سپس باید داده‌های دیگر مربوط به مرجع را بنویسیم. نام‌های سمت چپ کلیدواژه‌های بیب‌تک هستند. پس از هر کلیدواژه علامت مساوی (=) می‌آید و سپس مقدار آن کلیدواژه روبه‌رویش نوشته می‌شود. بیب‌تک انتظار دارد که آغاز و پایان هر مقدار را صریحاً مشخص کنید. من معمولاً این کار را با گیومه (") انجام می‌دهم، هرچند که شما می‌توانید کروشه ({ }) را هم به کار ببرید. ولی به زودی خواهید دید که کروشه کاربردهای دیگری هم در این‌جا دارد و بهتر است آن‌ها را برای این کار به کار نبرید تا شما را سردرگم نکنند.

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

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

نویسندگان

بیب‌تک در کار با نام نویسندگان تا حد خوبی باهوش است. بیب‌تک می‌تواند نام‌ها را در دو قالب <نام کوچک> <نام بزرگ> یا <نام بزرگ، نام کوچک> بپذیرد. من معمولاً اولی را به کار می‌برم، ولی مهم این است که ترتیب واردکردن نام‌ها (یا هر ویژگی دیگر هر مدخل) به آسانی سفارشی می‌شود و شما می‌توانید به بیب‌تک بگویید که ورودی را پردازش کند و خروجی را همان جوری بسازد که شما می‌خواهید. اگر شما نام‌ها را به شکل <نام کوچک> <نام بزرگ> می‌نویسید، آن وقت باید حواستان به بعضی از نام‌های خاص باشد که نام بزرگشان چند بخش دارد. مثلاً نام «علی احمدی بصیر» را در نظر بگیرید. بیب‌تک فکر می‌کند که آخرین واژه نام بزرگ است، و هر چیزی پیش از آن نام کوچک به علاوهٔ نام‌های میانی است. بنابراین لازم است که شما صریحاً به بیب‌تک بگویید که «احمدی» و «بصیر» را کنار هم نگه دارد. این کار به آسانی با کروشه انجام می‌شود، یعنی می‌نویسید "علی {احمدی بصیر}". البته این مشکل با روش <نام بزرگ، نام کوچک> پیش نمی‌آید، زیرا نام کوچک با یک ویرگول از نام بزرگ جدا شده است. البته باز هم همه چیز به خواست شما بستگی دارد.

همچنین برای مراجعی که بیش از یک نویسنده دارند باید حواسمان باشد. این کار به سادگی با گذاشتن واژهٔ and بین نام نویسندگان انجام می‌شود. همان گونه که در مثال زیر می‌بینیم:

@book{goossens93,
    author    = "Michel Goossens and Frank Mittlebach and Alexander Samarin",
    title     = "The Latex Companion",
    year      = "1993",
    publisher = "Addison-Wesley",
    address   = "Reading, Massachusetts"
}

این کتاب سه نویسنده دارد، و نام این نویسندگان همان گونه که گفته شد از هم جداشده‌اند. البته وقتی بیب‌تک این مرجع را پردازش می‌کند تا در خروجی نشان دهد، تنها بین نام نویسندهٔ یکی‌مانده‌به‌آخر و آخری واژهٔ and را می‌آورد، ولی درون پروندهٔ bib همهٔ نام‌ها باید با همین and از هم جداشوند تا بیب‌تک بتواند آن‌ها از هم تفکیک کند.

نگه‌داشتن بزرگی حروف

اگر بیب‌تک جوری تنظیم شده باشد که بزرگی و کوچکی حروف را در نام‌ها نگه ندارد، مشکل پیش می‌آید. این مشکل به سادگی با گذاشتن کروشه دور حرف‌هایی که می‌خواهیم بزرگ بمانند حل می‌شود. چنین نمونه‌ای را در نخستین مثال این درس می‌توانید ببینید.

شناساندن پروندهٔ bib. به نوشتهٔ لاتک

این کار هم سخت نیست. در پایان نوشتهٔ لاتک (یعنی پس از محتویات نوشته و پیش از فرمان \end{document}) باید دو سطر زیر را بنویسید:

\bibliographystyle{plain}
\bibliography{sample}

سبک‌های مرجع (bibliographystyle که در سطر نخست می‌بینید) پرونده‌هایی هستند که بیب‌تک آن‌ها را می‌شناسد و به بیب‌تک می‌گویند که اطلاعات موجود در پروندهٔ bib. را چگونه قالب‌بندی کند. بنابراین نخستین فرمان کدهای بالا می‌گویند که چه سبکی به کار برود. سبک به‌کاررفته در مثال بالا plain.bst است (که به همراه بیب‌تک وجود دارد). شما لازم نیست که پسوند bst. را در این فرمان بنویسید، زیرا خودش فرض می‌کند که همین پسوند را دارد. بر خلاف نامش (plain به معنی ساده)، این سبک کارش را خیلی خوب انجام می‌دهد (به خروجی این درس نگاه کنید تا منظورم را بفهمید).

فرمان دوم همان فرمانی است که پروندهٔ bib. را که شما مراجع را در آن نوشته‌اید مشخص می‌کند. پرونده‌ای که من برای این درس ساخته‌ام نامش هست sample.bib ولی طبق معمول نیازی به نوشتن پسوند bib نیست. الان پروندهٔ bib در همان پوشه‌ای قرار دارد که نوشتهٔ لاتک هم در آن است. ولی اگر پروندهٔ bib شما جای دیگری است (که اگر شما یک پروندهٔ bib برای همهٔ مقاله‌های خود داشته باشید، احتمالش زیاد است که این گونه باشد)، شما باید مسیر پروندهٔ bib را نیز مشخص کنید، یعنی بنویسید \bibliography{$HOME/some/where/sample.bib}.

حالا که لاتک و بیب‌تک می‌دانند کجا دنبال مراجع بگردند، ارجاع‌دادن به مراجع کار بسیار سرراستی خواهد بود. فرمان \cite{ref_key} همان چیزی است که این کار را برایتان می‌کند، البته به شرط این که حواستان باشد که ref_key دقیقاً همان واژه‌ای است که در پروندهٔ bib مرجع شما را مشخص کرده است. اگر بخواهید به بیش از یک مرجع ارجاع دهید، کافی است بنویسید: \cite{ref_key1, ref_key2, ..., ref_key3}.

چرا لاتک هیچ خروجی‌ای نمی‌سازد؟

افزوده‌شدن بیب‌تک باعث پیچیده‌ترشدن فرایند پردازش نوشته می‌شود. بیشتر این پیچیدگی‌ها از چشم کاربر پنهان هستند، ولی به خاطر همهٔ پیچید‌گی‌های ارجاع‌دادن از نوشتهٔ لاتک شما به مدخل‌های موجود در یک پروندهٔ دیگر، نیاز به اجرای چند بارهٔ برنامه‌ها است تا ارجاع به درستی انجام شود. یعنی شما باید لاتک را چند بار روی نوشتهٔ خود اجرا کنید و در هر اجرا، لاتک کارهای خاصی را انجام می‌دهد تا سرانجام همهٔ ارجاع‌ها به درستی انجام شوند. کارهایی که باید بکنید به شرح زیر هستند:
  1. latex bib (نیازی به پسوند tex. نیست)
  2. bibtex bib (نیازی به پسوند bib. نیست)
  3. latex bib
  4. latex bib

پرونده‌های این درس