OpenOffice.org 2.4.0 workaround สำหรับ bug สระอำ – แบบใหม่

ต่อจาก ตอนที่แล้ว .. ระหว่างยืนสระผมอยู่ในห้องน้ำ นึกได้ว่าแค่แทรก word break ตู "Find & Replace …" เลยก็ได้นี่หว่า ไม่เห็นต้องมานั่งจิ้มๆ CTRL+/ ทีละตัวๆ เลย :P .. ดังนั้นวิธีการ workaround สำหรับ bug สระอำใน OO.o 2.4.0/2.4.1 อย่างง่ายๆ คือ

  1. เข้าเมนู Edit – Find & Replace หรือกด CTRL+F ก็ได้
  2. Find: สระอำ
  3. Replace: สระอำตามด้วย non-printable no-width word break character
  4. กด Replace All ตู้มเดียว จบ !

มี trick นิดหน่อย ตอนกรอกช่อง Replace จะกด CTRL+/ ใน text box ไม่ได้ .. ให้ไปกด CTRL+/ ใน document ก่อนแล้วค่อยก๊อปตัว word break สีเทาๆ มาใส่ใน text box ..

ถ้าวันหลัง OO.o fix bug ตัวนี้แล้ว จะเอาตัว word break ออกก็แค่ Find ตัว word break ไม่ต้องกรอกช่อง Replace แล้วกด Replace All ตัว word break ที่แทรกๆ อยู่ก็จะหายไป :)

ควรทราบไว้ว่าวิธีนี้สะดวกก็จริงแต่มันมีผลข้างเคียงนิดหน่อย เพราะการแทรก word break หลังสระอำดื้อๆ อาจจะทำให้มันไป break กลางคำ เช่นคำว่า "สำคัญ" มันจะ break เป็นคำว่า "สำ" กับ "คัญ" ถ้าบังเอิญคำนี้ไปตกตรงตำแหน่งท้ายบรรทัดพอดี อาจทำให้ "สำ" เป็นคำสุดท้ายในบรรทัดในขณะที่ "คัญ" โดนปัดลงมาขึ้นเป็นบรรทัดใหม่ มันก็จะผิดหลักภาษาไทย .. ผมลองเขียนเป็น regex ให้หาคำที่มีสระอำดูแล้ว (OO.o Find & Replace สนับสนุน regex มาตั้งนานแล้วนะ รู้เปล่า ?!) กะว่าถ้ามันทำได้ก็จะแทรก word break หลังคำแทนที่จะหลังสระอำดื้อๆ แต่ดูเหมือนว่า regex มัน match เป็นคำๆ ได้เฉพาะภาษาอังกฤษ ใช้กับภาษาไทยไม่ได้อะ ลองผิดลองถูกจนขี้เกียจลองแล้ว ใช้วิธีแทรกหลังสระอำดื้อๆ ไปก่อนละกัน … :P

ใครเขียน regex คล่องๆ จะลองเขียนดูหน่อยก็ดีนะครับ โจทย์คือเขียน regex ใน OO.o 2.4 ให้ match คำภาษาไทยที่มีสระอำประกอบในคำ .. เน้นว่าต้องได้เป็นคำๆ ที่ถูกตามหลักภาษาไทยเลย ไม่เอาเป็นประโยค หรือทั้งย่อหน้า .. ถ้าทำได้สำเร็จ ประกาศความสำเร็จได้ในห้อง #tlwg @ irc.linux.in.th นะครับ :)