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

อ่าน 4 นาที

การพิมพ์แบบสวยงาม

การจัดรูปแบบข้อความ ให้สวยงาม (หรือ prettyprinting ) คือการประยุกต์ใช้รูปแบบ การจัด สไตล์ต่างๆกับ ไฟล์ข้อความ เช่น โค้ดต้นฉบับ มา ร์ กอัป และเนื้อหาประเภทอื่นๆ ที่คล้ายกัน...

การพิมพ์แบบสวยงาม

การจัดรูปแบบข้อความ ให้สวยงาม (หรือprettyprinting ) คือการประยุกต์ใช้รูปแบบ การจัดสไตล์ต่างๆกับไฟล์ข้อความเช่นโค้ดต้นฉบับ มา ร์กอัปและเนื้อหาประเภทอื่นๆ ที่คล้ายกัน รูปแบบการจัดสไตล์เหล่านี้อาจรวมถึงการใช้รูปแบบการเว้นวรรค การใช้สีและแบบอักษรที่แตกต่างกันเพื่อเน้นองค์ประกอบทางไวยากรณ์ของโค้ดต้นฉบับ หรือการปรับขนาดเพื่อให้เนื้อหาอ่านและเข้าใจง่ายขึ้น โปรแกรมจัดรูปแบบโค้ดให้สวยงามบางครั้งเรียกว่าโปรแกรมจัดรูปแบบโค้ดหรือโปรแกรม ตกแต่ง โค้ด

การจัดรูปแบบคณิตศาสตร์ให้สวยงาม

นิพจน์คณิตศาสตร์ที่พิมพ์แล้ว

การจัดรูปแบบการแสดงผล ให้สวยงาม (Pretty-printing) โดยทั่วไปหมายถึงการแสดงผลนิพจน์ทางคณิตศาสตร์ในลักษณะเดียวกับการจัดพิมพ์อย่างมืออาชีพ ตัวอย่างเช่น ในระบบพีชคณิตคอมพิวเตอร์เช่นMaximaหรือMathematicaระบบอาจแสดงผลลัพธ์ในลักษณะ"x ^ 2 + 3 * x"เช่น" " เครื่องคิดเลขกราฟิก บางรุ่นสามารถทำการพิมพ์แบบสวยงามได้ เครื่องคิดเลขดังกล่าวได้แก่Casio ซีรี่ส์ 9860 , HP-49/50 ซีรี่ส์และHP Prime , TI-84 Plus , TI-89 , TI-NspireและTI-83 Plus พร้อม ส่วนเสริมPrettyPt [ 1 ] ในทำนองเดียวกัน TI-84 Plusพร้อมส่วนเสริม PrettPt หรือระบบปฏิบัติการที่เปิดใช้งาน "MathPrint" นอกจากนี้ เครื่องคิดเลขวิทยาศาสตร์รุ่นใหม่จำนวนมากยังมาพร้อมกับหน้าจอดอทเมทริกซ์ที่สามารถพิมพ์แบบสวยงามได้ เช่น Casio ซีรี่ส์ FX-ES (Natural Display), Sharp ซีรี่ส์ EL-W ( WriteView), HP SmartCalc 300s , TI-30XBและNumworks

โปรแกรมจัดรูปแบบข้อความหลายโปรแกรมสามารถจัดพิมพ์สูตรคณิตศาสตร์ได้เช่นกัน: TeX ได้รับการพัฒนาขึ้นโดยเฉพาะสำหรับ การจัดพิมพ์สูตรคณิตศาสตร์ คุณภาพสูง

การจัดรูปแบบการแสดงผลมาร์กอัปและโค้ดแบบแท็กให้สวยงาม

โค้ด HTML ที่จัดรูปแบบให้สวยงามเพื่อแสดงความสัมพันธ์เชิงลำดับชั้นขององค์ประกอบต่างๆ (เรียกว่าแท็ก) ได้ดียิ่งขึ้น

การจัดรูปแบบการแสดงผลให้สวยงามในภาษามาร์กอัปมักเกี่ยวข้องกับการเว้นวรรคของแท็กและเนื้อหาข้อความเพื่อกำหนดลำดับชั้นและการซ้อนกันของข้อมูล แม้ว่าโครงสร้างทางไวยากรณ์ของภาษาที่ใช้แท็กจะไม่แตกต่างกันมากนัก แต่การเว้นวรรคอาจแตกต่างกันอย่างมาก ขึ้นอยู่กับวิธีการตีความภาษามาร์กอัปหรือข้อมูลที่ภาษานั้นอธิบาย

ในMathMLอักขระเว้นวรรคไม่สะท้อนข้อมูล ความหมาย หรือไวยากรณ์ที่เกินกว่าที่จำเป็นตามไวยากรณ์XML ใน HTMLอักขระเว้นวรรคระหว่างแท็กถือเป็นข้อความและจะถูกแยกวิเคราะห์เป็นโหนดข้อความในผลลัพธ์ที่แยกวิเคราะห์[ 2 ]ในขณะที่การเยื้องอาจถูกนำไปใช้อย่างกว้างขวางในเอกสาร MathML ต้องใช้ความระมัดระวังเพิ่มเติมในการจัดรูปแบบเอกสาร HTML ให้สวยงามเพื่อให้แน่ใจว่าไม่มีการสร้างหรือทำลายโหนดข้อความเพิ่มเติมในบริเวณใกล้เคียงกับเนื้อหาหรือองค์ประกอบแท็กที่สะท้อนเนื้อหา ความแตกต่างในความซับซ้อนนี้ไม่ใช่เรื่องเล็กน้อยจากมุมมองของการดำเนินการจัดรูปแบบอัตโนมัติที่ไม่จำเป็นต้องมีกฎพิเศษหรือกรณีพิเศษใด ๆ เช่นเดียวกับในตัวอย่าง MathML ที่ง่ายกว่า ตัวอย่าง HTML อาจต้องใช้อัลกอริทึมที่สัมพันธ์กันหลายชุดเพื่อพิจารณารูปแบบต่างๆ ขององค์ประกอบแท็กและเนื้อหาที่สอดคล้องกับรูปแบบที่เป็นเอกภาพและสอดคล้องกันในการใช้งานในหลายๆ กรณี ดังที่เห็นได้จากส่วนประกอบแอปพลิเคชัน markup.ts [ 3 ]ที่ใช้ในการจัดรูปแบบ HTML, XML และเทคโนโลยีที่เกี่ยวข้องสำหรับเครื่องมือ Pretty Diff

การจัดรูปแบบซอร์สโค้ดของโปรแกรม

โปรแกรมเมอร์ได้รับการสอนให้ปฏิบัติตามรูปแบบการเขียนโค้ดเพื่อ ให้โค้ดอ่านและเข้าใจง่ายขึ้น รูปแบบการเขียนโค้ดมีความหลากหลาย ครอบคลุมเรื่องต่างๆ เช่นการเว้นวรรคการเว้นวรรครอบคำหลักและเครื่องหมายวรรคตอน และตำแหน่งของวงเล็บปีกกา

มีเครื่องมือที่ใช้ในการจัดรูปแบบ (หรือจัดรูปแบบใหม่) โค้ดโดยอัตโนมัติ เครื่องมือเหล่านี้เรียกว่า โปรแกรมจัดรูปแบบโค้ด หรือโปรแกรมย่อหน้าโค้ดเครื่องมือเหล่านี้จะแปลงโค้ดต้นฉบับจากรูปแบบหนึ่งไปเป็นอีกรูปแบบหนึ่ง การใช้งานเครื่องมือเหล่านี้ค่อนข้างตรงไปตรงมา เนื่องจากไวยากรณ์ของภาษาโปรแกรมนั้นไม่คลุมเครือ เครื่องมือจะอ่านโค้ดต้นฉบับ ตรวจสอบโครงสร้างส่วนประกอบของโค้ด (เช่น คำสั่งกำหนดค่า เงื่อนไข และลูป -- ดูการควบคุมการไหลของโปรแกรม) จากนั้นแสดงโค้ดต้นฉบับที่จัดรูปแบบตามสไตล์ที่ระบุไว้ในไฟล์การกำหนดค่า

โปรแกรมจัดรูปแบบโค้ดบางตัวเป็นแอปพลิเคชันแบบสแตนด์อโลน บางตัวถูกรวมเข้ากับโปรแกรมแก้ไขข้อความและสภาพแวดล้อมการพัฒนาแบบบูร ณา การ ตัวอย่างเช่น โปรแกรมแก้ไข Emacsมีการตั้งค่าเพื่อระบุภาษาการเขียนโปรแกรม ("โหมดภาษา Emacs") และเพื่อย่อหน้าบล็อกโค้ดตามนั้น[ 4 ]

เอชแอล

ตัวจัดรูปแบบ Lisp

ตัวอย่างแรกๆ ของการจัดรูปแบบการแสดงผลที่สวยงามคือ โปรแกรม "GRINDEF" ( หรือ 'grind function') ของ Bill Gosper ( ประมาณปี 1967) ซึ่งใช้การค้นหาแบบผสมผสานพร้อมการตัดแต่งเพื่อจัดรูปแบบ โปรแกรม LISPเวอร์ชันแรกๆ ทำงานบนรูปแบบที่สามารถเรียกใช้งานได้ (โครงสร้างรายการ) ของโปรแกรม Lisp และไม่สนใจความหมายพิเศษของฟังก์ชันต่างๆ เวอร์ชันต่อมามีข้อกำหนดการอ่านพิเศษสำหรับการรวมความคิดเห็นที่ไม่สามารถเรียกใช้งานได้ และสำหรับการรักษามาโครที่อ่านได้ ในรูปแบบที่ไม่ขยาย นอกจาก นี้ยังอนุญาตให้มีข้อกำหนดการเยื้องพิเศษสำหรับฟังก์ชันพิเศษ เช่น[ 5 ] [ 6 ]คำว่า "grind" ถูกใช้ในบางวงการของ Lisp เป็นคำพ้องความหมายสำหรับการจัดรูปแบบการแสดงผลที่สวยงาม[ 7 ]if

กฎรูปแบบโครงการ

โครงการ ซอฟต์แวร์เสรีหลายโครงการได้กำหนดกฎสำหรับการจัดวางโค้ด กฎที่เป็นที่รู้จักกันอย่างแพร่หลายที่สุดคือการจัดรูปแบบGNU [ 8 ] และรูปแบบ BSD [ 9 ] ความแตกต่างที่สำคัญที่สุดระหว่างทั้งสองคือตำแหน่งของวงเล็บปีกกา: ในรูปแบบ GNU วงเล็บปีกกาแต่ละอันจะอยู่บนบรรทัดเดียว และวงเล็บปีกกาที่ตรงกัน (วงเล็บปีกกาเปิดและปิด) จะถูกเยื้องไปที่ระดับเดียวกัน รูปแบบ BSD จะวางวงเล็บปีกกาเปิดไว้ที่ท้ายบรรทัดของโค้ด และอนุญาตให้วงเล็บปีกกาปิดตามด้วย คำหลัก elseขนาดของการเยื้องและตำแหน่งของช่องว่างก็แตกต่างกันเช่นกัน

ตัวอย่างการจัดรูปแบบและตกแต่งโค้ดให้สวยงาม

ตัวอย่างต่อไปนี้แสดงโครงสร้างภาษา C ทั่วไปบางส่วน และวิธี การที่กฎ การเว้นวรรค แบบต่างๆ จัดรูปแบบโครงสร้างเหล่านั้น หากไม่มีการจัดรูปแบบใดๆ เลย จะมีลักษณะดังนี้:

int foo ( int k ){ if ( k < 1 || k > 2 ){ printf ( "นอกช่วง\n " ); printf ( "ฟังก์ชันนี้ต้องการค่า 1 หรือ 2 \n " );} else { printf ( "กำลังสลับ\n " ); switch ( k ){ case 1 : printf ( "1 \n " ); break ; case 2 : printf ( "2 \n " ); break ;}}}

โปรแกรมจัดย่อหน้าของ GNUจะสร้างผลลัพธ์ดังต่อไปนี้เมื่อถูกสั่งให้จัดย่อหน้าตามกฎของ GNU :

int foo ( int k ) { if ( k < 1 || k > 2 ) { printf ( "นอกช่วง\n " ); printf ( "ฟังก์ชันนี้ต้องการค่า 1 หรือ 2 \n " ); } else { printf ( "กำลังสลับ\n " ); switch ( k ) { case 1 : printf ( "1 \n " ); break ; case 2 : printf ( "2 \n " ); break ; } } }

เมื่อจัดรูปแบบตามกฎของ BSD จะได้ผลลัพธ์ดังนี้:

int foo ( int k ) { if ( k < 1 || k > 2 ) { printf ( "นอกช่วง\n " ); printf ( "ฟังก์ชันนี้ต้องการค่า 1 หรือ 2 \n " ); } else { printf ( "กำลังสลับ\n " ); switch ( k ) { case 1 : printf ( "1 \n " ); break ; case 2 : printf ( "2 \n " ); break ; } } }

ดูเพิ่มเติม

แนวคิดที่เกี่ยวข้อง

  • Elastic tabstopคือคุณสมบัติของโปรแกรมแก้ไขโค้ดหลายโปรแกรมที่ตรวจจับและรักษาการเยื้องให้ตรงแนว
  • การย่อขนาดโค้ด (Minification)คือการทำให้โค้ดต้นฉบับมีขนาดกะทัดรัด แม้ว่าจะทำให้มนุษย์เข้าใจได้ยากขึ้นก็ตาม
  • การทำให้โค้ด ซับซ้อน (Obfuscation)คือการจงใจทำให้โค้ดต้นฉบับเข้าใจยากมากสำหรับมนุษย์ โดยเฉพาะอย่างยิ่งเมื่อโค้ดมีความซับซ้อนมากขึ้น

สาธารณูปโภค

  • enscriptคือโปรแกรมแปลงข้อความธรรมดาเป็น PostScript ที่มีคุณสมบัติการจัดรูปแบบข้อความให้สวยงาม
  • อัลกอริทึม 268: บรรณาธิการภาษาอ้างอิง ALGOL 60 William M. McKeeman : Commun. ACM 8(11): 667-668 (1965)
  • lgrind , เครือข่ายเก็บข้อมูล TEX ที่ครอบคลุม
  • NEATER2: ตัวจัดรูปแบบข้อความต้นฉบับ PL/I ใหม่Kenneth Conrow, Ronald G. Smith : Commun. ACM 13(11): 669-675 (1970)
  • SOAP - Simplify Obscure Algol Programs R. S. Scowen, D. Allin, AL Hillman, M. Shimell : รายงานหน่วยคอมพิวเตอร์กลางของห้องปฏิบัติการฟิสิกส์แห่งชาติCCU6 (เมษายน 1969) ประกอบด้วยรายการโค้ดต้นฉบับ SOAP ที่จัดรูปแบบแล้ว
    • SOAP - โปรแกรมที่จัดทำเอกสารและแก้ไขโปรแกรม ALGOL 60 RS Scowen, D. Allin, AL Hillman, M. Shimell : Comput. J. 14(2): 133-135 (1971)
    • โค้ดต้นฉบับ SOAP จาก KDF9
  • คู่มือผู้ใช้ SOAP (สำหรับEdinburgh IMP ) ปีเตอร์ ซัลเคลด์ โรเบิร์ตสัน (1976)
    • ซอร์สโค้ด SOAPใน/สำหรับIMP9
  • Soap80: โปรแกรมสำหรับจัดรูปแบบโปรแกรมต้นฉบับ IMP80 JM Murison, ศูนย์คอมพิวเตอร์ประจำภูมิภาคเอดินบะระ (1980)
    • โค้ดต้นฉบับ SOAPสำหรับIMP80 โดย E. N. Gregory, มหาวิทยาลัย Kent at Canterbury; และ Peter D. Stephens, ศูนย์คอมพิวเตอร์ประจำภูมิภาคเอดินบะระ
  • PRETTYP.PAS โปรแกรมจัดรูปแบบการแสดงผลภาษา Pascal รุ่นแรกๆโดย Ledgard และคณะ
  • ปาสคาลกับสไตล์ (1979)
  • สไตล์(9)แนวทางสไตล์ FreeBSD
  • vgrind , โครงการมรดกตกทอด [ยูนิก]
  • การจัดรูปแบบซอร์สโค้ดของคุณตามแนวทางของ GNU
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Pretty-printing&oldid=1327299802 "

สรุปเนื้อหา

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

ข้อมูลสำคัญเกี่ยวกับ การพิมพ์แบบสวยงาม

การจัดรูปแบบข้อความ ให้สวยงาม (หรือ prettyprinting ) คือการประยุกต์ใช้รูปแบบ การจัด สไตล์ต่างๆกับ ไฟล์ข้อความ เช่น โค้ดต้นฉบับ มา ร์ กอัป และเนื้อหาประเภทอื่นๆ ที่คล้ายกัน...

การจัดรูปแบบคณิตศาสตร์ให้สวยงาม

การจัดรูปแบบการแสดงผล ให้สวยงาม (Pretty-printing) โดยทั่วไปหมายถึงการแสดง ผลนิพจน์ทางคณิตศาสตร์ ในลักษณะเดียวกับการ จัดพิมพ์ อย่างมืออาชีพ ตัวอย่างเช่น ใน ระบบพีชคณิตคอมพิวเตอร์ เช่น Maxima หรือ Mathematica ระบบอาจแสดงผลลัพธ์ในลักษณะ " x ^ 2 + 3 * x " เช่น "...

การจัดรูปแบบการแสดงผลมาร์กอัปและโค้ดแบบแท็กให้สวยงาม

การจัดรูปแบบการแสดงผลให้สวยงามในภาษามาร์กอัปมักเกี่ยวข้องกับ การเว้นวรรค ของแท็กและเนื้อหาข้อความเพื่อกำหนดลำดับชั้นและการซ้อนกันของข้อมูล แม้ว่าโครงสร้างทางไวยากรณ์ของภาษาที่ใช้แท็กจะไม่แตกต่างกันมากนัก แต่การเว้นวรรคอาจแตกต่างกันอย่างมาก...

การจัดรูปแบบซอร์สโค้ดของโปรแกรม

โปรแกรมเมอร์ได้รับการสอนให้ปฏิบัติตามรูปแบบการเขียน โค้ด เพื่อ ให้โค้ดอ่านและเข้าใจง่ายขึ้น รูปแบบการเขียนโค้ดมีความหลากหลาย ครอบคลุมเรื่องต่างๆ เช่น การเว้นวรรค การ เว้นวรรค รอบคำหลักและเครื่องหมายวรรคตอน และตำแหน่งของ วงเล็บ ปีกกา