ในโลกของการจัดเรียงตัวอักษรทางวิทยาศาสตร์ Typst ได้ปรากฏขึ้นเป็นทางเลือกสมัยใหม่แทน LaTeX โดยสัญญาว่าจะมีไวยากรณ์ที่สะอาดตาและประสบการณ์ผู้ใช้ที่ดีกว่า อย่างไรก็ตาม ปัญหาหนึ่งที่ยังคงมีอยู่ได้จุดประกายการถกเถียงอย่างเข้มข้นในหมู่ผู้ใช้และนักพัฒนาอย่างต่อเนื่อง นั่นคือวิธีที่ตัวแยกวิเคราะห์โหมดคณิตศาสตร์จัดการกับนิพจน์เช่น x) และ e^abs(x) ขณะนี้ชุมชนกำลังเผชิญกับคำถามพื้นฐานเกี่ยวกับการออกแบบไวยากรณ์ ความคาดหวังของผู้ใช้ และความเข้ากันได้ย้อนหลัง
ปัญหาหลัก: เมื่อคณิตศาสตร์มีความกำกวม
ข้อโต้แย้งนี้มุ่งเน้นไปที่วิธีที่ตัวแยกวิเคราะห์คณิตศาสตร์ของ Typst ตีความลำดับของตัวอักษรที่ตามด้วยวงเล็บ เมื่อผู้ใช้เขียน x) โดยทั่วไปพวกเขาคาดหวังว่าจะเห็นเพียงตัวอักษร i ปรากฏเป็นตัวห้อย แต่แทนที่ Typst จะแสดงผล itx เป็นตัวห้อย โดยปฏิบัติกับลำดับทั้งหมดเป็นหน่วยเดียว สิ่งนี้เกิดขึ้นเพราะตัวแยกวิเคราะห์ต้องตัดสินใจว่านิพจน์เช่น abs(x) แสดงถึงการเรียกฟังก์ชัน Typst การประเมินค่าฟังก์ชันทางคณิตศาสตร์ หรือการคูณโดยนัย
ปัญหานี้เห็นได้ชัดเป็นพิเศษกับการแนบ — ตัวห้อยและตัวยก ในนิพจน์เช่น e^abs(x) ฟังก์ชันค่าสัมบูรณ์ควรจะเชื่อมโยงอย่างแน่นหนากว่าตัวยก ทำให้มันเทียบเท่ากับ e^(abs(x)) หรือไม่? หรือว่าตัวยกควรจะเชื่อมโยงอย่างแน่นหนากว่า ทำให้เป็น (e^abs)(x)? มนุษย์เข้าใจสิ่งแรกโดยสัญชาตญาณ แต่ตัวแยกวิเคราะห์กลับต่อสู้กับความกำกวมนี้
รู้สึกไร้สาระที่เรื่องนี้เกิดขึ้นในตัวแยกวิเคราะห์ ราวกับว่าคุณสามารถจัดการทุกกรณีด้วยการคาดเดาว่าผู้ใช้หมายถึงอะไรได้ คุณจำเป็นต้องมีการดำเนินการจัดกลุ่ม เช่น {} อย่างน้อยก็เป็นทางเลือกสำรอง
พฤติกรรมโหมดคณิตศาสตร์ปัจจุบันของ Typst:
- x)แสดงผลเป็น "itx" ตัวห้อยแทนที่จะเป็นแค่ "i"
- e^abs(x)แสดงผลเป็น e^(abs(x)) เนื่องจากลำดับความสำคัญของการเรียกใช้ฟังก์ชัน
- การเรียกใช้ฟังก์ชันมีการผูกมัดที่แน่นแฟ้นกว่าตัวห้อย/ตัวยก
ปฏิกิริยาจากชุมชนและแนวทางแก้ไขที่ถูกเสนอ
ชุมชน Typst ได้อภิปรายปัญหานี้อย่างต่อเนื่อง across multiple platforms โดยนักพัฒนาได้ยอมรับว่าพฤติกรรมปัจจุบันนั้นเข้าใจได้ยากและขัดกับความคาดหวังของผู้ใช้เป็นอย่างมาก หลายแนวทางแก้ไขได้ปรากฏขึ้นจากการอภิปรายเหล่านี้ ซึ่งแต่ละวิธีมีข้อได้เปรียบเสียเปรียบต่างกัน
ตัวเลือก B การย้อนกลับไปใช้พฤติกรรมของ Typst 0.3 จะทำให้ x) ทำงานตามที่คาดหวัง แต่จะทำให้ e^abs(x) ใช้งานไม่ได้ จำเป็นต้องใช้วงเล็บอย่างชัดเจน ผู้ใช้บางส่วนมองว่าสิ่งนี้เป็นที่ยอมรับได้ โดยระบุว่า Typst engine ทำงานเร็วพอที่ส่วนใหญ่แล้วฉันสามารถรันหน้าต่างพรีวิวที่ซิงค์ไว้ได้ ซึ่งทำให้ข้อผิดพลาดเฉพาะนี้จับได้ง่าย
ข้อเสนออื่นๆ รวมถึงการแยกวิเคราะห์ขณะรันไทม์ (ตัวเลือก C) ซึ่งจะใช้ข้อมูลประเภทเพื่อแก้ไขความกำกวม และ MathAttachCall (ตัวเลือก D) ซึ่งเป็นแนวทางแบบผสม อย่างไรก็ตาม มีความกังวลเกิดขึ้นเกี่ยวกับว่าสิ่งเหล่านี้อาจส่งผลต่อเครื่องมือและการเน้นไวยากรณ์อย่างไร ดังที่ผู้แสดงความคิดเห็นหนึ่งคนระบุไว้ การที่ 'ฉลาด' เกินไปย่อมนำไปสู่ความปวดหัวและความสับสนมากกว่าการมีกฎที่เรียบง่ายและสม่ำเสมอ
โซลูชันที่เสนอ:
- ตัวเลือก B: ย้อนกลับไปใช้พฤติกรรมของ Typst 0.3 - การแนบที่เข้าใจง่ายแต่การเรียกใช้ฟังก์ชันในเลขยกกำลังจะใช้งานไม่ได้
- ตัวเลือก C: การแยกวิเคราะห์ขณะรันไทม์ - ใช้ข้อมูลประเภทแต่ทำให้เครื่องมือมีความซับซ้อน
- ตัวเลือก D: MathAttachCall - แนวทางแบบผสมผสาน รักษาความคลุมเครือบางส่วนไว้
- ตัวเลือก E: ไวยากรณ์ใหม่ - กำหนดให้ใช้ `` สำหรับฟังก์ชัน Typst ในโหมดคณิตศาสตร์
ความแตกแยกทางวัฒนธรรมในสัญกรณ์คณิตศาสตร์
การอภิปรายเผยให้เห็นถึงความแตกต่างทางวัฒนธรรมที่ลึกซึ้งในวิธีที่ผู้คนตีความสัญกรณ์คณิตศาสตร์ นิพจน์เช่น 1/2(x + y) ถูกตีความแตกต่างกันไปตามธรรมเนียมทางคณิตศาสตร์ ผู้ใช้บางส่วนคาดหวังให้ (x + y) ทั้งหมดอยู่ในตัวส่วน ในขณะที่คนอื่นๆ อ่านมันเป็น (1/2) * (x + y) ความกำกวมนี้มีอยู่แม้จะไม่มีการเกี่ยวข้องของฟังก์ชัน Typst
ผู้แสดงความคิดเห็นหนึ่งคนสังเกตว่า นอกจากนี้ฉันคิดว่ามันเป็นเรื่องของวัฒนธรรม เพราะโดยส่วนตัวฉันจะเข้าใจว่านิพจน์ทั้งหมดเหล่านี้มีเพียงหนึ่งเป็นตัวเศษและส่วนที่เหลืออยู่ด้านล่าง สิ่งนี้ชี้ให้เห็นว่าไม่มีกฎการแยกวิเคราะห์ใดกฎเดียวที่จะทำให้ผู้ใช้ทุกคนพอใจ เนื่องจากสัญกรณ์คณิตศาสตร์เองก็มีความกำกวมโดยธรรมชาติที่ชุมชนต่างๆ แก้ไขแตกต่างกันไป
ความเห็นของชุมชน:
- ส่วนใหญ่มองว่าพฤติกรรมปัจจุบันไม่ตรงตามสัญชาตญาณ
- แบ่งออกเป็นสองฝ่ายว่าควรให้ความสำคัญกับความสามารถในการคาดการณ์หรือการแยกวิเคราะห์แบบอัจฉริยะ
- ความแตกต่างทางวัฒนธรรมในการตีความสัญลักษณ์ทางคณิตศาสตร์ส่งผลต่อความชอบของผู้ใช้
- ความกังวลเกี่ยวกับความเข้ากันได้แบบย้อนหลังและเส้นทางการโยกย้ายไปยัง LaTeX
เส้นเวลาการพัฒนาและสถานะปัจจุบัน
สถานการณ์ได้พัฒนาอย่างรวดเร็วในช่วงไม่กี่สัปดาห์ที่ผ่านมา Pull request เพื่อนำตัวเลือก B ไปใช้ถูกผนวกเข้ากับโค้ดหลักชั่วครู่หนึ่ง แต่หลังจากนั้นก็ถูกย้อนกลับหลังจากนักพัฒนาค้นพบปัญหาที่ลึกกว่ากับการออกแบบใหม่แบบเก่า ณ สิ้นเดือนตุลาคม 2025 งานยังคงดำเนินต่อไปกับแนวทางใหม่ที่มุ่งสร้างสมดุลระหว่างพฤติกรรมที่เข้าใจง่ายกับความเป็นไปได้ทางเทคนิค
ผู้เขียนบทความต้นฉบับ ซึ่งในตอนแรกสนับสนุนแนวทางการแยกวิเคราะห์ที่ฉลาดกว่า ตอนนี้สนับสนุนตัวเลือก B อย่างแข็งขัน โดยให้เหตุผลว่าทั้ง [ฟังก์ชัน Typst และฟังก์ชันคณิตศาสตร์] ควรมีระดับความสำคัญเท่ากัน เพื่อให้สิ่งต่างๆ คาดเดาได้ ซึ่งแสดงถึงการเปลี่ยนแปลงมุมมองที่สำคัญ โดยยอมรับว่าการคาดเดาได้และความสม่ำเสมออาจมีค่ามากกว่าการพยายามตีความความตั้งใจของผู้ใช้อย่างสมบูรณ์แบบ
มองไปข้างหน้า: อนาคตของคณิตศาสตร์ใน Typst
การถกเถียงที่ยังคงดำเนินอยู่เน้นย้ำถึงความท้าทายในการออกแบบไวยากรณ์คณิตศาสตร์ที่สร้างสมดุลระหว่างประสิทธิภาพกับความเรียบง่าย ในขณะที่ผู้ใช้บางส่วนโหยหาความเข้ากันได้กับ LaTeX แต่คนอื่นๆ ก็ชื่นชอบแนวทางที่สะอาดกว่าของ Typst การแก้ไขปัญหานี้มีแนวโน้มที่จะกำหนดการยอมรับของ Typst ในชุมชนวิชาการและวิทยาศาสตร์ ซึ่งการจัดเรียงตัวอักษรทางคณิตศาสตร์ที่แม่นยำเป็นสิ่งสำคัญ
ดังที่ผู้แสดงความคิดเห็นที่มีมุมมองในแง่ดีคนหนึ่งระบุว่า ฉันชอบบทความที่มีเหตุผลดีและละเอียดถี่ถ้วนเช่นนี้ ซึ่งพิจารณาข้อได้เปรียบเสียเปรียบทั้งหมดแล้ว มันทำให้ฉันมั่นใจในอนาคตของ Typst การอภิปรายอย่างโปร่งใสและการพิจารณาทางเลือกต่างๆ อย่างรอบคอบชี้ให้เห็นว่าไม่ว่าแนวทางแก้ไขใดจะปรากฏออกมา มันจะได้รับการพิจารณาอย่างดี แม้ว่ามันอาจจะไม่เป็นที่พอใจของทุกคนก็ตาม
ทีม Typst ดูเหมือนจะมุ่งมั่นที่จะหาวิธีแก้ปัญหาที่ยั่งยืน แทนที่จะใช้การแก้ไขเร็วๆ เนื่องจากการจัดเรียงตัวอักษรทางคณิตศาสตร์เป็นกรณีการใช้งานหลักของระบบ การทำให้โหมดคณิตศาสตร์ถูกต้องจึงมีความสำคัญอย่างยิ่งต่อความสำเร็จในระยะยาวของ Typst ในฐานะแพลตฟอร์มเอกสารสมัยใหม่
อ้างอิง: The Math Mode Problem

