อ่าน 4 นาที
เมตาโพสต์
MetaPost หมายถึงทั้ง ภาษาโปรแกรม และ ตัวแปล ภาษาโปรแกรม MetaPost ทั้งสองอย่างนี้พัฒนามาจาก ภาษาและตัวแปลภาษา Metafont ของ Donald Knuth MetaPost...
เมตาโพสต์
| เมตาโพสต์ | |
|---|---|
| กระบวนทัศน์ | คำสั่ง , การเรียงพิมพ์ |
| ออกแบบโดย | จอห์น ดี. ฮอบบี้ |
| นักพัฒนา | ทาโก้ ฮุกวอเตอร์, ลุยจิ สการ์โซ |
| ปรากฏครั้งแรก | พ.ศ. 2537 |
| เวอร์ชันเสถียร | 1.8 / 17 มิถุนายน 2556 |
| รุ่นทดลองใช้งาน | 2.0rc2 / 19 กุมภาพันธ์ 2018 |
| วินัยในการพิมพ์ | เป็ด , คล่องแคล่ว , แข็งแกร่ง |
| โอเอส | ข้ามแพลตฟอร์ม |
| ใบอนุญาต | แอลจีพีแอล |
| เว็บไซต์ | tug.org/metapost |
| ได้รับอิทธิพลจาก | |
| เมตาฟอนต์ | |
MetaPostหมายถึงทั้งภาษาโปรแกรมและตัวแปลภาษาโปรแกรม MetaPost ทั้งสองอย่างนี้พัฒนามาจาก ภาษาและตัวแปลภาษา MetafontของDonald Knuth MetaPost สร้างแผนภาพกราฟิกเวกเตอร์จากคำอธิบายทางเรขาคณิต/พีชคณิต ภาษาดังกล่าวใช้ไวยากรณ์แบบประกาศ (declarative syntax) ร่วมกับ Metafont ในการจัดการเส้น เส้นโค้ง จุด และการแปลงทางเรขาคณิต อย่างไรก็ตาม
- Metafont ถูกออกแบบมาเพื่อสร้างฟอนต์ในรูปแบบไฟล์ภาพ (.gf) พร้อมไฟล์ข้อมูลเมตริกของฟอนต์ที่เกี่ยวข้อง (.tfm) ในขณะที่ MetaPost สร้างไฟล์EPS , SVGหรือPNG
- ผลลัพธ์ของ Metafont ประกอบด้วยแบบอักษรที่มีความละเอียดคงที่ในรูปแบบแรสเตอร์ ในขณะที่ผลลัพธ์ของ MetaPost เป็นกราฟิกแบบเวกเตอร์ (เส้นตรงเส้นโค้งเบซิเยร์ )
- ผลลัพธ์จาก Metafont เป็นแบบขาวดำ ในขณะที่ MetaPost ใช้สีRGBหรือCMYK
- ภาษา MetaPost สามารถรวมป้ายข้อความไว้ในไดอะแกรมได้ ไม่ว่าจะเป็นข้อความจากแบบอักษรที่กำหนด หรือข้อความอื่นๆ ที่สามารถจัดพิมพ์ได้ด้วยTeX
- ตั้งแต่เวอร์ชัน 1.8 เป็นต้นไป Metapost อนุญาตให้ใช้การคำนวณเลขทศนิยมแบบ 64 บิต (ค่าเริ่มต้น: การคำนวณเลขจุดคงที่แบบ 32 บิต)
ข้อจำกัดหลายอย่างของ MetaPost มาจากคุณสมบัติของ Metafont ตัวอย่างเช่น MetaPost ไม่รองรับคุณสมบัติทั้งหมดของPostScriptที่สำคัญที่สุดคือ เส้นทางสามารถมีได้เพียงส่วนเดียวเท่านั้น (เพื่อให้พื้นที่เชื่อมต่อกันอย่างง่ายๆ ) และพื้นที่สามารถเติมสีได้เฉพาะสีเดียวกันเท่านั้น PostScript ระดับ 1 รองรับรูปแบบการเรียงต่อกัน และ PostScript 3 รองรับการแรเงาแบบ Gouraud
ความพร้อมใช้งานและการใช้งาน
MetaPost ถูกแจกจ่ายมาพร้อมกับการแจกจ่ายTeXและ Metafont หลายเวอร์ชัน ตัวอย่างเช่น มีรวมอยู่ในเวอร์ชัน MiKTeXและTeX Live
ไฟล์ Postscript ที่ถูกห่อหุ้มซึ่งสร้างโดย Metapost สามารถนำไปรวมไว้ในเอกสารLaTeX , ConTeXtและTeX ได้โดยใช้คำสั่งการรวมกราฟิกมาตรฐาน นอกจากนี้ เอาต์พุตของไฟล์ Postscript ที่ถูกห่อหุ้มยังสามารถใช้กับเอนจิน PDFTeX เพื่อสร้าง ไฟล์ PDFได้โดยตรงความสามารถนี้ถูกนำไปใช้ใน ConTeXt และในแพ็คเกจกราฟิก LaTeX และสามารถใช้งานได้จาก TeX ทั่วไปผ่านไฟล์มาโคร supp-pdf.tex
ConTeXt และLuaTeXรองรับการแทรกโค้ด MetaPost ลงในไฟล์อินพุต การแทรกโค้ด MetaPost ใน LaTeX ก็สามารถทำได้โดยใช้แพ็กเกจ LaTeX เช่น gmpหรือmpgraphics
ตัวอย่าง
นี่คือไฟล์เดียวตัวอย่าง.mpซึ่งเมื่อประมวลผลโดยตัวแปลภาษา MetaPost (ผ่านคำสั่งmpostบนLinux ) จะได้ไฟล์ eps สามไฟล์ตัวอย่างที่ 1,ตัวอย่างที่ 2,ตัวอย่างที่ 3ภาพเหล่านี้แสดงอยู่ทางด้านขวา

แปลงพิกัดหน้า; พิกัดหน้า:= เอกลักษณ์ปรับขนาด10 มม. เลื่อน( 100 มม. , 150 มม. ); เริ่มรูป( 1 ) เติม(( 0 , 0 ) -- ( 2 , 0 ) -- ( 2 , 1 ) -- ( 1 , 1 ) -- ( 1 , 2 ) -- ( 0 , 2 ) -- วนซ้ำ) พิกัด หน้าที่แปลงแล้วด้วยสีเขียว; วาด(( 2 , 0 )..( 2 , 1 )..( 1 , 1 )..( 1 , 2 )..( 0 , 2 )) พิกัด หน้าที่แปลงแล้ว; วาดลูกศร(( 0 , 0 ) -- ( 2 , 2 )) พิกัด หน้าที่แปลงแล้ว; จบรูป; beginfig ( 2 ) draw ( for i = 0 upto 7 : dir ( 135 i ) -- endfor cycle ) transformed pagecoords ; endfig ; pagecoords := identity scaled 15 mm shifted ( 100 mm , 150 mm ); beginfig ( 3 ); % ประกาศเส้นทางที่จะใช้path p [], p [] t ; % ตั้งค่าจุดโดยกำหนดความสัมพันธ์z1 =( 0 , 0 ); z2 = z1 + 2 up ; z3 = z1 + whatever * dir ( 60 )= z2 + whatever* dir ( - 50 ); z4 = z3 + ( - 1.5 , - . 5 ); z5 = z1 + dir ( 135 ); z0 = whatever [ z1 , z2 ]= whatever [ z3 , z4 ]; % ตั้งค่าเส้นทางp0 = fullcircle yscaled . 5 rotated 45 shifted z0 ; p1 = z2 --- z4 .. z0 .. z3 --- z1 ; p2 = p1 cutbefore p0 cutafter p0 ; p3 = p0 cutbefore p1 cutafter p1 ; p4 = p2 --- p3 --- cycle ; % กำหนดเวอร์ชันที่แปลงแล้วของเส้นทางและจุดfor i = 0 upto 4 : p [ i ] t = p [ i ] transformed pagecoords ; endfor for i = 0 upto 5 : z [ i ] t = z [ i ] transformed pagecoords ; endfor % ทำการวาดภาพบางอย่างfill p4t withcolor ( 1 , 1 , 0.2 ); draw z1t --- z2t withcolor . 5 white ; draw z3t --- z4t withcolor . 5 white ; pickup pencircle ; draw p0t dashed withdots scaled . 3 ; draw p1t dashed evenly ; draw p2t withcolor blue ; draw p3t withcolor red; label.lrt ( btex $ z_0 $ etex , z0t ) ; label.llft ( btex $ z_1 $ etex , z1t ) ; label.top ( btex $ z_2 $ etex , z2t ) ; label.rt ( btex $ z_3 $ etex , z3t ) ; label.llft ( btex $ z_4 $ etex , z4t ) ; for i = 0 upto 4 : drawdot z [ i ] t withpen pencircle scaled 2 ; endfor endfig ; byeไฟล์ eps ทั้งสามไฟล์ที่ได้ สามารถนำไปใช้ในTeX ได้ โดยใช้ คำสั่ง ของLaTeX\includegraphics , ConTeXt , \externalfigurePlain TeX \epsfboxหรือ (ใน Plain pdftex) \convertMPtoPDFโดยใช้คำสั่งจากซัพพ์-pdf.texหากต้องการดูหรือพิมพ์ไดอะแกรมที่สาม จำเป็นต้องเพิ่มส่วนนี้ เนื่องจากฟอนต์ TeX ( Computer Modern ) ไม่ได้รวมอยู่ในไฟล์ eps ที่สร้างโดย MetaPost โดยค่าเริ่มต้น
ดูเพิ่มเติม
ลิงก์ภายนอก
- กลุ่มผู้ใช้ TeX ( TUG ) http://www.tug.org/มีหน้าเว็บที่เกี่ยวกับ MetaPost โดยเฉพาะ: http://www.tug.org/metapost.html