เท็กซ์
| เท็กซ์ | |
|---|---|
| นักพัฒนา | โดนัลด์ คนูธ |
| ปล่อย | พ.ศ. 2521 |
| เวอร์ชันเสถียร | |
| เขียนเป็น | เว็บ / ปาสคาล |
| ระบบปฏิบัติการ | ข้ามแพลตฟอร์ม |
| พิมพ์ | การจัดเรียงตัวอักษร |
| ใบอนุญาต | ซอฟต์แวร์เสรีแบบอนุญาต |
| เว็บไซต์ | tug.org |
| ที่เก็บข้อมูล |
|
| เท็กซ์ | |
|---|---|
| นามสกุลไฟล์ | .tex |
| สื่อ ประเภทอินเทอร์เน็ต | |
| การเผยแพร่ครั้งแรก | พ.ศ. 2521 |
| ประเภทของรูปแบบ | รูปแบบไฟล์เอกสาร |
TeX ( / t ɛ x / )เขียนเป็นTeXเป็นโปรแกรมจัดพิมพ์เอกสารแบบโอเพนซอร์สและฟรี ที่ออกแบบและเขียนโดยนักวิทยาศาสตร์คอมพิวเตอร์และศาสตราจารย์Donald Knuth แห่งมหาวิทยาลัยสแตนฟ อ ร์ด [ 2 ]และเปิดตัวครั้งแรกในปี 1978 ปัจจุบันคำนี้หมายถึงระบบส่วนขยาย ซึ่งรวมถึงโปรแกรมซอฟต์แวร์ที่เรียกว่า TeX enginesชุดมาโคร TeX และแพ็กเกจที่ให้ฟังก์ชันการจัดพิมพ์เพิ่มเติม ซึ่งสร้างขึ้นรอบ ๆ ภาษา TeX ดั้งเดิม TeX เป็นวิธีการยอดนิยมในการจัดพิมพ์สูตรคณิตศาสตร์ ที่ซับซ้อน ได้ รับการกล่าวขานว่าเป็นหนึ่งในระบบการพิมพ์ ดิจิทัลที่ซับซ้อนที่สุด [ 3 ]
TeX ถูกใช้กันอย่างแพร่หลายในแวดวงวิชาการ โดยเฉพาะอย่างยิ่งในสาขาคณิตศาสตร์วิทยาการคอมพิวเตอร์เศรษฐศาสตร์รัฐศาสตร์วิศวกรรมศาสตร์ภาษาศาสตร์ฟิสิกส์สถิติและจิตวิทยาเชิงปริมาณ TeX ได้เข้ามาแทนที่Unix troff (ระบบจัดรูปแบบที่เคยได้รับความนิยมมาก่อน) ในการติดตั้ง Unix ส่วนใหญ่มานานแล้ว(ถึงแม้ว่าtroffยังคงเป็นตัวจัดรูปแบบเริ่มต้นของเอกสารใน UNIX ก็ตาม) นอกจากนี้ยังใช้สำหรับงานจัดพิมพ์อื่นๆ อีกมากมาย โดยเฉพาะอย่างยิ่งเป็นพื้นฐานสำหรับLaTeX , ConTeXtและแพ็กเกจมาโคร อื่นๆ
TeX ได้รับการออกแบบโดยคำนึงถึงเป้าหมายหลักสองประการ ได้แก่ การอนุญาตให้ทุกคนสามารถผลิตหนังสือคุณภาพสูงได้โดยใช้ความพยายามน้อยที่สุด และการจัดให้มีระบบที่จะให้ผลลัพธ์ที่เหมือนกันทุกประการบนคอมพิวเตอร์ทุกเครื่อง ในทุกช่วงเวลา (รวมถึง ภาษา Metafontสำหรับ การอธิบาย แบบอักษรและตระกูลแบบอักษรComputer Modern ) [ 4 ] TeX เป็นซอฟต์แวร์ฟรีซึ่งทำให้ผู้ใช้จำนวนมากสามารถเข้าถึงได้
ประวัติศาสตร์
เมื่อหนังสือ The Art of Computer Programmingของ Knuth ฉบับพิมพ์เล่มแรกได้รับการตีพิมพ์ในปี 1968 [ 5 ]มันถูกพิมพ์โดยใช้ระบบเรียงพิมพ์แบบโลหะร้อนบนเครื่อง Monotypeวิธีนี้ซึ่งมีมาตั้งแต่ศตวรรษที่ 19 ทำให้เกิด "รูปแบบคลาสสิก" ที่ Knuth ชื่นชอบ[ 6 ]เมื่อมีการตีพิมพ์ฉบับที่สองในปี 1976 หนังสือทั้งเล่มต้องถูกเรียงพิมพ์ใหม่ทั้งหมด เนื่องจากเทคโนโลยี Monotype ถูกแทนที่ด้วยระบบเรียงพิมพ์ภาพถ่าย เป็นส่วนใหญ่ และแบบอักษร ดั้งเดิม ก็ไม่สามารถใช้งานได้อีกต่อไป เมื่อ Knuth ได้รับต้นฉบับหนังสือเล่มใหม่ในวันที่ 30 มีนาคม 1977 เขาพบว่ามันด้อยกว่า ด้วยความผิดหวัง Knuth จึงเริ่มออกแบบระบบเรียงพิมพ์ของตัวเอง
Knuth ได้เห็นผลลัพธ์ของระบบเรียงพิมพ์ดิจิทัลคุณภาพสูงเป็นครั้งแรก และเริ่มสนใจการพิมพ์ดิจิทัล เมื่อวันที่ 13 พฤษภาคม 1977 เขาได้เขียนบันทึกถึงตัวเองเพื่ออธิบายคุณสมบัติพื้นฐานของ TeX [ 7 ]เขาตั้งใจจะทำให้เสร็จในช่วงลาพักร้อนในปี 1978 (แม้ว่าในที่สุดไวยากรณ์ของภาษาจะไม่ได้รับการกำหนดจนกระทั่งปี 1989 ) Guy Steeleบังเอิญอยู่ที่Stanfordในช่วงฤดูร้อนปี 1978 ซึ่งเป็นช่วงที่ Knuth กำลังพัฒนา TeX เวอร์ชันแรก เมื่อ Steele กลับไปที่สถาบันเทคโนโลยีแมสซาชูเซตส์ในฤดูใบไม้ร่วงนั้น เขาได้เขียนส่วนอินพุต/เอาต์พุต ( I/O ) ของ TeX ใหม่เพื่อให้ทำงานภายใต้ ระบบปฏิบัติการ Incompatible Timesharing System (ITS) TeX เวอร์ชันแรกที่เรียกว่า TeX78 เขียนด้วยภาษาโปรแกรม SAILเพื่อให้ทำงานบนPDP-10 ภายใต้ ระบบปฏิบัติการWAITSของ Stanford [ 8 ]
สำหรับ TeX เวอร์ชันต่อมา Knuth ได้คิดค้นแนวคิดของการเขียนโปรแกรมแบบมีเอกสารประกอบ (literate programming)ซึ่งเป็นวิธีการสร้างซอร์สโค้ด ที่สามารถคอมไพล์ได้ และเอกสารประกอบที่มีการเชื่อมโยงกันซึ่งจัดพิมพ์ด้วย TeX จากไฟล์ต้นฉบับเดียวกัน ภาษาที่ใช้เรียกว่าWEBและสร้างโปรแกรมในภาษา DEC PDP- 10 Pascal
TeX82ซึ่งเป็น TeX เวอร์ชันใหม่ที่เขียนขึ้นใหม่ทั้งหมด ได้รับการเผยแพร่ในปี 1982 การเปลี่ยนแปลงอื่นๆ รวมถึงอัลกอริทึมการแบ่งคำ แบบเดิม ถูกแทนที่ด้วยอัลกอริทึมใหม่ที่เขียนโดย Frank Liang TeX82 ยังใช้เลขคณิตแบบจุดคงที่แทน เลขคณิต แบบจุดลอยตัวเพื่อให้มั่นใจได้ว่าผลลัพธ์สามารถทำซ้ำได้ในฮาร์ดแวร์คอมพิวเตอร์ที่แตกต่างกัน [ 9 ]และรวมถึง ภาษาโปรแกรม ที่สมบูรณ์แบบตามทฤษฎีของ Turingซึ่งเป็นผลมาจากการผลักดันอย่างหนักของ Guy Steele [ 10 ]ในปี 1989 Donald Knuth ได้เผยแพร่ TeX และ Metafont เวอร์ชันใหม่ [ 11 ]แม้ว่าเขาต้องการรักษาความเสถียรของโปรแกรม แต่ Knuth ก็ตระหนักว่าอักขระ 128นั้น ไม่เพียงพอที่จะรองรับภาษาต่างประเทศ การเปลี่ยนแปลงหลักใน TeX เวอร์ชัน 3.0 จึงเป็นความสามารถในการทำงานกับ อินพุต 8 บิตทำให้สามารถใช้อักขระ 256 ตัวที่แตกต่างกันในการป้อนข้อความได้ TeX3.0 ได้รับการเผยแพร่เมื่อวันที่ 15 มีนาคม 1990 [ 12 ]
การกำหนดหมายเลขเวอร์ชัน
ตั้งแต่เวอร์ชัน 3 เป็นต้นมา TeX ได้ใช้ระบบการกำหนดหมายเลขเวอร์ชัน ที่ไม่เหมือนใคร โดยการอัปเดตจะระบุโดยการเพิ่มตัวเลขพิเศษที่ท้ายจุดทศนิยม เพื่อให้หมายเลขเวอร์ชันเข้าใกล้πอย่างไม่ สิ้นสุด นี่เป็นการสะท้อนให้เห็นว่า TeX มีความเสถียรมากแล้ว และคาดว่าจะมีการอัปเดตเพียงเล็กน้อยเท่านั้น เวอร์ชันปัจจุบันของ TeX คือ 3.141592653 ซึ่งได้รับการอัปเดตครั้งล่าสุดในปี 2021 [ 13 ]การออกแบบถูกตรึงไว้หลังจากเวอร์ชัน 3.0 และจะไม่มีการเพิ่มคุณสมบัติใหม่หรือการเปลี่ยนแปลงพื้นฐานใดๆ ดังนั้นเวอร์ชันใหม่ทั้งหมดจะมีเพียงการแก้ไขข้อบกพร่อง เท่านั้น [ 14 ]แม้ว่า Donald Knuth เองจะแนะนำบางส่วนที่ TeX สามารถปรับปรุงได้ แต่เขาระบุว่าเขาเชื่อมั่นว่าการมีระบบที่ไม่เปลี่ยนแปลงซึ่งจะสร้างผลลัพธ์เดียวกันทั้งในปัจจุบันและอนาคตนั้นสำคัญกว่าการแนะนำคุณสมบัติใหม่ๆ ด้วยเหตุนี้ เขาจึงระบุว่า "การเปลี่ยนแปลงครั้งสุดท้ายอย่างแท้จริง (ที่จะทำหลังจากที่ฉันเสียชีวิต)" จะเป็นการเปลี่ยนหมายเลขเวอร์ชันเป็นπซึ่ง ณ จุดนั้น "ข้อบกพร่อง" ที่เหลือทั้งหมดจะกลายเป็น "คุณสมบัติ" [ 15 ]ในทำนองเดียวกัน เวอร์ชันของ Metafont หลังจาก 2.0 จะเข้าใกล้e อย่างไม่สิ้นสุด (ปัจจุบันอยู่ที่ 2.7182818) และการเปลี่ยนแปลงที่คล้ายกันจะถูกนำมาใช้หลังจากที่ Knuth เสียชีวิต[ 14 ]
การออกเสียงและการสะกด
ชื่อ TeX นั้น ผู้พัฒนาตั้งใจให้ออกเสียงว่า/tɛx / โดยมีพยัญชนะท้ายคือloch [ 16 ] ตัวอักษรในชื่อ นี้หมายถึงตัวอักษรกรีกตัวใหญ่tau , epsilonและchiเนื่องจาก TeX เป็นคำย่อของτέχνη ( ΤΕΧΝΗ technē ) ซึ่งเป็นคำภาษากรีกที่แปลว่า "ศิลปะ" และ "งานฝีมือ" และยังเป็นรากศัพท์ของคำว่าtechnical อีกด้วย ผู้พูดภาษาอังกฤษมักออกเสียงว่า/ tɛk /เหมือนกับพยางค์แรกของคำว่า technical Knuth สั่งให้จัดพิมพ์โดยให้ตัว "E" อยู่ต่ำกว่าเส้นฐานและลดระยะห่างระหว่างตัวอักษร ซึ่งทำ เช่น นี้ ตามที่ Knuth กล่าวไว้ใน TeXbookของเขาเพื่อแยกแยะ TeX ออกจากชื่อระบบอื่นๆ เช่น TEX ซึ่งเป็นตัวประมวลผล Text EXecutive (พัฒนาโดย Honeywell Information Systems) [ 17 ]
ไวยากรณ์
คำสั่ง TeX มักเริ่มต้นด้วยเครื่องหมายแบ็กสแลชและจัดกลุ่มด้วยวงเล็บปีกกาคุณสมบัติทางไวยากรณ์เกือบทั้งหมดของ TeX สามารถเปลี่ยนแปลงได้ทันที ซึ่งทำให้การแยกวิเคราะห์อินพุตของ TeX ทำได้ยากหากใช้สิ่งอื่นใดนอกจาก TeX เอง TeX เป็น ภาษาที่ใช้ มาโครและโทเค็นเป็นหลัก คำสั่งจำนวนมาก รวมถึงคำสั่งที่ผู้ใช้กำหนดส่วนใหญ่ จะถูกขยายได้ทันทีจนกว่าจะเหลือเพียงโทเค็นที่ไม่สามารถขยายได้ ซึ่งจะถูกดำเนินการ การขยายนั้นแทบจะไม่มีผลข้างเคียงการเรียกซ้ำแบบหางของมาโครไม่ใช้หน่วยความจำ และมีโครงสร้าง if-then-else ให้ใช้งานได้ ทำให้ TeX เป็น ภาษา ที่สมบูรณ์แบบตามทฤษฎีของ Turingแม้ในระดับการขยาย[ 18 ]ระบบสามารถแบ่งออกเป็นสี่ระดับ: ในระดับแรก อักขระจะถูกอ่านจากไฟล์อินพุตและกำหนดรหัสหมวดหมู่ (บางครั้งเรียกว่า "catcode" สั้นๆ) การรวมกันของเครื่องหมายแบ็กสแลช (จริงๆ แล้วคืออักขระใดๆ ของหมวดหมู่ศูนย์) ตามด้วยตัวอักษร (อักขระของหมวดหมู่ 11) หรืออักขระอื่นเพียงตัวเดียวจะถูกแทนที่ด้วยโทเค็นลำดับควบคุม ในแง่นี้ ขั้นตอนนี้จึงคล้ายกับการวิเคราะห์คำศัพท์ แม้ว่าจะไม่ได้สร้างตัวเลขจากตัวเลขก็ตาม ในขั้นตอนถัดไป ลำดับควบคุมที่ขยายได้ (เช่น เงื่อนไขหรือมาโครที่กำหนดไว้) จะถูกแทนที่ด้วยข้อความทดแทน อินพุตสำหรับขั้นตอนที่สามคือกระแสของอักขระ (รวมถึงอักขระที่มีความหมายพิเศษ) และลำดับควบคุมที่ไม่สามารถขยายได้ (โดยทั่วไปคือการกำหนดค่าและคำสั่งภาพ) ในขั้นตอนนี้ อักขระจะถูกประกอบเข้าเป็นย่อหน้า และอัลกอริทึมการแบ่งย่อหน้าของ TeX จะทำงานโดยการปรับจุดแบ่งให้เหมาะสมทั่วทั้งย่อหน้า ขั้นตอนที่สี่จะแบ่งรายการบรรทัดแนวตั้งและเนื้อหาอื่นๆ ออกเป็นหน้าๆ
ระบบ TeX มีความรู้ที่แม่นยำเกี่ยวกับขนาดของอักขระและสัญลักษณ์ทั้งหมด และใช้ข้อมูลนี้ในการคำนวณการจัดเรียงตัวอักษรต่อบรรทัดและจำนวนบรรทัดต่อหน้าอย่างเหมาะสม จากนั้นจะสร้าง ไฟล์ DVI ("DeVice Independent") ที่มีตำแหน่งสุดท้ายของอักขระทั้งหมด ไฟล์ DVI นี้สามารถพิมพ์ได้โดยตรงหากมีไดรเวอร์เครื่องพิมพ์ที่เหมาะสม หรือสามารถแปลงเป็นรูปแบบอื่นได้ ปัจจุบันมักใช้pdfTeX ซึ่งข้ามขั้นตอนการสร้าง DVI ไปเลย [ 19 ]ระบบ TeX พื้นฐานเข้าใจคำสั่งประมาณ 300 คำสั่ง เรียกว่าprimitives [ 20 ] คำสั่งระดับต่ำเหล่านี้ไม่ค่อยได้ใช้โดยตรงจากผู้ใช้ และฟังก์ชันส่วนใหญ่จะมีให้โดยไฟล์รูปแบบ (ภาพหน่วยความจำที่ถูกบันทึกไว้ล่วงหน้าของ TeX หลังจากโหลดชุดมาโครขนาดใหญ่แล้ว) รูปแบบเริ่มต้นดั้งเดิมของ Knuth ซึ่งเพิ่มคำสั่งประมาณ 600 คำสั่ง คือPlain TeX [ 21 ] รูปแบบที่ใช้กันอย่างแพร่หลายที่สุดคือ LaTeXซึ่งเดิมพัฒนาโดย Leslie Lamportซึ่งรวมสไตล์เอกสารสำหรับหนังสือ จดหมาย สไลด์ ฯลฯ และเพิ่มการสนับสนุนสำหรับการอ้างอิงและการกำหนดหมายเลขส่วนและสมการโดยอัตโนมัติ อีกรูปแบบหนึ่งที่ใช้กันอย่างแพร่หลายคือ AMS-TeXซึ่งผลิตโดย American Mathematical Societyและมีคำสั่งที่เป็นมิตรกับผู้ใช้มากกว่า ซึ่งวารสารสามารถเปลี่ยนแปลงเพื่อให้เข้ากับรูปแบบของตนเองได้ คุณสมบัติส่วนใหญ่ของ AMS-TeX สามารถใช้ใน LaTeX ได้โดยใช้ "แพ็กเกจ AMS" (เช่น ,amsmath)amssymbและ "คลาสเอกสาร AMS" (เช่นamsart,amsbook) จากนั้นจะเรียกว่า AMS-LaTeX [ 22 ] รูปแบบอื่นๆ ได้แก่ ConTeXtซึ่งใช้เป็นหลักสำหรับการจัดพิมพ์บนเดสก์ท็อปและเขียนโดย Hans Hagen ที่ Pragmaเป็น
ออกแบบ
ซอฟต์แวร์ TeX ได้รวมเอาคุณสมบัติหลายอย่างที่ไม่มีในโปรแกรมจัดพิมพ์เอกสารอื่นๆ ในช่วงเวลาที่ TeX เปิดตัว หรือโปรแกรมอื่นๆ มีคุณภาพต่ำกว่า นวัตกรรมบางอย่างนั้นมาจากอัลกอริทึมที่น่าสนใจ และนำไปสู่หัวข้อวิทยานิพนธ์หลายเรื่องสำหรับนักศึกษาของ Knuth แม้ว่าการค้นพบเหล่านี้บางส่วนจะถูกนำไปใช้ในโปรแกรมจัดพิมพ์เอกสารอื่นๆ แล้ว แต่บางส่วน เช่น กฎสำหรับการเว้นวรรคทางคณิตศาสตร์ ยังคงเป็นเอกลักษณ์เฉพาะตัว
การเว้นวรรคทางคณิตศาสตร์

เนื่องจากเป้าหมายหลักของภาษา TeX คือการจัดพิมพ์คุณภาพสูงสำหรับสำนักพิมพ์หนังสือ Knuth จึงให้ความสนใจอย่างมากกับกฎการเว้นวรรคสำหรับสูตรทางคณิตศาสตร์[ 23 ] [ 24 ]เขาเลือกผลงานสามชุดที่เขาถือว่าเป็นมาตรฐานความเป็นเลิศสำหรับการจัดพิมพ์คณิตศาสตร์ ได้แก่ หนังสือที่จัดพิมพ์โดย สำนัก พิมพ์ Addison-Wesley (สำนักพิมพ์ของThe Art of Computer Programming ) ภายใต้การดูแลของ Hans Wolf; วารสารคณิตศาสตร์Acta Mathematica ฉบับต่างๆ จากประมาณปี 1910; และสำเนาของIndagationes Mathematicaeซึ่งเป็น วารสารคณิตศาสตร์ ของเนเธอร์แลนด์ Knuth พิจารณาเอกสารที่พิมพ์เหล่านี้อย่างละเอียดเพื่อกำหนดชุดกฎสำหรับการเว้นวรรค[ 25 ] [ 26 ] แม้ว่า TeX จะมีกฎพื้นฐานและเครื่องมือที่จำเป็นในการระบุการเว้นวรรคที่เหมาะสม แต่พารามิเตอร์ที่แน่นอนจะขึ้นอยู่กับแบบอักษรที่ใช้ในการจัดพิมพ์สูตร ตัวอย่างเช่น การเว้นวรรคสำหรับแบบอักษร Computer Modernของ Knuth ได้รับการปรับแต่งอย่างแม่นยำตลอดหลายปีที่ผ่านมาและปัจจุบันได้ถูกกำหนดไว้แล้ว แต่เมื่อ Knuth ใช้ฟอนต์อื่น เช่นAMS Euler เป็นครั้งแรก พารามิเตอร์ระยะห่างใหม่จะต้องถูกกำหนด [ 27 ]
การจัดเรียงตัวอักษรของคณิตศาสตร์ใน TeX นั้นไม่ได้ปราศจากคำวิจารณ์ โดยเฉพาะอย่างยิ่งในส่วนที่เกี่ยวกับรายละเอียดทางเทคนิคของเมตริกฟอนต์ ซึ่งได้รับการออกแบบในยุคที่ให้ความสำคัญกับความต้องการพื้นที่จัดเก็บข้อมูลเป็นอย่างมาก ส่งผลให้ต้องใช้ "วิธีแก้ไข" บางอย่างที่ทำให้บางฟิลด์มีภาระมากเกินไป ซึ่งต้องใช้ "วิธีแก้ไข" อื่นๆ ตามมา ในระดับสุนทรียศาสตร์ การแสดงผลของรากศัพท์ก็ถูกวิจารณ์เช่นกัน[ 28 ]ข้อกำหนด ฟอนต์ คณิตศาสตร์ OpenTypeส่วนใหญ่ยืมมาจาก TeX แต่มีคุณสมบัติ/การปรับปรุงใหม่บางอย่าง[ 29 ] [ 30 ] [ 31 ]
การใช้เครื่องหมายขีดคั่นและการจัดเรียงข้อความ
เมื่อเปรียบเทียบกับการเรียงพิมพ์ด้วยมือ ปัญหาการจัดเรียงข้อความสามารถแก้ไขได้ง่ายด้วยระบบดิจิทัล เช่น TeX ซึ่งหากกำหนดจุดแบ่งบรรทัดที่ดีไว้แล้ว ก็สามารถกระจายช่องว่างระหว่างคำโดยอัตโนมัติเพื่อเติมเต็มบรรทัดได้ ปัญหาจึงอยู่ที่การค้นหาชุดจุดแบ่งบรรทัดที่จะให้ผลลัพธ์ที่ดูดีที่สุด อัลกอริทึมการแบ่งบรรทัดจำนวนมากใช้อัลกอริทึมแบบโลภ (greedy algorithm)โดยกำหนดจุดแบ่งบรรทัดสำหรับแต่ละบรรทัดทีละจุด และจะไม่เปลี่ยนแปลงจุดแบ่งบรรทัดหลังจากเลือกแล้ว[ 32 ]ระบบดังกล่าวไม่สามารถกำหนดจุดแบ่งบรรทัดโดยขึ้นอยู่กับผลกระทบที่จะมีต่อบรรทัดถัดไปได้ ในทางกลับกัน TeX ใช้อัลกอริทึมการแบ่งบรรทัดที่ปรับให้เหมาะสมทั่วโลกซึ่งพัฒนาโดย Donald Knuth และ Michael Plass [ 33 ]ซึ่งพิจารณาจุดแบ่งบรรทัดที่เป็นไปได้ทั้งหมดในย่อหน้า
ตามหลักการแล้ว อัลกอริทึมจะกำหนดค่าที่เรียกว่า"ความไม่ดี" (badness)ที่เกี่ยวข้องกับการขึ้นบรรทัดใหม่แต่ละแบบ ความไม่ดีจะเพิ่มขึ้นหากช่องว่างในบรรทัดต้องยืดหรือหดมากเกินไปเพื่อให้บรรทัดมีความกว้างที่ถูกต้อง จะมีการเพิ่มค่าปรับหากจุดขึ้นบรรทัดใหม่นั้นไม่พึงประสงค์เป็นพิเศษ เช่น หากต้องใช้เครื่องหมายยัติภังค์ ในคำใดคำหนึ่ง หากมีการใช้เครื่องหมายยัติภังค์ในสองบรรทัดติดกัน หรือหากบรรทัดที่หลวมมากตามด้วยบรรทัดที่แน่นมากทันที จากนั้นอัลกอริทึมจะค้นหาจุดขึ้นบรรทัดใหม่ที่จะลดผลรวมของกำลังสองของความไม่ดี (รวมถึงค่าปรับ) ของบรรทัดที่ได้ หากย่อหน้ามีจุดขึ้นบรรทัดใหม่ที่เป็นไปได้ จำนวนสถานการณ์ที่ต้องประเมินอย่างง่ายคืออย่างไรก็ตาม โดยใช้วิธีการเขียนโปรแกรมแบบไดนามิกความซับซ้อนของอัลกอริทึมสามารถลดลงเหลือ(ดูสัญกรณ์ Big O ) การลดความซับซ้อนเพิ่มเติม (ตัวอย่างเช่น การไม่ทดสอบจุดขึ้นบรรทัดใหม่ที่ไม่น่าจะเกิดขึ้นอย่างยิ่ง เช่น การใช้เครื่องหมายยัติภังค์ในคำแรกของย่อหน้า หรือบรรทัดที่เต็มมากเกินไป) จะนำไปสู่อัลกอริทึมที่มีประสิทธิภาพซึ่งมีเวลาในการทำงานคือโดยที่คือความกว้างของบรรทัด อัลกอริทึมที่คล้ายกันนี้ใช้เพื่อกำหนดวิธีที่ดีที่สุดในการแบ่งย่อหน้าออกเป็นสองหน้า เพื่อหลีกเลี่ยงบรรทัดโดดเดี่ยวหรือบรรทัดที่ไม่มีคู่ (บรรทัดที่ปรากฏอยู่เพียงลำพังในหน้าเดียว ในขณะที่ส่วนที่เหลือของย่อหน้าอยู่ในหน้าถัดไปหรือหน้าก่อนหน้า) อย่างไรก็ตาม โดยทั่วไป วิทยานิพนธ์ของ Michael Plass แสดงให้เห็นว่าปัญหาการแบ่งหน้าสามารถเป็นปัญหาNP-complete ได้เนื่องจากความซับซ้อนเพิ่มเติมของการวางรูปภาพ[ 34 ]อัลกอริทึมการแบ่งบรรทัดของ TeX ได้รับการนำไปใช้โดยโปรแกรมอื่นๆ อีกหลายโปรแกรม เช่นAdobe InDesign ( แอปพลิเคชันการจัดพิมพ์ บนเดสก์ท็อป ) [ 35 ]และยูทิลิตี้บรรทัดคำสั่งGNU fmt ของ Unix [ 36 ]
หากไม่พบตัวแบ่งบรรทัดที่เหมาะสมสำหรับบรรทัด ระบบจะพยายามแบ่งคำด้วยเครื่องหมายยัติภังค์ TeX เวอร์ชันดั้งเดิมใช้อัลกอริทึมการแบ่งคำด้วยเครื่องหมายยัติภังค์โดยอิงจากชุดกฎสำหรับการลบคำนำหน้าและคำต่อท้าย และสำหรับการตัดสินใจว่าจะแทรกการแบ่งระหว่างพยัญชนะสองตัวในรูปแบบสระ – พยัญชนะ – พยัญชนะ – สระ (ซึ่งเป็นไปได้ในกรณีส่วนใหญ่) [ 37 ] TeX82 ได้แนะนำอัลกอริทึมการแบ่งคำด้วยเครื่องหมายยัติภังค์แบบใหม่ ซึ่งออกแบบโดยFrank Liangในปี 1983 เพื่อกำหนดลำดับความสำคัญให้กับจุดแบ่งในกลุ่มตัวอักษร รายการรูปแบบการแบ่งคำด้วยเครื่องหมายยัติภังค์จะถูกสร้างขึ้นโดยอัตโนมัติจากคลังคำที่มีเครื่องหมายยัติภังค์ (รายการคำ 50,000 คำ) ตัวอย่างเช่น หาก TeX ต้องค้นหาตำแหน่งการแบ่งคำด้วยเครื่องหมายยัติภังค์ที่ยอมรับได้ในคำว่าencyclopediaระบบจะพิจารณาคำย่อยทั้งหมดของคำที่ขยายเป็น.encyclopedia.โดยที่.เป็นเครื่องหมายพิเศษเพื่อระบุจุดเริ่มต้นหรือจุดสิ้นสุดของคำ รายการคำย่อยประกอบด้วยคำย่อยทั้งหมดที่มีความยาว 1 ( . , e , n , c , y , เป็นต้น) ที่มีความยาว 2 ( .e , en , nc , เป็นต้น) เป็นต้น ไปจนถึงคำย่อยที่มีความยาว 14 ซึ่งก็คือคำหลัก รวมทั้งเครื่องหมายต่างๆ ด้วย จากนั้น TeX จะตรวจสอบรายการรูปแบบการแบ่งคำ และค้นหาคำย่อยที่คำนวณความเหมาะสมของการแบ่งคำในแต่ละตำแหน่งแล้ว ในกรณีของคำของเรา สามารถจับคู่รูปแบบดังกล่าวได้ 11 รูปแบบ ได้แก่ c l , cy, d i a, edi, e dia, i a, ope d, p ed, pedi, pedia , y c. สำหรับแต่ละตำแหน่งในคำ TeX จะคำนวณค่าสูงสุดที่ได้จากรูปแบบที่ตรงกันทั้งหมด ซึ่งจะได้ผลลัพธ์เป็น en cy c l o p e d i a สุดท้าย ตำแหน่งที่ยอมรับได้คือตำแหน่งที่ระบุด้วย เลข คี่ซึ่งจะได้การแบ่งคำที่ยอมรับได้คือ en-cy-clo-pe-di-aระบบนี้ซึ่งอิงตามคำย่อยช่วยให้สามารถกำหนดรูปแบบทั่วไปได้ (เช่น i a) โดยใช้ตัวเลขบ่งชี้ต่ำ (ทั้งเลขคี่หรือเลขคู่) ซึ่งสามารถแทนที่ด้วยรูปแบบที่เฉพาะเจาะจงมากขึ้น (เช่น d i a) หากจำเป็น รูปแบบเหล่านี้พบเครื่องหมายยัติภังค์ประมาณ 90% ในพจนานุกรมต้นฉบับ ที่สำคัญกว่านั้นคือ ไม่แทรกเครื่องหมายยัติภังค์ที่ไม่จำเป็นใดๆ นอกจากนี้ ยังมีรายการข้อยกเว้น (คำที่รูปแบบไม่สามารถทำนายการแบ่งยัติภังค์ที่ถูกต้องได้) รวมอยู่ในรูปแบบ Plain TeX ด้วย ผู้ใช้สามารถระบุข้อยกเว้นเพิ่มเติมได้[ 38 ] [ 39 ]
เมตาฟอนต์
Metafont ซึ่งไม่ได้เป็นส่วนหนึ่งของ TeX โดยตรง เป็นระบบการอธิบายแบบอักษรที่ช่วยให้นักออกแบบสามารถอธิบายตัวอักษรด้วยอัลกอริทึมได้ มันใช้เส้นโค้ง Bézierในลักษณะมาตรฐานเพื่อสร้างตัวอักษรที่จะแสดงผลจริง แต่ Knuth ให้ความสนใจอย่างมากกับ ปัญหา การแปลงเป็นภาพแรส เตอร์ บน จอแสดงผลแบบบิตแม ปวิทยานิพนธ์อีกชิ้นหนึ่งโดยJohn Hobbyได้สำรวจปัญหาการแปลง "วิถีการลากแปรง" เป็นดิจิทัลเพิ่มเติม คำนี้มาจากข้อเท็จจริงที่ว่า Metafont อธิบายตัวอักษรว่าถูกวาดโดยแปรง (และยางลบ) แบบนามธรรม โดยทั่วไปเชื่อกันว่า TeX ใช้แบบอักษรบิตแมป แต่ในความเป็นจริง โปรแกรมเหล่านี้ "ไม่รู้" อะไรเกี่ยวกับแบบอักษรที่พวกมันใช้เลยนอกจากขนาดของมัน เป็นหน้าที่ของไดรเวอร์อุปกรณ์ที่จะจัดการแบบอักษรประเภทอื่น ๆ อย่างเหมาะสม รวมถึง PostScript Type 1 และ TrueType Computer Modern (ที่รู้จักกันทั่วไปว่า "แบบอักษร TeX") มีให้ใช้งานฟรีในรูปแบบ Type 1 เช่นเดียวกับแบบอักษรคณิตศาสตร์ AMS โดยทั่วไป ผู้ใช้ระบบ TeX ที่ส่งออกโดยตรงไปยังไฟล์ PDF เช่น pdfTeX, XeTeX หรือ LuaTeX จะไม่ใช้การส่งออก Metafont เลย
ภาษามาโคร
เอกสาร TeX ถูกเขียนและตั้งโปรแกรมโดยใช้ภาษามาโครที่ไม่เหมือนใคร โดยทั่วไปแล้ว การทำงานของภาษามาโครนี้เกี่ยวข้องกับขั้นตอนการขยายและการดำเนินการซึ่งไม่โต้ตอบกันโดยตรง การขยายรวมถึงการขยายคำจำกัดความของมาโครแบบตรงตัวและการแยกสาขาแบบมีเงื่อนไข และการดำเนินการเกี่ยวข้องกับงานต่างๆ เช่น การตั้งค่าตัวแปร/รีจิสเตอร์ และกระบวนการจัดพิมพ์จริง เช่น การเพิ่มอักขระลงในกล่องข้อความ
นิยามของมาโครไม่เพียงแต่รวมถึงรายการคำสั่งเท่านั้น แต่ยังรวมถึงไวยากรณ์ของการเรียกใช้ด้วย มันแตกต่างจากตัวประมวลผลคำศัพท์ ที่ใช้กันอย่างแพร่หลายส่วนใหญ่ เช่นM4ตรงที่เนื้อหาของมาโครจะถูกแยกเป็นโทเค็นในระหว่างการกำหนดนิยาม
ภาษามาโคร TeX ถูกนำมาใช้ในการเขียนระบบการผลิตเอกสารขนาดใหญ่ โดยเฉพาะอย่างยิ่ง LaTeX และ ConTeXt
การดำเนินการ

ตัวอย่างโปรแกรม "Hello world"ที่เขียนด้วย TeX แบบธรรมดา มีดังนี้:
สวัสดีโลก \ลาก่อน% แสดงถึงจุดสิ้นสุดของไฟล์ ซึ่งจะไม่แสดงในผลลัพธ์สุดท้ายไฟล์นี้อาจมีชื่อว่าmyfile.texเนื่องจาก . texเป็นนามสกุลไฟล์ ทั่วไป สำหรับไฟล์ TeX ทั่วไป โดยค่าเริ่มต้น ทุกอย่างที่อยู่หลังเครื่องหมายเปอร์เซ็นต์ในบรรทัดจะเป็นข้อความแสดงความคิดเห็น ซึ่ง TeX จะไม่สนใจ การเรียกใช้ TeX กับไฟล์นี้ (เช่น โดยการพิมพ์ในโปรแกรมแปลคำสั่ง หรือโดยการเรียกใช้จากส่วนติดต่อผู้ใช้แบบกราฟิก) จะสร้างไฟล์เอาต์พุตชื่อ myfile.dvi ซึ่งแสดงเนื้อหาของหน้าในรูปแบบที่ไม่ขึ้นกับอุปกรณ์( DVI ) จากนั้นไฟล์ DVI สามารถดูบนหน้าจอหรือแปลงเป็นรูปแบบที่เหมาะสมสำหรับเครื่องพิมพ์ต่างๆ ที่มีไดรเวอร์อุปกรณ์ (โดยทั่วไปแล้ว การสนับสนุนเครื่องพิมพ์ยังไม่ใช่คุณสมบัติของระบบปฏิบัติการในขณะที่ TeX ถูกสร้างขึ้น) Knuth กล่าวว่าไม่มีอะไรใน TeX ที่กำหนดให้ต้องใช้ DVI เป็นรูปแบบเอาต์พุต และ TeX เวอร์ชันต่อมา โดยเฉพาะอย่างยิ่ง pdfTeX, XeTeX และ LuaTeX ล้วนรองรับการส่งออกไปยังPDFโดยตรงtex myfile.tex
TeX มีไวยากรณ์ข้อความที่แตกต่างกันโดยเฉพาะสำหรับสูตรทางคณิตศาสตร์ ตัวอย่างเช่นสูตรกำลังสอง (ซึ่งเป็นคำตอบของสมการกำลังสอง ) จะปรากฏดังนี้:
| ซอร์สโค้ด | แสดงผลเป็น |
|---|---|
สูตรกำลังสองคือ$ - b \pm \sqrt {b^ 2 - 4 ac} \over 2 a $ \bye |
สูตรจะถูกพิมพ์ในลักษณะที่คนเขียนด้วยมือหรือพิมพ์สมการ ในเอกสาร การเข้าสู่โหมดคณิตศาสตร์ทำได้โดยเริ่มต้นด้วยสัญลักษณ์ $ จากนั้นป้อนสูตรในไวยากรณ์ TeX และปิดท้ายด้วยสัญลักษณ์เดียวกันอีกครั้ง Knuth อธิบายอย่างติดตลกว่าเขาเลือกเครื่องหมายดอลลาร์เพื่อระบุจุดเริ่มต้นและจุดสิ้นสุดของโหมดคณิตศาสตร์ใน TeX ธรรมดา เพราะการพิมพ์คณิตศาสตร์แบบดั้งเดิมนั้นถือว่ามีราคาแพง[ 40 ]คณิตศาสตร์แบบแสดงผล (คณิตศาสตร์ที่แสดงอยู่ตรงกลางบรรทัดใหม่) คล้ายกัน แต่ใช้ $$ แทนสัญลักษณ์ $ ตัวเดียว ตัวอย่างเช่น ข้างต้นที่มีสูตรกำลังสองในคณิตศาสตร์แบบแสดงผล:
| ซอร์สโค้ด | แสดงผลเป็น |
|---|---|
สูตรกำลังสองคือ$$ - b \pm \sqrt {b^ 2 - 4 ac} \over 2 a $$ \bye |
การใช้งาน
ในหลายสาขาทางเทคนิค เช่น วิทยาศาสตร์คอมพิวเตอร์ คณิตศาสตร์ วิศวกรรมศาสตร์ และฟิสิกส์ TeX ได้กลายเป็นมาตรฐานโดยพฤตินัยหนังสือหลายพันเล่มได้รับการตีพิมพ์โดยใช้ TeX รวมถึงหนังสือที่ตีพิมพ์โดยAddison-Wesley , Cambridge University Press , Elsevier , Oxford University PressและSpringerวารสารจำนวนมากในสาขาเหล่านี้ผลิตโดยใช้ TeX หรือ LaTeX ทำให้ผู้เขียนสามารถส่งต้นฉบับดิบที่เขียนด้วย TeX ได้[ 41 ]ในขณะที่สิ่งพิมพ์จำนวนมากในสาขาอื่น ๆ รวมถึงพจนานุกรมและสิ่งพิมพ์ทางกฎหมาย ได้รับการผลิตโดยใช้ TeX แต่ก็ไม่ประสบความสำเร็จเท่าในสาขาทางเทคนิค เนื่องจาก TeX ได้รับการออกแบบมาเพื่อจัดพิมพ์คณิตศาสตร์เป็นหลัก
เมื่อ Donald Knuth ออกแบบ TeX เขาไม่เชื่อว่าระบบการจัดพิมพ์แบบเดียวจะเหมาะกับความต้องการของทุกคน แต่เขาได้ออกแบบ hooks จำนวนมากภายในโปรแกรมเพื่อให้สามารถเขียนส่วนขยายได้ และเผยแพร่ซอร์สโค้ดโดยหวังว่าสำนักพิมพ์จะออกแบบเวอร์ชันที่ปรับให้เข้ากับความต้องการของตนเอง แม้ว่าจะมีการสร้างส่วนขยายดังกล่าวขึ้น (รวมถึงบางส่วนที่สร้างโดย Knuth เอง) [ 42 ]แต่คนส่วนใหญ่ได้ขยาย TeX โดยใช้มาโครเท่านั้น และ TeX ยังคงเป็นระบบที่เกี่ยวข้องกับการจัดพิมพ์ทางเทคนิค[ 43 ] [ 44 ] [ 26 ]
สัญลักษณ์ทางเคมี
แพ็กเกจต่างๆ เช่นmhchem , XyMTeX , chemfigและ chemmacros สำหรับการจัดพิมพ์สมการเคมีโครงสร้างและปฏิกิริยาใน LaTeX [ 45 ]
การเผยแพร่ XML
เป็นไปได้ที่จะใช้ TeX สำหรับการสร้างเค้าโครงที่ซับซ้อนโดยอัตโนมัติสำหรับข้อมูล XML ความแตกต่างในไวยากรณ์ระหว่างภาษาการอธิบายทั้งสองสามารถเอาชนะได้ด้วยความช่วยเหลือของTeXMLในบริบทของการเผยแพร่ XML TeX จึงสามารถถือได้ว่าเป็นทางเลือกแทนXSL-FO TeX อนุญาตให้ลดเอกสารทางวิทยาศาสตร์ในสาขาคณิตศาสตร์ให้เหลือไฟล์ขนาดเล็กที่สามารถแสดงผลฝั่งไคลเอ็นต์ได้ ทำให้สามารถแลกเปลี่ยนเอกสารทางวิทยาศาสตร์ที่พิมพ์อย่างสมบูรณ์ผ่านทางอินเทอร์เน็ตยุคแรกและเวิลด์ไวด์เว็บที่กำลังเกิดขึ้น แม้ว่าการส่งไฟล์ขนาดใหญ่จะทำได้ยากก็ตาม สิ่งนี้ปูทางไปสู่การสร้างคลังเอกสารทางวิทยาศาสตร์ เช่นarXivซึ่งสามารถ 'เผยแพร่' เอกสารได้โดยไม่ต้องมีสำนักพิมพ์ตัวกลาง[ 46 ]
การพัฒนา
ซอร์สโค้ดดั้งเดิมของซอฟต์แวร์ TeX ในปัจจุบันเขียนด้วยภาษา WEBซึ่งเป็นการผสมผสานระหว่างเอกสารที่เขียนด้วย TeX และ ส่วนย่อยของ ภาษา Pascalเพื่อให้มั่นใจได้ถึงความอ่านง่ายและความสามารถในการพกพา ตัวอย่างเช่น TeX ทำการจัดสรรหน่วยความจำแบบไดนามิกด้วยตนเองจากอาร์เรย์ขนาดคงที่ และใช้เฉพาะเลขคณิตจุดคงที่สำหรับการคำนวณภายในเท่านั้น ด้วยเหตุนี้ TeX จึงสามารถพอร์ตไปยังระบบปฏิบัติการ เกือบทั้งหมด ได้ โดยปกติแล้วจะใช้ โปรแกรม web2cในการแปลงซอร์สโค้ดเป็นภาษาCแทนที่จะคอมไพล์โค้ด Pascal โดยตรง Knuth ได้บันทึกรายละเอียดของข้อบกพร่องทั้งหมดที่เขาแก้ไขและการเปลี่ยนแปลงที่เขาทำในโปรแกรมตั้งแต่ปี 1982 จนถึงปี 2025รายการดังกล่าวมี 440 รายการ ไม่รวมการแก้ไขเวอร์ชันที่ควรทำหลังจากการเสียชีวิตของเขา ซึ่งถือเป็นการเปลี่ยนแปลงครั้งสุดท้ายใน TeX [ 47 ] [ 48 ] Knuth เสนอรางวัลเป็นเงินให้กับผู้ที่ค้นพบและรายงานข้อบกพร่องใน TeX รางวัลต่อข้อบกพร่องเริ่มต้นที่ 2.56 ดอลลาร์สหรัฐ (หนึ่ง "ดอลลาร์เลขฐานสิบหก" [ 49 ] ) และเพิ่มขึ้นเป็นสองเท่าทุกปีจนกระทั่งคงที่ที่มูลค่าปัจจุบัน 327.68 ดอลลาร์สหรัฐ Knuth สูญเสียเงินไปค่อนข้างน้อยเนื่องจากมีข้อบกพร่องที่ถูกรายงานน้อยมาก นอกจากนี้ ผู้รับรางวัลมักจะนำเช็คของตนไปใส่กรอบเพื่อเป็นหลักฐานว่าพวกเขาพบข้อบกพร่องใน TeX แทนที่จะนำไปขึ้นเงิน[ 50 ] [ 51 ]
เนื่องจากพวกมิจฉาชีพพบสำเนาเช็คที่สแกนแล้วของเขาบนอินเทอร์เน็ตและใช้มันเพื่อพยายามถอนเงินออกจากบัญชีธนาคารของเขา Knuth จึงไม่ส่งเช็คจริงอีกต่อไป แต่ผู้ที่ส่งรายงานข้อผิดพลาดสามารถขอเครดิตได้ที่The Bank of San Serriffeแทน[ 52 ]
การแจกจ่ายและการขยาย
โดยปกติแล้ว TeX จะถูกจัดมาให้ในรูปแบบของชุดโปรแกรมที่ติดตั้งง่าย ซึ่งประกอบด้วย TeX เอง พร้อมด้วยMetafontและฟอนต์ รูปแบบเอกสาร และยูทิลิตี้ที่จำเป็นทั้งหมดสำหรับการใช้งานระบบจัดพิมพ์ บนระบบที่เข้ากันได้กับ UNIX รวมถึงLinuxและApple macOSนั้น TeX จะถูกแจกจ่ายเป็นส่วนหนึ่งของ ชุดโปรแกรม TeX Live ที่ใหญ่กว่า (ก่อนหน้า TeX Live ชุดโปรแกรม teTeXเป็นมาตรฐานที่ใช้กันอย่างแพร่หลายบนระบบที่เข้ากันได้กับ UNIX) บนMicrosoft Windowsนั้น มี ชุดโปรแกรม MiKTeX (ที่ได้รับการปรับปรุงโดย proTeXt) และ TeX Live เวอร์ชัน Microsoft Windows
ระบบประมวลผลเอกสารหลายระบบใช้ TeX เป็นพื้นฐาน โดยเฉพาะอย่างยิ่งjadeTeXซึ่งใช้ TeX เป็นแบ็กเอนด์สำหรับการพิมพ์จากDSSSL EngineของJames Clarkระบบ การเผยแพร่ ArbortextและTexinfoระบบประมวลผลเอกสารของ GNU TeX เป็นแพ็กเกจการจัดพิมพ์อย่างเป็นทางการสำหรับระบบปฏิบัติการ GNU มาตั้งแต่ปี 1984
มีโปรแกรมเสริมและโปรแกรมประกอบมากมายสำหรับ TeX ตัวอย่างเช่นBibTeXสำหรับจัดทำบรรณานุกรม (ซึ่งแจกจ่ายมาพร้อมกับ LaTeX); pdfTeX ซึ่งเป็นเอนจินที่เข้ากันได้กับ TeX และสามารถสร้างไฟล์ PDF ได้โดยตรง (รวมถึงยังคงรองรับการส่งออก DVI แบบดั้งเดิม); XeTeXซึ่งเป็นเอนจินที่เข้ากันได้กับ TeX และรองรับUnicodeและOpenType ; และLuaTeXซึ่งเป็นส่วนขยายของ TeX ที่รองรับ Unicode และมีรันไทม์ Lua ที่เชื่อมต่อกับรูทีนและอัลกอริธึมพื้นฐานของ TeX อย่างครอบคลุม ส่วนขยาย TeX ส่วนใหญ่สามารถดาวน์โหลดได้ฟรีจากCTANซึ่งเป็นเครือข่ายเก็บรวบรวม TeX ที่ครอบคลุม (Comprehensive TeX Archive Network)
ใบอนุญาต
Donald Knuth ได้ระบุหลายครั้ง[ 53 ] [ 54 ] [ 55 ] [ 26 ]ว่าซอร์สโค้ดของ TeX ได้ถูกนำไปไว้ใน " โดเมนสาธารณะ " และเขาสนับสนุนอย่างยิ่งให้มีการแก้ไขหรือทดลองกับซอร์สโค้ดนี้ อย่างไรก็ตาม เนื่องจาก Knuth ให้ความสำคัญอย่างมากกับความสามารถในการสร้างผลลัพธ์ซ้ำได้ของ TeX ทุกเวอร์ชัน เวอร์ชันที่เปลี่ยนแปลงใดๆ จะต้องไม่ถูกเรียกว่า TeX หรือชื่อที่คล้ายคลึงกันจนทำให้เกิดความสับสน เพื่อบังคับใช้กฎนี้ การใช้งานระบบใดๆ จะต้องผ่านชุดทดสอบที่เรียกว่าการทดสอบ TRIP [ 56 ]ก่อนที่จะได้รับอนุญาตให้เรียกว่า TeX คำถามเกี่ยวกับใบอนุญาตค่อนข้างสับสนจากข้อความที่รวมไว้ในตอนต้นของซอร์สโค้ด TeX [ 57 ]ซึ่งระบุว่า "สงวนสิทธิ์ทั้งหมด การคัดลอกไฟล์นี้ได้รับอนุญาตก็ต่อเมื่อ ... คุณไม่ทำการเปลี่ยนแปลงใดๆ กับสำเนาของคุณเลย" ข้อจำกัดนี้ควรตีความว่าเป็นการห้ามเปลี่ยนแปลงซอร์สโค้ดตราบใดที่ไฟล์นั้นมีชื่อว่า tex.web ข้อความลิขสิทธิ์ที่จุดเริ่มต้นของ tex.web (และ mf.web) ถูกเปลี่ยนในปี 2021 เพื่อระบุอย่างชัดเจน การตีความนี้ได้รับการยืนยันในภายหลังในซอร์สโค้ดเมื่อมีการกล่าวถึงการทดสอบ TRIP ("หากโปรแกรมนี้ถูกเปลี่ยนแปลง ระบบที่ได้ไม่ควรเรียกว่า 'TeX ' " ) [ 58 ]สมาคมคณิตศาสตร์อเมริกันพยายามอ้างสิทธิ์ในเครื่องหมายการค้าสำหรับ TeX ในช่วงต้นทศวรรษ 1980 แต่ถูกปฏิเสธเนื่องจากในขณะนั้น "TEX" (ตัวพิมพ์ใหญ่ทั้งหมด) ได้รับการจดทะเบียนโดยHoneywellสำหรับระบบประมวลผลข้อความ "Text EXecutive"
เนื่องจากซอร์สโค้ดของ TeX อยู่ในโดเมนสาธารณะโดยพื้นฐาน โปรแกรมเมอร์คนอื่นๆ จึงได้รับอนุญาต (และได้รับการสนับสนุนอย่างชัดเจน) ให้ปรับปรุงระบบ แต่จำเป็นต้องใช้ชื่ออื่นในการเผยแพร่ TeX ที่แก้ไขแล้ว ซึ่งหมายความว่าซอร์สโค้ดยังคงสามารถพัฒนาต่อไปได้ ตัวอย่างเช่น โครงการ Omegaได้รับการพัฒนาขึ้นหลังปี 1991 โดยมีจุดประสงค์หลักเพื่อเพิ่มความสามารถในการจัดพิมพ์หลายภาษาของ TeX [ 59 ] Knuth ได้สร้างเวอร์ชันที่แก้ไข "ไม่เป็นทางการ" เช่นTeX-XeTซึ่งอนุญาตให้ผู้ใช้ผสมข้อความที่เขียนในระบบการเขียนจากซ้ายไปขวาและจากขวาไปซ้าย ในเอกสารเดียวกันได้[ 42 ]
ชุมชน

หน่วยงานที่โดดเด่นในชุมชน TeX ได้แก่ TeX Users Group (TUG) ซึ่งปัจจุบันตีพิมพ์TUGboatและก่อนหน้านี้เคยตีพิมพ์The PracTeX Journalซึ่งครอบคลุมหัวข้อต่างๆ มากมายในด้านการพิมพ์ดิจิทัลที่เกี่ยวข้องกับ TeX Deutschsprachige Anwendervereinigung TeX (DANTE) เป็นกลุ่มผู้ใช้ขนาดใหญ่ในเยอรมนี TeX Users Group ก่อตั้งขึ้นในปี 1980 เพื่อวัตถุประสงค์ทางการศึกษาและวิทยาศาสตร์ เป็นองค์กรสำหรับผู้ที่สนใจในการพิมพ์และการออกแบบแบบอักษร และเป็นผู้ใช้ระบบการพิมพ์ TeX ที่คิดค้นโดย Knuth TeX Users Group เป็นตัวแทนผลประโยชน์ของผู้ใช้ TeX ทั่วโลก TeX Users Group ตีพิมพ์วารสารTUGboatปีละสามครั้ง[ 60 ] DANTE ตีพิมพ์Die TeXnische Komödieปีละสี่ครั้ง กลุ่มผู้ใช้อื่นๆ ได้แก่ DK-TUG ในเดนมาร์ก GUTenberg ในฝรั่งเศส GuIT ในอิตาลี NTG ในเนเธอร์แลนด์ และ UK-TUG ในสหราชอาณาจักร กลุ่มผู้ใช้เหล่า นี้ร่วมกันดูแลรายชื่อทั้งหมด[ 61 ]
บรรณาธิการ
มีโปรแกรมแก้ไขข้อความหลายประเภทที่ออกแบบมาเพื่อใช้งานร่วมกับไฟล์ TeX :
- โปรแกรม แก้ไขข้อความ TeXmacsเป็น โปรแกรมแก้ไขข้อความทางวิทยาศาสตร์ แบบ WYSIWYG - WYSIWYMที่ได้รับแรงบันดาลใจจากทั้ง TeX และEmacsมันใช้ฟอนต์ของ Knuth และสามารถสร้างเอาต์พุต TeX ได้
- Overleafเป็นโปรแกรมแก้ไขข้อความออนไลน์ที่มีคุณสมบัติ WYSIWYG บางส่วน ซึ่งให้บริการโซลูชันบนระบบคลาวด์สำหรับ TeX พร้อมด้วยคุณสมบัติเพิ่มเติมในการแก้ไขร่วมกันแบบเรียลไทม์
- LyXเป็น โปรแกรมประมวลผลเอกสาร แบบ WYSIWYMที่ทำงานได้บนแพลตฟอร์มหลากหลาย รวมถึง:
- ลินุกซ์
- ระบบปฏิบัติการ Microsoft Windows (เวอร์ชันใหม่กว่าต้องใช้ Windows 2000 หรือใหม่กว่า)
- ระบบปฏิบัติการ Apple macOS (โดยใช้ ส่วนหน้าQtที่ไม่ใช่ระบบดั้งเดิม )
- TeXShop (สำหรับ macOS), TeXworks (สำหรับ Linux, macOS และ Windows) และWinShell (สำหรับ Windows) เป็นเครื่องมือที่คล้ายคลึงกันและมีสภาพแวดล้อมการพัฒนาแบบบูรณาการ (IDE) สำหรับการทำงานกับ LaTeX หรือ TeX สำหรับKDE /Qt นั้นKileก็มี IDE ในลักษณะเดียวกัน
- Texmakerเป็นโปรแกรมที่เทียบเท่ากับ Kile ในภาษา Pure Qt โดยมีอินเทอร์เฟซผู้ใช้ที่เกือบจะเหมือนกับของ Kile
- TeXstudioเป็นโปรแกรมโอเพนซอร์สที่แตกแขนงมาจากTexmaker (ในปี 2009) โดยนำเสนอแนวทางการตั้งค่าและฟีเจอร์ที่แตกต่างออกไป มีไฟล์ไบนารีให้ดาวน์โหลดฟรีสำหรับ Windows, Linux, macOS, OS/2 และ FreeBSD
- GNU Emacs มีแพ็กเกจในตัวและ แพ็กเกจจากผู้พัฒนาภายนอกหลายตัวที่รองรับ TeX โดยแพ็กเกจหลักคือAUCTeX
- Visual Studio Codeส่วนเสริมที่น่าสนใจอย่างหนึ่งคือ LaTeX Workshop
- สำหรับVimปลั๊กอินที่เป็นไปได้ ได้แก่ Vim-LaTeX Suite [ 62 ] Automatic TeX [ 63 ]และ TeX-9 [ 64 ]
- สำหรับApache OpenOfficeและLibreOfficeส่วนขยาย iMath และ TexMaths สามารถจัดเตรียมการจัดพิมพ์ TeX ทางคณิตศาสตร์ได้[ 65 ] [ 66 ]
- สำหรับMediaWikiส่วนขยาย Mathจะมีฟังก์ชันการจัดรูปแบบข้อความ TeX ทางคณิตศาสตร์ แต่โค้ดจะต้องอยู่ภายใน
<math>แท็ก <form>
ส่วนขยาย
ดูเพิ่มเติม
- รายชื่อซอฟต์แวร์และเครื่องมือจัดพิมพ์ TeX
- การเปรียบเทียบภาษาการทำเครื่องหมายเอกสาร
- โปรแกรมแก้ไขสูตร– โปรแกรมคอมพิวเตอร์ที่ใช้ในการจัดพิมพ์งานทางคณิตศาสตร์หรือสูตรต่างๆ
- รายชื่อภาษามาร์กอัปเอกสาร
- MathJax – ระบบจัดรูปแบบสูตรคณิตศาสตร์บนเว็บ
- MathTime – แบบอักษรสำหรับ TeX
- ระบบจัดพิมพ์แบบใหม่
- PGF/TikZ – ภาษาสำหรับกราฟิก
- PSTricks
- xdvi – โปรแกรมคอมพิวเตอร์โอเพนซอร์ส
หมายเหตุ
- ↑ "CTAN" . สืบค้นเมื่อ 23 ธันวาคม 2025 .
- ↑ "Per Bothner (ผู้เข้าร่วมการประชุมโครงการ TeX) พูดคุยเกี่ยวกับการเป็นผู้เขียน" Knuth
เขียนโค้ดส่วนใหญ่ด้วยตัวเองอย่างแน่นอน อย่างน้อยก็สำหรับการเขียน Metafont ใหม่ ซึ่งผมมีข้อมูลส่วนตัวเกี่ยวกับเรื่องนี้ อย่างไรก็ตาม นักเรียนบางคนของเขา (เช่น Michael Plass และ John Hobby) ก็ได้ทำงานเกี่ยวกับอัลกอริธึมที่ใช้ใน TeX และ Metafont ด้วย
- ↑ Yannis Haralambous. Fonts & Encodings (แปลโดย P. Scott Horne) . ปักกิ่ง; เซบาสโตโพล, แคลิฟอร์เนีย: O'Reilly Media, 2007, หน้า 235.
- ↑ Gaudeul, Alexia (2006). " นักพัฒนาซอฟต์แวร์โอเพนซอร์สตอบสนองต่อการแข่งขันหรือไม่? : กรณีศึกษา (La)TeX" วารสารอิเล็กทรอนิกส์ SSRN doi : 10.2139 / ssrn.908946 ISSN 1556-5068
- ↑ Knuth, Donald E. "ชีวประวัติฉบับย่อ" . หน้าแรกของ Don Knuth . เก็บถาวรจากต้นฉบับเมื่อวันที่ 5 ธันวาคม 2016 . เรียกดูเมื่อวันที่ 9 มกราคม 2017 .
- ↑ Knuth, Donald E. " ปาฐกถาที่ระลึกรางวัลเกียวโต ปี 1996" (PDF)รางวัลเกียวโต เก็บถาวรจากต้นฉบับ(PDF)เมื่อวันที่ 27 มกราคม 2018 สืบค้นเมื่อ18 สิงหาคม 2018
- ↑ Knuth, Donald Ervin, TEXDR.AFT , เก็บถาวรจากต้นฉบับเมื่อวันที่ 12 มกราคม 2015
- ↑บทความนี้อ้างอิงจากเนื้อหาในTeXที่Free On-line Dictionary of Computingก่อนวันที่ 1 พฤศจิกายน 2008 และนำมาใช้ภายใต้เงื่อนไข "การอนุญาตใหม่" ของGFDLเวอร์ชัน 1.3 หรือใหม่กว่า
- ↑คนุธแอนด์พลาส 1981 , p. 144.
- ↑ Knuth, Donald E. Knuth พบปะสมาชิก NTG , NTG: MAPS. 16 (1996), 38–49. พิมพ์ซ้ำเป็นคำถามและคำตอบ, III , บทที่ 33 ของ Digital Typography , หน้า 648.
- ↑ Knuth, Donald E. The New Versions of TeX and METAFONT , TUGboat 10 (1989), 325–328; 11 (1990), 12. พิมพ์ซ้ำเป็นบทที่ 29 ของ Digital Typography .
- ↑ Hoenig, Alan (1998). TeX Unbound: LaTeX & TeX Strategies for Fonts, Graphics, & More . สำนักพิมพ์มหาวิทยาลัยออกซ์ฟอร์ด. ISBN 978-0-19-509686-6.
- ↑ "การเปิดตัว TeX 21" . สืบค้นเมื่อ 5 มกราคม 2022 .
- 1 2 "อนาคตของ TeX เป็นอย่างไร?"คำถามที่พบบ่อยเกี่ยวกับ TeX 27 พฤษภาคม 2018 เก็บถาวรจากต้นฉบับเมื่อ 28 เมษายน 2019 เรียกดูเมื่อ 21 กรกฎาคม 2019
- ↑ Knuth, Donald E.อนาคตของ TeX และ METAFONTวารสาร NTG MAPS (1990), 489. พิมพ์ซ้ำเป็นบทที่ 30 ของ Digital Typographyหน้า 571
- ↑ Knuth, Donald E. The TeXbook , บทที่ 1: The Name of the Game, หน้า 1.
- ↑ Knuth, Donald E.โลโก้ TeX ในแบบอักษรต่างๆ , TUGboat 7 (1986), 101. พิมพ์ซ้ำเป็นบทที่ 6 ของ Digital Typography
- ↑ Jeffrey, Alan (1990), "Lists in TeX's Mouth" (PDF) , TUGboat , 11 (2): 237– 45
- ↑ "CTAN: แพ็กเกจ pdftex" . ctan.org . สืบค้นเมื่อ 21 กรกฎาคม 2019 .
- ↑ Knuth 1984 , หน้า 9.
- ↑ Plain TeX (ซอร์สโค้ด), CTAN, เก็บถาวรจากต้นฉบับเมื่อวันที่ 9 พฤษภาคม 2021
- ↑ " แพ็ก เก จ AMS (amsmath ฯลฯ) คืออะไร?" คำถามที่พบบ่อยเกี่ยวกับ TeX 27 พฤษภาคม 2018 เก็บถาวรจากต้นฉบับเมื่อ 28 เมษายน 2019 เรียกดูเมื่อ21 กรกฎาคม 2019
- ↑ Slater, Robert (1989), Portraits in Silicon , MIT Press, p. 349, ไอเอสบีเอ็น 9780262691314
- ↑ซีโรปูลอส, อโพสโทลอส; โรคโซโลไมติส, แอนโทนิส; Sofroniou, Nick (2003), การพิมพ์ดิจิทัลโดยใช้ LaTeX , Springer, p. 93, ไอเอสบีเอ็น 9780387952178
- ↑ Knuth, Donald E (1996). "คำถามและคำตอบ ตอนที่ 2". TUGboat . 17 : 355– 367.
- 1 2 3 Knuth, Donald E. (1999). การพิมพ์แบบดิจิทัล . สแตนฟอร์ด, แคลิฟอร์เนีย: ศูนย์การศึกษาภาษาและสารสนเทศ. ISBN 978-1-57586-010-7.
- ↑ Knuth, Donald E.การจัดพิมพ์คณิตศาสตร์รูปธรรม , TUGboat 10 (1989), หน้า 31–36, 342. พิมพ์ซ้ำเป็นบทที่ 18 ของ Digital Typography , หน้า 367–378.
- ↑ Vieth, Ulrik. "การจัดพิมพ์คณิตศาสตร์ใน TEX: ข้อดี ข้อเสีย และข้อบกพร่อง" (PDF) . เก็บถาวรจากต้นฉบับ(PDF)เมื่อวันที่ 20 มกราคม 2022
- ↑ "การแก้ไขและการแสดงผลข้อความทางคณิตศาสตร์คุณภาพสูงใน Office 2007 "
- ↑ "บริการสาย "
- ↑ "แผนที่" (PDF) . ntg.nl .
- ↑ Barnett, Michael P (1965), การเรียงพิมพ์ด้วยคอมพิวเตอร์: การทดลองและแนวโน้ม , เคมบริดจ์ , แมสซา ชูเซตส์ : สำนักพิมพ์ MIT
- ↑ url= http://svn.tug.org/interviews/plass.html
- ↑ Knuth & Plass 1981
- ↑ "Donald E. Knuth" , TUGboat (สัมภาษณ์), 21 , Advogato : 103– 10, 2000, เก็บถาวรจากต้นฉบับเมื่อ 22 มกราคม พ.ศ. 2552 , ดึงข้อมูลเมื่อ 26 ธันวาคม พ.ศ. 2548
- ↑ "4.1 fmt: จัดรูปแบบข้อความย่อหน้าใหม่" , คู่มือยูทิลิตี้หลักของ GNU (GNU coreutils) , โครงการ GNU, 2016, เก็บถาวรจากต้นฉบับเมื่อวันที่ 12 ตุลาคม 2025 , เรียกดูเมื่อวันที่ 4 เมษายน 2016
- ↑เหลียง 1983 , หน้า. 3.
- ↑ เหลี ยง 1983
- ↑ " ภาคผนวก H: การแบ่งคำด้วยเครื่องหมายขีดกลาง", The TeXbook , หน้า449–55
- ↑ Knuth 1984 , หน้า 127, บทที่ 16: การพิมพ์สูตรคณิตศาสตร์
- ↑บีบี 2004 , หน้า 10.
- 1 2 Knuth, Donald E; MacKay, Pierre (1987), "การผสมผสานข้อความจากขวาไปซ้ายกับข้อความจากซ้ายไปขวา" (PDF) , TUGboat , 8 : 14– 25.
- ↑ Knuth, Donald E (1996), "คำถามและคำตอบ ตอนที่ 1", TUGboat , 17 : 7– 22.
- ↑ Knuth, Donald E (1996), "คำถามและคำตอบ ตอนที่ 2", TUGboat , 17 : 355– 367.
- ↑ "แพ็กเกจ LaTeX ที่มีประโยชน์สำหรับวิชาเคมี|แหล่งข้อมูลเคมีเชิงคำนวณ "
- ↑ O'Connell, Heath (2002). "นักฟิสิกส์ประสบความสำเร็จด้วยการเผยแพร่แบบไร้กระดาษ". Hep Lib.web . 6 : 3. arXiv : physics/0007040 .
- ↑ Knuth, Donald E.อัปเดตรายการ TeX82 ที่เผยแพร่ในเดือนกันยายน พ.ศ. 2525มีอยู่ใน CTAN
- ↑ Knuth, Donald E.ภาคผนวกของเอกสารErrors of TeXมีให้ดาวน์โหลดบน CTAN แก้ไขล่าสุดเมื่อเดือนมกราคม 2003
- ↑ Knuth, Donald E. "Knuth: Frequently Asked Questions" . Stanford Computer Science . เก็บถาวรจากต้นฉบับเมื่อวันที่ 6 มีนาคม 2008 . สืบค้นเมื่อ28 พฤศจิกายน 2019 .
- ↑ Kara Platoni (พฤษภาคม–มิถุนายน 2549). "รักแรกพบ" . นิตยสาร Stanford . เก็บถาวรจากต้นฉบับเมื่อวันที่ 4 มิถุนายน 2549.
- ↑ "ประวัติของ TeX" . กลุ่มผู้ใช้ TeX . สืบค้นเมื่อ 28 พฤศจิกายน 2019 .
- ↑ Knuth, Donald E (2008). "Knuth: ข่าวล่าสุด – ความล้มเหลวทางการเงิน" . Stanford Computer Science . เก็บถาวรจากต้นฉบับเมื่อวันที่ 29 พฤศจิกายน 2019 . สืบค้นเมื่อ 29 พฤศจิกายน 2019 .
- ↑ Knuth, Donald E. (1986). "คำกล่าวเพื่อเฉลิมฉลองการตีพิมพ์ Computers & Typesetting" (PDF) . TUGboat . 7 (2): 95– 98 . สืบค้นเมื่อ6 ธันวาคม 2024 .
- ↑ Knuth, Donald E. (1990). "อนาคตของ TeX และ METAFONT" (PDF) . TUGboat . 11 (4): 489 . สืบค้นเมื่อ6 ธันวาคม 2024 .
- ↑ Knuth, Donald Ervin (1 พฤศจิกายน 1997). "การออกแบบตัวอักษรดิจิทัล: การบรรยายรางวัลเกียวโต 1996" ( PDF)รางวัลเกียวโตมูลนิธิอินาโมริสืบค้นเมื่อ6 ธันวาคม 2024
- ↑ "Trip", CTAN (ซอร์สโค้ด), เก็บถาวรจากต้นฉบับ(TeX)เมื่อวันที่ 12 มิถุนายน 2021
- ↑ Knuth, Donald E (1986), TeX: The Program , Computers and Typesetting, vol. B, Reading, MA: Addison-Wesley, ISBN 0-201-13437-3
- ↑โอเพนซอร์ส: เทคโนโลยีและนโยบายโดย ฟาดี พี. ดีค และ เจมส์ เอเอ็ม แมคฮิว "สาธารณสมบัติ" หน้า 227 (2008)
- ↑ "การพัฒนา TeX Engine" . คำถามที่พบบ่อยเกี่ยวกับ TeX . 24 พฤษภาคม 2018. เก็บถาวรจากต้นฉบับเมื่อ 28 เมษายน 2019 . เรียกดูเมื่อ21 กรกฎาคม 2019 .
- ↑ "การสื่อสารของกลุ่มผู้ใช้ TeX" . tug.org . กลุ่มผู้ใช้ TeX . สืบค้นเมื่อ15 มีนาคม 2019 .
- ↑ "กลุ่มผู้ใช้ TeX ทั้งหมด" . tug.org . กลุ่มผู้ใช้ TeX . สืบค้นเมื่อ17 พฤศจิกายน 2019 .
- ↑ Vim-LaTex , SourceForge, เก็บถาวรจากต้นฉบับเมื่อวันที่ 8 มีนาคม 2024
- ↑ ปลั๊กอิน TeX อัตโนมัติ , Launchpad
- ↑ TeX-9 , Vim.org
- ↑ หน้าหลัก TexMaths , free.fr
- ↑ iMath , SourceForge
External links
- TeX Users' Group
- TeX (questions and answers), StackExchange.
- Eijkhout, Victor. TeX by TopicArchived 25 February 2021 at the Wayback Machine
- TeX for the Impatient
- Donald Knuth discusses developing the software for TEX at Xerox PARC 2/21/1980 https://archive.org/details/xerox-parc-tapes-v49