- Typst เป็นโปรแกรมจัดพิมพ์เอกสารที่พัฒนาด้วย Rust และถูกพูดถึงในฐานะ ทางเลือกแทน LaTeX ที่เหมาะอย่างยิ่งสำหรับการเขียนเอกสารเชิงเทคนิค เช่น สมการ ตาราง และการแทรกรูปภาพ
- แก้ปัญหาของ LaTeX เรื่อง ไวยากรณ์ซับซ้อน การคอมไพล์ช้า และข้อความแสดงข้อผิดพลาดที่เข้าใจยาก โดยมอบไวยากรณ์คล้าย Markdown และภาษาที่อิงฟังก์ชันซึ่งผสานรวมอยู่ภายใน
- ด้วย incremental compilation ที่รวดเร็ว การแสดงข้อผิดพลาดที่ชัดเจน และไวยากรณ์ที่กระชับ ทำให้ แม้เอกสารขนาดใหญ่ก็พรีวิวแบบเรียลไทม์ได้ และยังมี ความสามารถด้านการเขียนโปรแกรม ที่ผสานอยู่ในระบบอย่างเป็นธรรมชาติ
- ข้อเสียคือ ยังขาด ecosystem ของแพ็กเกจเฉพาะทาง, การรองรับเทมเพลตวารสารยังไม่ดีพอ, การทำเอกสารประกอบยังมีความยาก และยังขาดฟังก์ชันบางส่วน แต่แพ็กเกจกำลังเพิ่มขึ้นอย่างรวดเร็ว และยังแปลงผ่าน Pandoc ได้
- Typst ยังอยู่ในระยะเริ่มต้น แต่ด้วย การเริ่มถูกนำไปใช้โดยวารสารวิชาการบางแห่ง, แพ็กเกจกว่า 800 รายการ และคอมมูนิตี้ที่คึกคัก ทำให้มันกำลังก้าวขึ้นมาเป็นตัวเต็งในการแทนที่ LaTeX
แนะนำ Typst และความสำคัญ
- Typst เป็น โปรแกรมจัดพิมพ์เอกสาร ที่มีโครงสร้างเหมาะกับเอกสารเชิงเทคนิค เช่น สมการ ตาราง และรูปภาพ
- มอบ ผลลัพธ์คุณภาพสูงระดับเดียวกับ LaTeX แต่ใช้มาร์กอัปที่ง่ายกว่าและคอมไพล์ได้เร็วกว่า
- Typst เป็น ซอฟต์แวร์โอเพนซอร์สที่พัฒนาด้วย Rust และใช้ไลเซนส์ Apache-2.0
- จุดแข็งสำคัญคือความเร็วในการจัดการเอกสารขนาดใหญ่ ไวยากรณ์ที่ง่ายขึ้น และการปรับแต่งที่ทำได้สะดวก
ข้อจำกัดของ LaTeX และความจำเป็นของทางเลือกใหม่
- LaTeX เป็นระบบ ที่สร้างบน TeX และกลายเป็นเครื่องมือมาตรฐานสำหรับบทความวิชาการในสายคณิตศาสตร์และวิทยาการคอมพิวเตอร์
- อย่างไรก็ตาม มันมีขนาดติดตั้งใหญ่ และยังถูกวิจารณ์ต่อเนื่องในเรื่อง ความเร็วคอมไพล์ที่ลดลง, ข้อความผิดพลาดที่เข้าใจยาก, และ การปรับแต่งที่ยากเพราะอิงภาษามาโคร
- แม้จะมีการพูดถึงทางเลือกมาหลายสิบปี แต่ ด้วย ecosystem ของแพ็กเกจที่มหาศาลและการพึ่งพาจากผู้ใช้เดิม จึงยังไม่มีทางเลือกที่ใช้ได้จริง
การมาของ Typst และที่มาของการพัฒนา
- เริ่มต้นในปี 2019 โดยนักพัฒนาชาวเยอรมัน Laurenz Mädje และ Martin Haug ในฐานะโปรเจกต์ส่วนตัว ก่อนจะพัฒนาต่อผ่านวิทยานิพนธ์ปริญญาโทและรุ่นเบตา
- หลังเปิดตัว v0.1.0 ในปี 2023 ปัจจุบันเติบโตมาถึง v0.13.1 แล้ว และมี ผู้มีส่วนร่วมมากกว่า 365 คน บน GitHub
- เมื่อวารสารวิชาการบางแห่งเริ่ม รับต้นฉบับ Typst เป็นรูปแบบการส่งบทความ ความเป็นไปได้ในการใช้งานจริงจึงขยายตัวมากขึ้น
ฟังก์ชันและจุดเด่นของ Typst
- Typst มีทั้งซอร์สโค้ด Rust และไบนารีที่คอมไพล์แล้ว รองรับ Linux, macOS และ Windows
- ทำงานผ่านไฟล์ปฏิบัติการเดียว (
typst) โดยไม่ต้องแยกหลายเอนจินแบบ LaTeX
- ใช้คำสั่ง
typst fonts เพื่อตรวจสอบและเพิ่มฟอนต์ที่ใช้งานได้
- ใช้
typst compile เพื่อส่งออกเป็น PDF/SVG/PNG และโหมด typst watch รองรับ พรีวิวแบบเรียลไทม์ โดยอัปเดต PDF อัตโนมัติเมื่อซอร์สเปลี่ยน
- ด้วย incremental compilation ที่รวดเร็ว ทำให้แม้เอกสารขนาดใหญ่ก็พรีวิวแบบเรียลไทม์ได้อย่างว่องไว
- ไวยากรณ์ผสานสไตล์คล้าย Markdown กับไวยากรณ์สำหรับคณิตศาสตร์โดยเฉพาะ จึง กระชับและเข้าใจง่ายกว่า LaTeX
- ประสบการณ์ใช้งานดีขึ้นด้วย ข้อความผิดพลาดที่ชัดเจน, incremental compilation, และการรองรับ ภาษาฟังก์ชันคล้าย Rust
- ในด้าน การแสดงสมการคณิตศาสตร์ ให้คุณภาพใกล้เคียง LaTeX มาก และสามารถพิมพ์สัญลักษณ์ Unicode ได้โดยตรง
สิ่งที่ Typst ปรับปรุงจาก LaTeX
- มีไวยากรณ์ซอร์สที่สั้นและอ่านง่ายกว่า LaTeX
- Typst ยังคงคุณภาพงานพิมพ์ไว้ด้วยการใช้ อัลกอริทึมตัดบรรทัดแบบเดียวกัน และวิธีจัดสมการที่คล้ายกับ LaTeX
- แทนที่จะใช้มาโครที่ซับซ้อน ก็ใช้ การปรับแต่งแบบเรียกฟังก์ชัน เพื่อให้ได้ทั้งความเสถียรและความเรียบง่าย
- Typst มี ภาษาโปรแกรมมิ่งในตัวสไตล์ Rust
- ฟังก์ชันส่วนใหญ่เป็น pure function จึงให้ผลลัพธ์คาดเดาได้และดีบักง่าย
- ภาษาโปรแกรมมิ่งและการจัดพิมพ์เอกสารถูกผสานรวมเข้าด้วยกันอย่างสมบูรณ์ ทำให้เขียนโค้ดได้กระชับ
- การปรับแต่งเอกสาร เช่น เปลี่ยนฟอนต์หรือสไตล์ของ section ก็ทำผ่านการเรียกฟังก์ชัน
- รองรับโครงสร้างการเขียนโปรแกรมที่สอดคล้องและเรียบง่ายกว่า Lua extension ของ LaTeX
- ปัญหาใน LaTeX อย่าง การจัดการองค์ประกอบลอยตัวและการแบ่งตาราง สามารถแก้ได้ด้วยโมเดลเลย์เอาต์ที่ปรับปรุงแล้ว
ตัวอย่างมาร์กอัปและโครงสร้าง
- หัวข้อใช้สัญลักษณ์
= รายการลำดับเลขอัตโนมัติใช้ + และรายการ bullet ใช้ - เขียนได้อย่างง่าย
- การทำข้อความเป็น Bold, Italic และรูปแบบอื่น ๆ ก็ป้อนอย่างตรงไปตรงมา
- ฟังก์ชันบางอย่างทำผ่านการเรียกฟังก์ชัน เช่น
#underline[Good] gin
- มีโหมดการป้อนข้อมูล 3 แบบ ได้แก่ ข้อความ โค้ด และคณิตศาสตร์
- โหมดสมการใช้
$ ครอบไว้ และสามารถป้อนสัญลักษณ์ Unicode กับอักษรกรีกได้ทันที
ข้อเสียและข้อจำกัดของ Typst
- เมื่อเทียบกับ LaTeX แล้ว ยังขาดความละเอียดของ page layout (เช่น การป้องกัน orphan/widow)
- จำนวนแพ็กเกจเฉพาะทางยังน้อย แต่ตอนนี้ขยายอย่างรวดเร็วและมีมากกว่า 800 รายการแล้ว
- การรองรับเทมเพลตวารสารยังไม่เพียงพอ จึงต้องอาศัยการแปลงผ่าน Pandoc
- เอกสารทางการยังไม่สมบูรณ์ และตามความเร็วของการอัปเดตไม่ค่อยทัน
- ยังไม่มีฟีเจอร์ขั้นสูงบางอย่าง เช่น การแทรก PDF ไม่ได้ และไม่รองรับ parshape
- เพราะยังเป็นโปรเจกต์ระยะแรก จึงมีความเสี่ยงของ breaking changes
บทสรุปและแนวโน้ม
- ผู้เขียนใช้งาน Typst ในการเขียนบทความฟิสิกส์จริง และใช้ Pandoc สำหรับการแปลงไปยัง LaTeX
- เขายังผสาน Neovim + Tree-sitter เพื่อสร้างสภาพแวดล้อมการเขียนที่มีประสิทธิภาพ และพอใจกับความเร็วและประสบการณ์การแสดงข้อผิดพลาดของ Typst
- ทั้ง การป้อนสมการที่รวดเร็วและเข้าใจง่าย การรองรับจาก editor/visual tools และ feedback จากการคอมไพล์ที่รวดเร็ว ล้วนช่วยเพิ่มประสิทธิภาพการทำงานจริง
- Typst ถูกประเมินว่าเป็นตัวเลือกที่แข็งแกร่งซึ่งมี ศักยภาพในการแทนที่ LaTeX ใช้งานได้จริงตั้งแต่ตอนนี้ และน่าจะขยายตัวต่อไปอีกมากในอนาคต
คอมเมนต์เด่นจาก LWN
- ความเข้ากันได้และเสถียรภาพระยะยาว
- หนึ่งในเหตุผลที่ TeX/LaTeX ประสบความสำเร็จคือ การรักษาความเข้ากันได้กับเวอร์ชันในอนาคต (spacefrogg)
- แต่จากประสบการณ์ใช้งานจริง ก็มีเสียงบ่นมากว่าเอกสารเก่ามักพังในสภาพแวดล้อมใหม่ หรือจำเป็นต้องเขียนใหม่เพราะแพ็กเกจเปลี่ยนไป (wtarreau, warrax)
- ผู้ใช้บางรายเล่าว่าบทความหรือวิทยานิพนธ์ที่มีอายุหลายสิบปียัง build ได้โดยไม่มีปัญหา พร้อมชี้ว่าแก่นสำคัญอยู่ที่ ความเสถียรของแพ็กเกจที่ใช้ (dskoll, anton)
- ปัญหาเทมเพลตและแพ็กเกจของสำนักพิมพ์
- มีข้อสังเกตว่าเวลาเผยแพร่ในวารสาร มักถูกบังคับให้ใช้ เทมเพลต LaTeX และแพ็กเกจเก่า ที่สำนักพิมพ์กำหนด ทำให้ข้อได้เปรียบด้านความเข้ากันได้ในทางปฏิบัติลดลง (NYKevin, aragilar)
- สุดท้ายแล้ว สิ่งสำคัญไม่ใช่การรักษาฟอร์แมตเอกสารเดิมไว้ยาวนาน แต่คือ สามารถย้ายเนื้อหาข้อความหลักไปยังเทมเพลตใหม่ได้ง่ายหรือไม่ (anton)
- การออกแบบภาษาและข้อดีของ Typst
- ต่างจาก LaTeX ตรงที่ Typst แยกไวยากรณ์ของโค้ดกับไวยากรณ์ของการจัดพิมพ์อย่างชัดเจน จึงลดผลข้างเคียงของมาโคร และมีฟีเจอร์ภาษาสมัยใหม่ (spacefrogg)
- เขียนเอกสารง่าย ๆ ได้รวดเร็ว และ ความอ่านง่ายของข้อความผิดพลาด กับ incremental compilation เป็นข้อดีสำคัญ (spacefrogg, notriddle)
- อย่างไรก็ดี บางคนก็กังวลว่าในเมื่อ Typst ก็มีความเป็น Turing-complete เช่นกัน ปัญหาความเข้ากันได้ในระยะยาวอาจย้อนกลับมาอีก (epa, smoogen, taladar)
- ecosystem และคอมมูนิตี้
- การพัฒนาแพ็กเกจของ Typst คึกคักมาก และมีกรณีที่ฟีเจอร์ถูกเพิ่มเข้ามาอย่างรวดเร็วตามคำขอ (leephillips, adnl)
- แม้จะมีเสียงวิจารณ์ว่าเอกสารทางการยังไม่ดีพอ แต่ก็มีผู้ใช้แชร์ประสบการณ์เชิงบวกว่า ฟอรัมคอมมูนิตี้เป็นมิตรและเคลื่อนไหวอย่างคึกคัก (al4711)
- ยังมีการพูดถึงโปรเจกต์ทางเลือกอื่นอย่าง SILE หรือ Lout ในอดีต แต่ก็สะท้อนประวัติว่าพวกมันไม่สามารถแพร่หลายได้เพราะขาด network effect (rogerwhittaker, ceplm, anton)
- การพัฒนาอย่างต่อเนื่องของ LaTeX และการเปรียบเทียบ
- ช่วงหลัง LaTeX เองก็เพิ่มฟีเจอร์สมัยใหม่อย่าง Tagged PDF (เพิ่มการเข้าถึง) และยังมีนักวิจัยกับนักพัฒนาที่ปรับปรุงมันอย่างต่อเนื่อง (jschrod)
- เครื่องมือหลากหลายอย่าง Overleaf, LyX เป็นต้น ก็ช่วยให้การใช้งาน LaTeX ดีขึ้น และมีประโยชน์ทั้งต่อการทำงานร่วมกันและการเรียนรู้ของผู้เริ่มต้น (smitty_one_each, paulj, callegar)
- แม้ Typst จะมีจุดเด่นด้านความเรียบง่ายและความทันสมัยเหนือ LaTeX แต่ก็ยังมีมุมมองแบบระมัดระวังว่า ecosystem และฟีเจอร์เฉพาะทางที่สะสมมาหลายสิบปี ยังตามทันได้ยาก (norbusan, callegar)
- ประเด็นอื่น ๆ
- ฟีเจอร์รวม PDF ของ Typst เพิ่งถูกเพิ่มเข้ามาไม่นานนี้ และฟีเจอร์คล้าย parshape ก็เริ่มมีออกมาในรูปแบบแพ็กเกจแล้ว (Delio, yashi)
- บางคนวิจารณ์ว่าในอีกหลายทศวรรษ Typst อาจลงเอยด้วยการ วนกลับไปเจอปัญหาความเข้ากันได้และความซับซ้อนแบบเดียวกับ LaTeX (norbusan)
- บางความเห็นยังชี้ถึงปัญหารายละเอียด เช่น การชดเชยตัวเอียงที่ยังไม่ดีพอ ของ Typst และมองว่ายังด้อยกว่าเมื่อเทียบกับความละเอียดอ่อนแบบดั้งเดิมของ LaTeX (callegar)
3 ความคิดเห็น
คงต้องรออีกหน่อยจนกว่าระบบนิเวศจะก่อตัวขึ้น..
ผมมองว่า Typora เหนือกว่า LaTeX ในหลายด้าน
แต่ก็ยังน่าเสียดายที่ยังมีบั๊กจุกจิกหลงเหลืออยู่ และใช้เวลานานเกินไปกว่าจะมีเวอร์ชันใหม่ออกมา
ดูเหมือนว่าหลังจากหันมาดูแลคอมมูนิตี้เอง และพยายามทำโมเดลเก็บเงินสำหรับเอดิเตอร์+คลาวด์แต่ไม่ค่อยสำเร็จ ความเร็วในการพัฒนาก็ดูไม่เหมือนเดิมแล้ว
ความคิดเห็นจาก Hacker News
ยินดีที่ได้เห็น Typst ได้รับความสนใจมากขึ้นเรื่อย ๆ ที่องค์กรของฉัน Zerodha เราได้ย้ายงานจริงมาใช้ Typst ตั้งแต่ 2 ปีก่อน เป็นงานที่สร้าง PDF มากกว่า 1.5 ล้านไฟล์ต่อวันแล้วส่งทางอีเมล เดิมทีเราใช้ pipeline ที่อิงกับ LaTeX (ตอนแรกเป็น pdflatex แล้วค่อยเปลี่ยนเป็น lualatex) แต่ปัญหามาตลอดคือ memory error ที่หาสาเหตุไม่ได้ในเอกสารขนาดใหญ่ และ Docker image ที่ใหญ่เกินไปทำให้เวลา boot ของ ephemeral worker ช้ามาก พอเปลี่ยนมาใช้ Typst เราสามารถใช้ image ที่เบามากด้วย static binary เพียงไฟล์เดียว ทำให้การเริ่มต้นเร็วขึ้นอย่างชัดเจน ประสิทธิภาพก็ดีขึ้นมหาศาล เวลาคอมไพล์รวมเร็วกว่า LaTeX 3–4 เท่า และสำหรับเอกสารขนาดใหญ่เกิน 2000 หน้า Typst ใช้เวลาเพียง 1 นาที ในขณะที่ lualatex ใช้ถึง 18 นาที ประสบการณ์ของนักพัฒนาก็ดีขึ้นมาก และข้อความ error ก็เป็นมิตรกว่ามากด้วย ฉันเขียนโพสต์อธิบายสถาปัตยกรรมทั้งหมดและประสบการณ์ migration ไป Typst ไว้ละเอียดแล้ว ถ้าสนใจดูได้ที่นี่
ฉันกำลังใช้ LaTeX pipeline สร้างเอกสารหลายแบบจาก snippet ในฐานข้อมูล เช่น ข้อความ ใบแจ้งหนี้ ฟอร์ม ฯลฯ การตั้งค่าค่อนข้างซับซ้อน แต่ผลลัพธ์น่าพอใจมาก ฉันก็อยากใช้ markup language ที่ง่ายกว่านี้ แต่ก็กลัวว่าจะเสียเวลาไปเปล่าแล้วสุดท้ายชนข้อจำกัด สิ่งที่ฉันต้องมีจริง ๆ คือ: ต้องกำหนด column/page break ที่มีความหมายได้ในหลายคอลัมน์ (เช่น ระบุจำนวนบรรทัดขั้นต่ำในคอลัมน์/หน้าใหม่), มี auto hyphenation ที่เชื่อถือได้สำหรับหลายภาษา (อังกฤษ/เยอรมัน และอนาคตคือฝรั่งเศส/อิตาลี/สเปน), การจัดวางรูปภาพในคอลัมน์แบบอัตโนมัติ, การตัดหน้าอัตโนมัติสำหรับตารางและฟอร์มที่ซับซ้อน, ภาพพื้นหลัง, และหลายพื้นที่ที่ทำงานคล้าย mini page อยากรู้ว่า Typst ทำทั้งหมดนี้ได้ไหม
ถ้าแชร์ตัวอย่างเอกสารที่พวกคุณสร้างได้ก็น่าจะน่าสนใจมาก
บริษัทที่ฉันเคยทำงานด้วยมักส่ง PDF ประเภทเอกสารสถิติ รายงานขนาดเล็ก และเอกสารธุรกิจอื่น ๆ เป็นประจำ ส่วนใหญ่สร้าง PDF ด้วย MJML, HTML ที่ทำเอง, Puppeteer ฯลฯ อยากรู้ว่า Typst จะเหมาะกับงานแบบนี้ไหม
อยากรู้ว่าใน use case ของพวกคุณ ทำไมถึงเริ่มจาก LaTeX ตั้งแต่แรก เรื่องนี้น่าแปลกใจกว่าการที่มันมาแทน LaTeX เสียอีก
ถ้าเทียบ Typst กับ LaTeX แล้วต่างกันราวฟ้ากับเหว ฉันกำลังเขียนวิทยานิพนธ์ปริญญาเอกด้วย Typst ซึ่งจริง ๆ ก็เกือบจะเป็นการผจญภัยอยู่เหมือนกัน เพราะมันยังไม่มีฐานผู้ใช้ขนาดใหญ่และยังไม่เสถียรสมบูรณ์ แต่พอได้ลองใช้แล้วก็ย้อนกลับไม่ได้แล้ว แม้ว่ายังเหลืองานปรับให้ตรงกับเทมเพลต LaTeX ที่มหาวิทยาลัยกำหนดแบบระดับพิกเซล แต่ฉันมั่นใจว่า Typst เหมาะกว่าอย่างชัดเจน ต่อให้ใช้ LaTeX มานานกว่า 10 ปี ก็ยังพูดไม่ได้ว่าตัวเองรู้ TeX อย่างแท้จริง แต่ Typst นั้นใช้เวลาแค่ไม่กี่วันก็ใช้งานได้อย่างมีประสิทธิภาพมากแล้ว ถ้าไม่มีแพ็กเกจที่ต้องการ ฉันก็ทำเองได้อย่างรวดเร็ว และหลายอย่างก็มีแพ็กเกจดี ๆ รองรับอยู่แล้ว งานที่ใน LaTeX แทบเป็นไปไม่ได้ กลับทำได้ง่ายใน Typst หนึ่งในตัวการที่ทำให้ productivity ตกมากใน TeX คือเรื่อง package conflict, compatibility, version issue ซึ่งใน Typst ไม่มีปัญหาแบบนั้นเลย เพราะมันมีทั้งภาษาโปรแกรมจริงและระบบโมดูล ความเร็วในการคอมไพล์ก็เร็ว และประสบการณ์ใช้งานโดยรวมยอดเยี่ยมมาก แต่ก็ยังไม่สมบูรณ์ 100% มีการออกแบบบางจุดที่น่าเสียดาย และยังมีบางส่วนที่อยู่ระหว่างพัฒนา เช่น ความสามารถในการแทรก PDF เหมือนเป็นรูปภาพ คุณภาพการจัดพิมพ์เองก็ให้ความรู้สึกว่าเข้าใกล้ TeX ราว 95% (ในขณะที่ TeX สมบูรณ์แบบเสมอ) บางครั้งก็ยังต้องปรับ kerning เองบ้าง แต่ก็คาดว่าจะดีขึ้นอีกในอนาคต
การต้องทำให้ตรงกับเทมเพลต LaTeX ของมหาวิทยาลัยแบบระดับพิกเซลอาจถือว่าโชคดีด้วยซ้ำ ส่วนใหญ่คนอื่นต้องไปทำซ้ำเทมเพลต MS Word ของมหาวิทยาลัยให้ตรงใน LaTeX อีกที
คิดว่า Typst ก็คงพัฒนาต่อไปเรื่อย ๆ แต่บางครั้งก็มีการเปลี่ยนแปลงใหญ่ที่ทำให้ compatibility พังอยู่บ้าง แม้จะแก้ไม่ยาก แต่การ debug ก็ไม่ได้ตรงไปตรงมาเท่าไร ดูเหมือนหลายคนอยากให้ Typst ประสบความสำเร็จ TeX และ LaTeX ทั้งใหญ่และซับซ้อนมาก เลยรู้สึกว่าควรมีอะไรคล้าย “distribution” ของ LaTeX ที่สะอาดกว่านี้ ถ้าทำเป็นหน่วยแบบ atomic ใน container ได้ดีก็คงเยี่ยม เพราะพอได้เทมเพลตมาแล้วจะ build ก็มักมีอะไรขาดอยู่เสมอ ดีเหมือนกันที่ยังเห็นนวัตกรรมในพื้นที่นี้ต่อเนื่อง
น่าสนใจที่คุณใช้ LaTeX มากว่า 10 ปี แต่กลับใช้ Typst ได้คล่องในไม่กี่วัน เหตุผลคืออะไร? หรือเป็นเพราะมีพื้นฐาน CS (วิทยาการคอมพิวเตอร์)?
ฉันสงสัยว่าคำว่า “ทำซ้ำระดับพิกเซล” นี่หมายถึงตามตัวอักษรจริง ๆ หรือพูดเกินจริง เพราะใน LaTeX มีหลายแพ็กเกจที่แทบจะทำซ้ำระดับพิกเซลไม่ได้เลย โดยเฉพาะพวกอย่าง microtype ที่มักใช้ในบทความวิชาการ
ลองดูบล็อกโพสต์ที่พูดถึงประสบการณ์เขียนวิทยานิพนธ์ด้วย Typst เพิ่มเติมก็น่าจะดี
ขอสรุปสิ่งที่รู้สึกจากการใช้งาน Typst เทียบกับ LaTeX
%ใน vim เพื่อจับคู่ได้ง่าย ทำให้เลื่อนดูรายการยาว ๆ ได้สะดวก\document{}แต่ใน Typst สามารถวางไว้ใกล้จุดที่ใช้ได้เลยjson("some_file.json")มาใช้สร้างตารางผลลัพธ์ได้ตรง ๆ ตอนเขียนเปเปอร์ ฉันเอาข้อมูล JSON ที่ได้จาก benchmark script มาโหลดตรงใน Typst แล้วคอมไพล์เป็น PDF ใช้งานได้เลยไม่จำเป็นต้องประกาศ macro ไว้ข้างบนเท่านั้น จะประกาศตรงไหนก็ได้ LaTeX เองก็โหลดแพ็กเกจได้เฉพาะใน preamble แต่ macro ประกาศตรงไหนก็ได้เหมือนกัน ส่วน semantic line break ก็ไม่มีปัญหาอะไรใน LaTeX เห็นด้วยกับเรื่องความเร็วในการคอมไพล์และข้อความวินิจฉัย นี่แหละคือข้อเสียใหญ่ที่สุดของ LaTeX
จริง ๆ แล้วข้อ 5 ก็ทำได้อยู่แล้ว คือประกาศ macro ตรงไหนก็ได้ มันเป็นเพียงธรรมเนียมที่จะวางไว้ใน preamble เท่านั้น
อยากรู้ว่าเคยลองใช้ Typst เขียนงานลักษณะบทความจริง ๆ หรือยัง ฉันเองสำเร็จแค่แบบจำกัดมาก และเพราะยังมีคนใช้น้อย จึงต้องแก้ปัญหาเองเสียส่วนใหญ่
Typst ไม่ได้เป็นแค่ macro แต่เป็นภาษาโปรแกรมจริง มีฟังก์ชัน ชนิดข้อมูล โมดูล (รวมถึง namespace) และความสามารถอีกหลายอย่าง ด้วยเหตุนี้ความเจ็บปวดจากการทำงานใน TeX จึงลดลงไป 80% (โดยเฉพาะเมื่อเกินกว่างานรายงานทดลองของนักศึกษาธรรมดา) มันยังไม่สมบูรณ์แบบ แต่เป็นข้อได้เปรียบที่ต่างกันมากจริง ๆ
ตัว LaTeX เอง หากมองในตัวมันจริง ๆ แล้วเรียบง่ายและตรงไปตรงมามากกว่า LaTeX เสียอีก จนบางทีอาจตกใจเพราะมันให้อำนาจควบคุมมากเกินไป ตัวอย่างเช่น นี่คือเอกสาร plain TeX ที่ใช้ได้จริง: $$\aleph_0$$ \bye. ไม่จำเป็นต้องมี begin/end ก็ได้ ถ้าใช้ชุด macro อย่าง extended plain ก็จะขยายความสามารถได้ ฉันเองก็เคยเขียนวิทยานิพนธ์ทั้งเล่มด้วย extended plain แต่พอต้องส่งห้องสมุดกลับถูกขอให้เขียนใหม่เป็น LaTeX style file สุดท้ายเลยต้องแก้เป็น LaTeX
ถ้า Typst จะเป็นคู่แข่งของ LaTeX อย่างแท้จริง มันต้องมีการยอมรับเทมเพลต Typst อย่างเป็นทางการในงานวิจัยและงานประชุม การแพร่หลายในมหาวิทยาลัยท้ายที่สุดก็ขึ้นอยู่กับสำนักพิมพ์จะรับหรือไม่ ตอนนี้แทบไม่มีการสนับสนุน Typst ในชุมชนนักวิจัย ทุกคนใช้เทมเพลต LaTeX สำหรับเปเปอร์/สไลด์/รายงานอยู่แล้ว และต้องเริ่มจากอาจารย์หรือแล็บหนึ่งที่อนุมัติเทมเพลต Typst ก่อน จากนั้นค่อยขยายไปทั้งมหาวิทยาลัย แล้วจึงลามไปถึงสมาคมวิชาการ/วารสาร กระบวนการนี้ยาวนาน น่าเบื่อ และยังดำเนินอยู่ แต่ก็เป็นขั้นตอนที่จำเป็น
อาจเป็นเพราะฉันไม่ค่อยรู้ว่าการจัดพิมพ์ที่เฉพาะทางมากขึ้น เช่น การส่งวารสาร มีปัญหาอะไรบ้าง แต่พูดตรง ๆ ฉันไม่แน่ใจว่าการจัดพิมพ์สำคัญขนาดนั้นไหมสำหรับเปเปอร์วิจัย ฉันคิดว่าแค่มีฟอร์แมตที่เรียบง่ายและเน้นเนื้อหาก็น่าจะพอแล้ว ฝั่งสำนักพิมพ์ของเปเปอร์หรือหนังสือค่อยนำต้นฉบับไปจัดพิมพ์ตามสไตล์ของตัวเองก็ได้ สำหรับนักวิจัยแล้ว น่าจะดีกว่าถ้าสนใจแค่ฟอร์แมตที่เรียบง่ายและเน้นเนื้อหา จริง ๆ ฉันอยากให้มี markdown format สำหรับงานวิจัยสักแบบกลายเป็นมาตรฐาน มากกว่าจะเป็น LaTeX หรือ Typst
สำหรับนักวิจัย LaTeX แก้ปัญหานี้ได้ดีอยู่แล้ว จึงไม่มีแรงจูงใจมากพอที่จะเปลี่ยน
ฉันเคยเขียน lecture notes หลายชุดและวิทยานิพนธ์ปริญญาโทด้านคณิตศาสตร์ด้วย LaTeX ถ้าแค่เขียนข้อความลงในเทมเพลตที่คนอื่นทำไว้ LaTeX ก็ถือว่าดี แต่พอจะทำแพ็กเกจเองหรือพยายามเข้าใจโครงสร้างภายใน มันให้ความรู้สึกเหมือน black magic มาก ต้องระวังมากไม่ให้แต่ละแพ็กเกจชนกัน และยังมีทางอ้อมพิเศษอีกมาก จนทุกอย่างซับซ้อนตลอด ถ้า Typst จะเป็นตัวแทน LaTeX ที่ทำให้จัด layout และ design ได้ง่ายโดยตรงก็คงดีมาก ฉันลอง Typst แบบทดลองมาบ้าง และชอบตัวภาษาเองจริง ๆ เอาเข้าจริงเวลานั่งเขียน เนื้อหาตัว syntax ไม่ใช่ประเด็นใหญ่ขนาดนั้น อ้างอิงไว้หน่อยว่าตอนเขียนวิทยานิพนธ์ปริญญาโทจริง ๆ ฉันเริ่มจากเขียนด้วย reStructuredText แล้วใช้ Pandoc สร้าง LaTeX กับ PDF พอภาพรวมครบแล้วค่อยกลับไปแก้ส่วน LaTeX เพื่อใส่รูปแบบและวาดภาพที่ต้องการใหม่ให้เสร็จ ข้อดีคือเริ่มต้นได้ทันทีโดยไม่ต้องมี preamble ยาว ๆ ฉันยังคิดอยู่ดีว่าปัญหาไม่ใช่ syntax แต่คือการไปกังวลเรื่องการออกแบบตั้งแต่ช่วงต้นมากเกินไปจนเขียนเนื้อหาไม่ออก
ฉันยังใช้ Typst ไม่มากนัก แต่ความรู้สึกคือในกระบวนการทำเทมเพลต มันมีส่วนที่เป็น black magic น้อยกว่า LaTeX มาก และให้ความรู้สึกว่าสามารถสร้างโครงสร้างได้อิสระกว่า LaTeX แล้วด้วย
ถ้าคุณต้องการพลังและการควบคุมที่ตรงไปตรงมามากขึ้นสำหรับ design/layout ของเอกสาร ฉันแนะนำ ConTeXt มากกว่า LaTeX หรือ Typst ฉันเป็นกราฟิกดีไซเนอร์และชอบ ConTeXt มากจนไม่คิดจะแทนที่มันด้วยเครื่องมืออื่น แต่ถ้าแค่เขียนเนื้อหาโดยไม่สนใจเรื่องดีไซน์ LaTeX หรือ Typst ก็ยังยอดเยี่ยมอยู่ดี
ฉันเองก็เคยเขียนวิทยานิพนธ์ด้วย reStructuredText แล้วสร้าง PDF ด้วย Pandoc และ latexmk พร้อมแทรกกราฟ PDF ที่สร้างจาก matplotlib และ Python แบบไม่สูญเสียคุณภาพ เลยสงสัยว่ามีอะไรที่ reStructuredText ทำไม่ได้หรือเปล่า เพราะใช้เทมเพลต LaTeX ได้ด้วย และตัว reStructuredText เองก็ทรงพลังกว่า Markdown สายอื่น ๆ อยู่แล้ว ดังนั้นจริง ๆ จะเขียนด้วย reStructuredText ต่อไปก็ยังได้
เชิงอรรถของคุณนี่แสดงให้เห็นอยู่แล้วว่า LaTeX อาจไม่ได้เป็นตัวเลือกที่ดีนัก ฉันเองก็เพิ่งเขียนวิทยานิพนธ์ด้วย Typst ล่าสุด ก่อนหน้านั้นใช้ LaTeX ใน LaTeX ฉันเขียนเป็น Markdown แล้วค่อยแปลงเป็น LaTeX ทีหลัง แต่ใน Typst ไม่ต้องทำแบบนั้น ถ้า Typst ยังเดินหน้าต่อไปโดยที่คุณภาพบริการไม่ลดลง ฉันก็คงใช้ Typst ต่อไปเลย
ช่วงนี้ฉันกำลังใช้ Typst แทน Pandoc + LaTeX เพื่อเขียนหนังสืออยู่ (ลิงก์ GitHub) syntax ของ Typst ง่ายเหมือน Markdown และเขียนโปรแกรมได้ง่ายกว่า LaTeX มาก (แม้จะยังมีส่วนที่ขรุขระอยู่บ้าง) ใน LaTeX ต้องพึ่งแพ็กเกจตลอด และยังต้องคอยหลบปฏิสัมพันธ์ประหลาดระหว่างแพ็กเกจอีก ทำให้มีงานเพิ่มมาก Typst ทำส่วนที่ต้องการเองได้ง่ายกว่า มันเร็วมาก และไม่ทิ้งไฟล์ขยะไว้ใน filesystem เยอะ ถ้าเป็นเอกสารเทคนิคที่เน้น PDF ฉันแนะนำมาก
ถ้าพูดถึงระบบเรียงพิมพ์ทางเลือก ก็ยังมี SILE ด้วย รองรับทั้ง XML-based และสไตล์แบบ TeX และสคริปต์ด้วย lua ได้ ต่างจาก (La)TeX และ Typst ตรงที่มันมีสเปกระดับใกล้เคียงเอกสารทางการด้วย สมการก็ใช้ MathML ตรง ๆ ได้เช่นกัน แต่ฉันยังไม่ได้ใช้ Typst หรือ SILE จริง ๆ แค่อ่านเอกสารเท่านั้น HTML + MathML ก็ใช้ได้เหมือนกัน และก็มีกรณีใช้ XML source + XSLT เป็นเทมเพลตเพื่อเขียนงานแบบตำรา OpenStax (บนฐาน CNXML) ด้วย ยังมีอีกหลายทางอย่าง troff(plus eqn), Texinfo, org-mode, LaTeX embedding, Markdown + HTML/MathML ฯลฯ
ในฐานะคนที่ใช้ LaTeX มานาน ฉันรู้สึกว่าตัวเองผ่านกรณีพิเศษนับไม่ถ้วนใน LaTeX มาแล้ว และรู้วิธีแก้เกือบหมด จึงรู้สึกหนักใจที่จะย้ายไปใช้ระบบใหม่ ต่อให้ Typst ดีแค่ไหนก็กลัวว่าจะต้องผ่านกระบวนการนั้นซ้ำอีก และเพราะชุมชนของ Typst ยังไม่ใหญ่ ก็ยังกังวลว่าจะมีคนเคยเจอปัญหาแบบฉันและแชร์วิธีแก้ไว้แล้วหรือยัง จากตัวอย่างทางการดูดีมาก แต่จุดแข็งของ LaTeX คือการปรับแต่งรายละเอียดได้ละเอียดมาก (indentation, marker symbol, spacing ฯลฯ) เลยอยากรู้ว่า Typst ควบคุมได้ระดับนั้นไหม
คิดเหมือนกัน มันเป็นภาษา layout ที่ดีมากจริง ๆ และคุณภาพระดับ production ก็ดีกว่ามาก แต่ก็หนีไม่พ้นที่จะต้องเจอกับกรณีพิเศษใหม่ ๆ และข้อจำกัดใหม่ ๆ ฐานผู้ใช้ของ Typst เองก็ยังไม่ใหญ่พอ อีกอย่าง ฉันเคยทดสอบเมื่อปีก่อนว่า AI อย่าง Claude Code เข้าใจ Typst ดีไหม ผลคือยังไม่ดีนัก
ตอนนี้ Typst ยังไม่มีความสามารถในการวางภาพแบบลอยอยู่ในเนื้อหาอย่างเป็นธรรมชาติ (เช่น ให้ข้อความไหลล้อมรอบ) มันสามารถวางภาพไว้บนหรือล่างหน้ากระดาษได้ แต่ยังไม่รองรับ “floating image” กลางเนื้อหาแบบ native
ถ้าอยากดูเรื่องการปรับแต่งรายการ (indentation, spacing, symbol ฯลฯ) ฟีเจอร์นี้ดูได้จากเอกสารทางการ: เอกสาร list model ของ Typst
ถ้าสถาบันอื่น (ห้องสมุด สมาคมวิชาการ ฯลฯ) รับเฉพาะวิทยานิพนธ์หรือเปเปอร์ในรูปแบบ LaTeX เท่านั้น ก็ต้องคิดไว้เหมือนกันว่าจะทำอย่างไร
Typst น่าทึ่งจริง ๆ ทุกวันนี้ถึงกับมีมุกว่านักศึกษาคณิตศาสตร์ไม่เขียนเปเปอร์แล้ว แต่หันไปเขียนแพ็กเกจ Typst แทน น่าสนใจว่าอีก 10 ปีมันจะไปได้ไกลแค่ไหน ข้อดี: คอมไพล์แทบจะทันที แค่เซฟไฟล์
.typก็ได้ PDF ออกมาเลย มักใช้แทน Markdown ด้วยเช่นกัน และสร้าง PDF สวย ๆ ได้ทันทีโดยไม่ต้องเตรียมอะไรพิเศษ ข้อเสีย: บางครั้งข้อความ error สั้นเกินไปจนบีบอัดมาก ทำให้ debug ยาก และแค่มี syntax error เดียวก็ไม่สร้าง PDF เลย ทำให้ใช้เทคนิค debug บางอย่างแบบ LaTeX ได้ยาก เวลาใช้แพ็กเกจภายนอกก็มีปัญหาอยู่บ้าง แต่สำหรับคนที่ใช้ LaTeX มานานก็ไม่ใช่เรื่องน่าตกใจ