บทความทั้งหมด

Markdown: ทำไมจึงกลายเป็นมาตรฐานของเอกสาร

ภาษาไทยไม่มีการเว้นวรรคระหว่างคำในประโยคเดียวกัน ขณะที่กฎ CommonMark สำหรับเครื่องหมายเน้นข้อความ (*, _) ใช้ช่องว่างและเครื่องหมายวรรคตอนเป็นตัวตัดสินว่าเครื่องหมายนั้นเปิดหรือปิดการเน้น — เมื่อไม่มีช่องว่างให้ยึด ผลลัพธ์การแปลงข้อความไทยจึงคาดเดายากกว่าภาษาอังกฤษ

ไวยากรณ์พื้นฐาน

  • # หัวข้อ — หัวข้อในระดับต่าง ๆ ตามจำนวนอักขระ #
  • **ตัวหนา** และ *ตัวเอียง* — การเน้นข้อความ
  • [ข้อความ](url) — ลิงก์
  • - รายการ หรือ 1. รายการ — รายการแบบจุดและแบบตัวเลข
  • ``` — บล็อกโค้ดพร้อมการเน้นไวยากรณ์ตามชื่อภาษา

ทำไมการเน้นข้อความไทยจึงพฤติกรรมต่างจากภาษาอังกฤษ

CommonMark ตัดสินว่าเครื่องหมาย * เป็น "left-flanking" หรือ "right-flanking" โดยดูจากอักขระที่อยู่ติดกัน — ถ้าติดกับช่องว่างหรือเครื่องหมายวรรคตอนจะถือว่าเป็นขอบเขตของคำ ภาษาอังกฤษเว้นวรรคระหว่างคำเสมอ กฎนี้จึงทำงานตรงไปตรงมา แต่ภาษาไทยเขียนคำติดกันเป็นพืดโดยไม่มีการเว้นวรรค ดังนั้น *คำ*ทดสอบ*กลาง*ประโยค ที่วางกลางข้อความไทยล้วนอาจไม่ถูกตีความเป็นการเน้นแยกกันตามที่ผู้เขียนคาดหวัง เพราะไม่มีขอบเขตคำที่ชัดเจนให้ parser ยึดเหมือนในประโยคภาษาอังกฤษ

Markdown ดั้งเดิมไม่เคยนิยามตารางไว้

Markdown ที่ John Gruber เผยแพร่ในปี 2004 เป็นเพียงคำอธิบายแบบร้อยแก้ว ไม่ใช่ไวยากรณ์ที่เป็นทางการ และไม่ได้นิยามตาราง ข้อความขีดฆ่า หรือบล็อกโค้ดที่ระบุภาษาไว้เลย นานนับสิบปีที่แต่ละ implementation ตีความส่วนที่คลุมเครือของต้นฉบับไปคนละทาง จนกระทั่งปี 2014 CommonMark เข้ามากำหนดไวยากรณ์ที่แม่นยำ และ GitHub Flavored Markdown (GFM) จึงเพิ่มตารางกับ task list ที่ทุกวันนี้กลายเป็นเรื่องปกติใน README ทุกไฟล์

การแปลงเป็น HTML และกลับกัน

การแปลง Markdown → HTML ตรงไปตรงมา: ตัว parser จดจำโครงสร้างไวยากรณ์และสร้างแท็กที่สอดคล้องกัน การแปลงย้อนกลับ HTML → Markdown ยากกว่า เพราะ HTML รองรับตัวเลือกการจัดรูปแบบมากกว่า Markdown พื้นฐานมาก ดังนั้นมาร์กอัปบางส่วน (ตารางซับซ้อน สไตล์ที่ซ้อนกัน) อาจถูกทำให้ง่ายขึ้นหรือสูญหาย

ทำไมต้องใช้สิ่งนี้

  • ดูตัวอย่างอย่างรวดเร็วว่าไฟล์ Markdown จะแสดงผลอย่างไรโดยไม่ต้องเผยแพร่
  • แปลงเนื้อหาหน้าเว็บหรือเอกสารเป็น Markdown เพื่อเก็บในระบบควบคุมเวอร์ชัน
  • เตรียมเนื้อหา HTML สำหรับแทรกลงในแอปที่รับเฉพาะ Markdown
ลองใช้เครื่องมือ