กลับไปหน้าบทความ

อ่าน 4 นาที

เมตาโพสต์

MetaPost หมายถึงทั้ง ภาษาโปรแกรม และ ตัวแปล ภาษาโปรแกรม MetaPost ทั้งสองอย่างนี้พัฒนามาจาก ภาษาและตัวแปลภาษา Metafont ของ Donald Knuth MetaPost...

เมตาโพสต์

( เรียนรู้วิธีและเวลาในการลบข้อความนี้ )
เมตาโพสต์
กระบวนทัศน์คำสั่ง , การเรียงพิมพ์
ออกแบบโดยจอห์น ดี. ฮอบบี้
นักพัฒนาทาโก้ ฮุกวอเตอร์, ลุยจิ สการ์โซ
ปรากฏครั้งแรกพ.ศ. 2537 (1994)
เวอร์ชันเสถียร
1.8 / 17 มิถุนายน 2556 (2013-06-17)
รุ่นทดลองใช้งาน
2.0rc2 / 19 กุมภาพันธ์ 2018 (2018-02-19)
วินัยในการพิมพ์เป็ด , คล่องแคล่ว , แข็งแกร่ง
โอเอสข้ามแพลตฟอร์ม
ใบอนุญาตแอลจีพีแอล
เว็บไซต์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
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=MetaPost&oldid=1340150049 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ เมตาโพสต์

MetaPost หมายถึงทั้ง ภาษาโปรแกรม และ ตัวแปล ภาษาโปรแกรม MetaPost ทั้งสองอย่างนี้พัฒนามาจาก ภาษาและตัวแปลภาษา Metafont ของ Donald Knuth MetaPost...

ความพร้อมใช้งานและการใช้งาน

MetaPost ถูกแจกจ่ายมาพร้อมกับการแจกจ่าย TeX และ Metafont หลายเวอร์ชัน ตัวอย่างเช่น มีรวมอยู่ในเวอร์ชัน MiKTeX และ TeX Live

ตัวอย่าง

นี่คือไฟล์เดียว ตัวอย่าง.mp ซึ่งเมื่อประมวลผลโดยตัวแปลภาษา MetaPost (ผ่านคำสั่ง mpost บน Linux ) จะได้ไฟล์ eps สามไฟล์ ตัวอย่างที่ 1 , ตัวอย่างที่ 2 , ตัวอย่างที่ 3 ภาพเหล่านี้แสดงอยู่ทางด้านขวา

ดูเพิ่มเติม

PSTricks พีจีเอฟ/ทิกซี เมตาไทป์ 1 เส้นกำกับ