Academic Writing

BibTeX เทียบกับ BibLaTeX อธิบายแล้ว

BibTeX และ BibLaTeX เก็บรายการอ้างอิงไว้ในไฟล์ที่คล้ายกัน แต่ประมวลผลและจัดรูปแบบข้อมูลนั้นด้วยวิธีที่แตกต่างกันโดยสิ้นเชิง นี่คือความแตกต่างของ backend ที่แยกสองระบบนี้ออกจากกันจริง ๆ เหตุใด BibLaTeX จัดการแหล่งข้อมูลที่ไม่ใช่ภาษาอังกฤษและแหล่งข้อมูลที่ไม่ปกติได้ดีกว่า และการเปลี่ยนใช้งานมีต้นทุนจริงเท่าใด

5 min
Table comparing BibTeX vs BibLaTeX by formatting logic, backend processor and Unicode support

นักศึกษาปริญญาเอกเปิดเทมเพลตวิทยานิพนธ์ LaTeX เก่าของอาจารย์ที่ปรึกษาเพื่อเริ่มเขียนวิทยานิพนธ์ของตนเอง แต่กลับพบไฟล์ References.bib วางอยู่ข้างคำสั่ง bibliographystyle ที่ชี้ไปยัง apalike เขาไม่รู้เลยว่าระบบการอ้างอิงของทั้งสองคืออะไร โฟลเดอร์นั้นไม่มีอะไรที่บ่งชี้เรื่องนี้โดยตรง และยิ่งไปกว่านั้น ผู้เขียนต้นฉบับของเทมเพลตก็อยู่ห่างออกไปถึงสามตำแหน่ง postdoc และอีกหนึ่งทวีปแล้ว

BibTeX กับ BibLaTeX คือคำถามที่แท้จริงซึ่งซ่อนอยู่ใต้ความสับสนนั้น ทั้งสองเก็บข้อมูลการอ้างอิงไว้ในไฟล์ลักษณะคล้ายกัน แต่ประมวลผล จัดรูปแบบ และส่งออกข้อมูลนั้นด้วยกลไกที่แตกต่างกันโดยสิ้นเชิง การรู้ว่าเอกสารหนึ่งใช้ระบบใดอยู่แล้ว และอะไรเปลี่ยนไปจริง ๆ หากสลับระบบ จึงเป็นความแตกต่างระหว่างช่วงบ่ายที่สูญไปกับความสับสน กับช่วงบ่ายที่ได้ใช้เขียนงาน

การอ้างอิงแหล่งข้อมูลอย่างถูกต้องเป็นเพียงครึ่งหนึ่งของคำถามเรื่องรูปแบบการอ้างอิงเสมอ และครึ่งที่ TextPulse อธิบายไว้ใน คู่มือรูปแบบการอ้างอิง ของตนเองนั้นกว้างไกลกว่าระบบเรียงพิมพ์ใดระบบหนึ่งมาก บทความนี้จะจำกัดอยู่เฉพาะทางแยกของคำถามนั้นที่เกี่ยวกับ LaTeX, คือ BibTeX หรือ BibLaTeX และสิ่งที่แยกทั้งสองออกจากกันจริง ๆ

BibTeX กับ BibLaTeX, จุดที่การแยกทางเกิดขึ้นจริง

BibTeX เป็นระบบที่เก่ากว่าของทั้งสองระบบ และทำสองหน้าที่ในเวลาเดียวกัน มันอ่านข้อมูลที่อยู่ในไฟล์ .bib และจัดรูปแบบข้อมูลนั้นให้เป็นรายการอ้างอิงที่สมบูรณ์ โดยมีไฟล์รูปแบบแยกต่างหากคือไฟล์ .bst เป็นตัวกำหนดว่าแต่ละรายการควรมีลักษณะอย่างไร ภาษา .bst มีขนาดเล็กและสร้างขึ้นมาเพื่อทำงานเฉพาะนี้โดยตรง ซึ่งนั่นก็เป็นข้อจำกัดของมันเช่นกัน, การขยายให้รองรับประเภทแหล่งข้อมูลที่ผู้เขียนต้นฉบับไม่เคยวางแผนไว้ เป็นทักษะเฉพาะทางอีกแบบหนึ่ง

BibLaTeX แยกสองหน้าที่นั้นออกจากกัน การจัดรูปแบบเกิดขึ้นภายใน LaTeX เอง โดยควบคุมด้วยมาโคร LaTeX ทั่วไปใน preamble ของเอกสารนั้นเอง แทนที่จะใช้ไฟล์สไตล์แยกต่างหาก การประมวลผลข้อมูล การอ่าน การเรียงลำดับ และการเตรียมรายการในไฟล์ .bib สำหรับการแสดงผล ถูกจัดการโดยโปรแกรม backend เฉพาะที่เรียกว่า Biber ซึ่ง BibLaTeX เรียกใช้อัตโนมัติระหว่างการคอมไพล์ BibTeX ประมวลผลและจัดรูปแบบในขั้นตอนเดียว, BibLaTeX แยกสองหน้าที่ระหว่างมาโคร LaTeX และ Biber การแยกเชิงสถาปัตยกรรมนี้คือคำตอบที่แท้จริงของสิ่งที่ทำให้ทั้งสองแตกต่างกัน

BibTeXBibLaTeX
ตรรกะการจัดรูปแบบไฟล์สไตล์ .bst แยกต่างหากมาโคร LaTeX ภายในเอกสาร
ตัวประมวลผล backendBibTeX เอง, ในขั้นตอนเดียวBiber, ทำงานอัตโนมัติในเวลาคอมไพล์
การรองรับ Unicodeไม่มีโดยกำเนิดเต็มรูปแบบ
บรรณานุกรมหลายภาษาต้องใช้แพ็กเกจเสริมมีในตัว, เป็นไปตามการตั้งค่าภาษาของเอกสาร
คำสั่งใน preamble ที่ใช้โดยทั่วไปbibliographystyle plus bibliographyusepackage biblatex plus addbibresource

เหตุใด BibLaTeX จึงจัดการแหล่งข้อมูลที่ไม่ใช่ภาษาอังกฤษและแหล่งข้อมูลที่ไม่ปกติได้ดีกว่า

ช่องว่างด้าน Unicode อธิบายปัญหาภาษาอื่นที่ไม่ใช่ภาษาอังกฤษได้เกือบทั้งหมดด้วยตัวมันเอง BibTeX ไม่มีการรองรับ Unicode โดยกำเนิด ดังนั้นชื่อผู้แต่งหรือชื่อเรื่องที่มีอักขระนอกชุดละตินพื้นฐานจึงต้องมีวิธีแก้ไขชั่วคราวก่อน Biber backend ของ BibLaTeX รองรับ Unicode เต็มรูปแบบ ดังนั้นอักขระที่มีเครื่องหมายกำกับ, สคริปต์ที่ไม่ใช่ละติน และสิ่งอื่นใดในภาษาต้นฉบับของแหล่งข้อมูลจึงสามารถใส่ลงในไฟล์ .bib ได้โดยตรงและแสดงผลออกมาอย่างถูกต้อง

การจัดการภาษาไม่ได้จำกัดอยู่เพียงอักขระรายตัว BibLaTeX ปรับคำเชื่อม เช่น edition หรือ editor ให้สอดคล้องกับภาษาที่เอกสารถูกตั้งค่าไว้ผ่าน babel หรือ polyglossia โดยอัตโนมัติ และยังรับเอาฟังก์ชันการทำงานที่เคยอยู่ในแพ็กเกจเสริมแยกหลายตัวสำหรับบรรณานุกรมหลายภาษา หรือบรรณานุกรมหลายส่วนเข้ามาไว้ด้วย สไตล์ BibTeX แบบคลาสสิกมักเขียนขึ้นสำหรับภาษาเดียว เกือบทั้งหมดเป็นภาษาอังกฤษ ดังนั้นเอกสารที่อ้างอิงแหล่งข้อมูลภาษาฝรั่งเศสหรือภาษาเยอรมันจึงตามธรรมเนียมต้องใช้แพ็กเกจเพิ่มเติมเพียงเพื่อจุดประสงค์นั้น

ครึ่งหลังของข้ออ้างนี้เป็นผลมาจากการแยกเชิงสถาปัตยกรรมแบบเดียวกัน โดยการเก็บกฎการจัดรูปแบบไว้ในมาโครของ LaTeX แทนที่จะใช้ภาษาสไตล์ขนาดเล็กที่สร้างขึ้นเฉพาะ BibLaTeX จึงสามารถรองรับประเภทของรายการอ้างอิงได้หลากหลายกว่าโดยค่าเริ่มต้น ประเภทเหล่านี้ครอบคลุมแหล่งข้อมูล เช่น ทรัพยากรออนไลน์ ชุดข้อมูล และงานหลายเล่ม ซึ่งการออกแบบดั้งเดิมของ BibTeX ไม่ได้คำนึงถึงไว้เลย นักวิจัยที่อ้างอิงชุดข้อมูล ต้นฉบับก่อนพิมพ์ หรือรายงานที่มีเฉพาะออนไลน์ มักจะพบว่ามีประเภทของรายการ BibLaTeX ที่สร้างไว้แล้วสำหรับสิ่งนั้น ขณะที่เวิร์กโฟลว์ของ BibTeX หมายถึงการดัดประเภทที่มีอยู่เดิม โดยปกติคือประเภท miscellaneous ที่ใช้เป็นหมวดรวม ให้พอดีกับงานนั้น

ทำให้บทความของคุณเป็นธรรมชาติมากขึ้น

ปรับข้อความที่ช่วยโดย AI ของคุณให้ฟังดูเป็นธรรมชาติ, โดยไม่แตะต้องคำสำคัญหรือการอ้างอิง

เริ่มต้นฟรี

จะบอกได้อย่างไรว่าเอกสารของคุณกำลังใช้แบบใดอยู่แล้ว

ส่วน preamble บอกได้ภายในไม่กี่วินาที เอกสารที่โหลด biblatex พร้อมบรรทัด addbibresource ที่ชี้ไปยังไฟล์ .bib กำลังใช้ BibLaTeX อยู่ เอกสารที่เรียก bibliographystyle ตามด้วย bibliography ใกล้ท้ายไฟล์ โดยไม่มีการกล่าวถึง biblatex ในส่วน preamble เลย กำลังใช้ classic BibTeX อยู่

  • ค้นหาใน preamble ด้วยคำว่า biblatex หากปรากฏในบรรทัดแพ็กเกจ เอกสารนั้นใช้ BibLaTeX
  • มองหา addbibresource ฟังก์ชันนี้มีเฉพาะใน BibLaTeX, classic BibTeX ใช้ bibliography แทน
  • ตรวจสอบว่าโปรแกรมใดที่กระบวนการ build เรียกใช้ เอกสาร BibLaTeX ต้องให้ Biber ทำงานในลำดับการคอมไพล์ ไม่ใช่ BibTeX
  • ตรวจสอบคำสั่งการอ้างอิงในเนื้อความ parencite และ textcite ใช้ได้เฉพาะใน BibLaTeX, ส่วน cite เพียงอย่างเดียวใช้ได้ทั้งสองแบบ ซึ่งเป็นเหตุผลว่าทำไมการตรวจ preamble จึงมาก่อน

การเปลี่ยนจาก BibTeX ไปเป็น BibLaTeX มีต้นทุนจริงเท่าใด

ไฟล์ .bib เองแทบไม่เปลี่ยนแปลงเมื่อสลับระบบ เพราะทั้งสองระบบอ่านรูปแบบรายการข้อมูลพื้นฐานเดียวกัน ฟิลด์ส่วนใหญ่ถ่ายโอนโดยตรง และ BibLaTeX ยอมรับชื่อฟิลด์ดั้งเดิมของ BibTeX เป็นชื่อแทนได้ แม้ว่า BibLaTeX จะมีตัวเลือกที่แม่นยำกว่า เช่น ใช้ฟิลด์วันที่เพียงฟิลด์เดียวแทนฟิลด์ year และ month ที่แยกกัน

เมื่อยืนยันระบบการอ้างอิงของเอกสารแล้ว การสร้างรายการใหม่ให้มีรูปแบบถูกต้องจะทำได้ง่ายกว่าด้วย bibtex generator เฉพาะทาง มากกว่าการพิมพ์ฟิลด์ดิบจากความจำ โดยเฉพาะสำหรับประเภทแหล่งข้อมูลที่ปรากฏเพียงครั้งเดียวทั้งเอกสาร

ต้นทุนที่แท้จริงอยู่ที่ preamble และสายการสร้างเอกสาร ไม่ใช่ที่ข้อมูล bibliographystyle และ bibliography ต้องเปลี่ยนเป็น biblatex และ addbibresource คำสั่งอ้างอิงใด ๆ ที่ยืมมาจาก natbib ต้องตรวจสอบเทียบกับคำสั่งที่เทียบเท่าของ BibLaTeX เอง และต้องบอก compiler หรือ editor ให้เรียกใช้ Biber แทน BibTeX ระหว่างการสร้างเอกสาร ขั้นตอนสุดท้ายนี้เองที่มักทำให้ผู้ใช้พลาด, editor ที่ยังตั้งค่าให้ใช้ลำดับการสร้างแบบเดิมจะสร้างเอกสารที่ไม่มีบรรณานุกรมเลย และไม่มีข้อความผิดพลาดชี้ไปยังสาเหตุที่แท้จริง

ทั้งหมดนี้ไม่ยากเมื่อระบุได้แล้ว ซึ่งนั่นเองคือปัญหา แต่ละส่วนเป็นการเปลี่ยนแปลงเล็ก ๆ ที่มีเอกสารอธิบายไว้อย่างดี ทว่าเทมเพลตที่สืบทอดมาโดยไม่มีคำอธิบายมักล้มเหลวอย่างเงียบ ๆ ตั้งแต่จุดแรก, ขั้นตอนการสร้างเอกสาร ก่อนที่ผู้เขียนจะได้เห็นด้วยซ้ำว่าตัวการอ้างอิงเองจะใช้งานได้หรือไม่

ควรสลับระบบ หรือปล่อยเทมเพลตที่ใช้งานได้อยู่แล้วไว้ตามเดิม?

หากคุณกำลังสร้างเอกสารที่ใช้งานได้กับ BibTeX แบบดั้งเดิมอยู่แล้ว, นั่นคือไม่จำเป็นต้องใช้คุณลักษณะใหม่ใด ๆ, อ้างอิงเฉพาะแหล่งข้อมูลภาษาอังกฤษ และไม่เคยต้องใช้ประเภทแหล่งข้อมูลอื่นนอกจากบทความ หนังสือ และบทความประชุม ก็แทบไม่มีเหตุผลที่จะสลับระบบกลางโครงการ เทมเพลตวิทยานิพนธ์ที่ใช้งานได้และเหลือเวลาอีกสองเดือนก่อนกำหนดส่งไม่ใช่สถานที่ที่จะรับภาระต้นทุนการย้ายระบบข้างต้น

เอกสารที่อ้างอิงแหล่งข้อมูลมากกว่าหนึ่งภาษา ดึงข้อมูลจากชุดข้อมูล เว็บไซต์ หรือประเภทแหล่งข้อมูลที่ไม่เป็นมาตรฐานอื่น ๆ หรือได้รับสืบทอดมาโดยเฉพาะเพราะผู้เขียนต้นฉบับได้สร้างมันขึ้นโดยอิงกับ BibLaTeX อยู่แล้ว เป็นกรณีที่แตกต่างออกไป ในกรณีนั้น คำถามไม่ใช่ว่าควรเปลี่ยนหรือไม่ แต่เป็นว่าเอกสารนั้นเคยใช้ BibTeX แบบดั้งเดิมจริงหรือไม่ ซึ่งนั่นเองคือสิ่งที่การตรวจสอบ preamble ข้างต้นมีไว้เพื่อทำ

การจัดรูปแบบรายการอ้างอิงใหม่สำหรับวารสารอื่น มีหน้าของตนเอง และ ความแตกต่างระหว่าง annotated bibliography กับ literature review ก็มีหน้าของตนเองเช่นกัน

อย่างไรก็ตาม ไม่ใช่ทุกปัญหาการอ้างอิงจะเป็นปัญหา LaTeX เสมอไป citation generator ที่ดึงข้อมูลอ้างอิงตรงจากบันทึกของผู้จัดพิมพ์ แก้ปัญหาเชิงพื้นฐานเดียวกันสำหรับผู้ที่ทำงานใน Word แทนที่จะเป็น LaTeX โดยไม่ต้องมีไฟล์ .bst หรือการรัน Biber อยู่ในสายตา

XLinkedInFacebook

คำถามที่พบบ่อย

BibTeX เทียบกับ BibLaTeX ขึ้นอยู่กับว่าการจัดรูปแบบเกิดขึ้นที่ใด BibTeX อ่านและจัดรูปแบบข้อมูลการอ้างอิงด้วยตัวเอง โดยอาศัยไฟล์สไตล์ .bst แยกต่างหาก BibLaTeX แยกงานนั้นออกเป็นสองส่วน, โปรแกรม backend ที่เรียกว่า Biber จัดการข้อมูล ส่วนการจัดรูปแบบควบคุมด้วยมาโคร LaTeX ปกติในเอกสาร การแยกเช่นนี้ทำให้ BibLaTeX จัดการ Unicode หลายภาษา และประเภทแหล่งข้อมูลที่ไม่ปกติได้ง่ายกว่า

Sara

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.