GREP เพื่อหา Paragraph ณ จุดที่ควรตัด

In Trickism, published on Mar 02, 2010.
Mainly about . 0 comments.

ผมทดลอง Copy เอกสารออกจากไฟล์ PDF ไฟล์หนึ่งและ Paste ลงใน InDesign เพื่อจะจัดหน้าให้สะดวกสำหรับการแปลเอกสาร (ใช้วิธีแบ่งหนึ่งหน้าเป็นสองคอลัมน์ เอกสารภาษาอังกฤษอยู่คอลัมน์ซ้าย และส่วนที่ผมจะพิมพ์เพื่อแปลจะอยู่ทางขวา) แต่หลังจาก Paste ข้อความลงในโปรแกรมแล้วก็ต้องพบกับปัญหาข้อหนึ่ง นั่นคือ เอกสารถูกตัดออกเป็นบรรทัดย่อยๆ ตามขนาดของคอลัมน์ที่ปรากฎในเอกสาร PDF – ข้อความแต่ละบรรทัดไม่ได้ไหลรวมกันเป็นย่อหน้าอย่างที่ควรจะเป็น

การแก้ปัญหา

  1. ผมทดลองจับแพทเทิร์นของบรรทัดที่ตัดผิด และพบว่าบรรทัดที่ไม่ใช่จบย่อหน้าจริงๆ นั้นมีลักษณะหนึ่งที่เหมือนกัน นั่นคือ “สิ่งที่อยู่ก่อนหน้า End of Paragraph นั้น ไม่ใช่ Full Stop” เสมอ
  2. หากแพทเทิร์นในข้อที่ 1. ถูก นั่นแปลว่า “ถ้าผมสามารถแยกแยะ End of Paragraph ทั้งหมดที่ไม่ได้มีจุด Full Stop นำมาก่อนหน้า ออกจากที่เหลือได้ ผมจะสามารถลบจุดที่ผิดเหล่านั้นออกได้ทั้งหมด)
  3. หลักการอ้างอิงสำหรับข้อ 2. คือ ค้นหา End of Paragraph ที่นำด้วย “อะไรก็ตามที่ไม่ใช่ Full Stop” > แทนค่าด้วย “อะไรก็ตามที่ไม่ใช่ Full Stop นั้นๆ บวก em space หนึ่งช่อง (ที่เราเอามาแทน End of Paragraph ที่มันมีผิดที่)” > ผลที่ได้คือ บรรทัดที่ตัดผิดเหล่านั้นจะถูกนำมาเรียงต่อกันแทน ส่วน End of Paragraph ที่นำหน้าด้วยจุด Full Stop ก็จะยังคงเดิมไม่เสียหาย
  4. ค้นหาสูตร GREP สำหรับการแก้ปัญหานี้ – หลังจากทดลองแล้วได้ความว่า คำสั่งในช่อง “Find what:” ต้องเขียนว่า ([^\.])(\r) มีความหมายว่า ให้ตรวจหาสองสิ่ง (สองกลุ่ม) ให้เจอตามเงื่อนไข เงื่อนไขแรกคือต้องเจออะไรก็ตามที่ไม่ใช่ \. ซึ่งหมายถึงจุด Full Stop จากนั้นต้องเจอ \r ซึ่งหมายถึง End of Paragraph มาคู่กัน
  5. ขั้นต่อไป ค้นหาคำสั่งในช่อง  “Change to:” ได้ความว่า ให้เขียนว่า “$1 ” (โปรดสังเกตว่ามีเคาะวรรคหนึ่งครั้ง) ซึ่งหมายความว่า “จากสองสิ่ง (สองกลุ่ม) ในข้อ 4. ให้เปลี่ยนค่าเป็น เหลือแต่กลุ่มที่หนึ่ง ($1 ซึ่งหมายถึงอะไรก็ตามที่ไม่ใช่ Full Stop นั่นเอง) แล้วต่อด้วยเคาะวรรคธรรมดาหนึ่งครั้ง

อย่างไรก็ตาม สูตรนี้ไม่ได้ถูกต้องสำหรับเอกสารทั้งชิ้นเสียทีเดียว ในบางกรณี สิ่งที่ตามหลัง Colon (เครื่องหมาย :) ก็หมายถึงการจบบรรทัดเหมือนกัน ถ้าจะให้ครบถ้วนจะต้องเข้าไปแก้สูตร GREP เพิ่มเติมอีก แต่สำหรับกรณีนี้ ถือว่าหน้าต่างๆ จัดได้ถูกตามที่อยากได้มากขึ้น (ที่ควรอยู่เป็น Paragraph เดียวกันก็ไม่โดนตัดบรรทัดแยกโดยไม่จำเป็นแล้ว) ผมจึงหยุดการแก้ปัญหาแต่เพียงเท่านี้

Leave a comment