LaTeX in Your Emails

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

สำหรับผู้ใช้ Thunderbird เป็นตัวอ่านอีเมล มีข่าวดีมาก ๆ คือ โปรแกรมตัวนี้มี Add-on ที่ชื่อ LaTeX It! ซึ่งสามารถทำงานได้เป็นอย่างดี ดังตัวอย่างในรูปข้างล่าง

จะเห็นว่าอีเมลที่ได้รับจากบน Yahoo จะมีสมการคณิตศาสตร์ (ในรูปไวยกรณ์คณิตศาสตร์ไม่ถูกต้อง) ที่สวยงานตามแบบฉบับของ LaTeX สำหรับวิธีการติดตั้งนั้นจำเป็นจะต้องมีโปรแกรมที่ต้องลงเพิ่มนอกจาก LaTeX Engine อย่าง MiKTeX หรือ TeXLive คือ

  • GhostScript
  • ImageMagick ซึ่งต้องเป็นเวอร์ชัน 32 บิต เท่านั้น (เราสามารถลงเวอร์ชัน 32 บิต แยกกันกับเวอร์ชัน 64 บิต ในกรณีที่ใช้ Windows 7 64 bit ได้ โดยที่ตัว 64 บิต ให้เป็นตัวเรียกใช้โดยปริยาย ส่วนโฟลเดอร์ที่ลง 32 บิต ก็ให้ตัว LaTeX It! ชี้ไปหา)

ในการติดตั้ง LaTeX It! นั้นให้เข้าไปที่เมนู Tools-> Add-ons ของ Thunderbird แล้วใช้คำค้นว่า LaTeX  แล้วก็เลือกติดตั้ง LaTeX It! จากนั้นก็ restart ตัวนกสายฟ้าใหม่เป็นอันได้ LaTeX It! มาใช้ ถ้ากด Write ก็จะมีไอคอนของ LaTeX It! ขึ้นมาให้เห็นแล้ว แต่ยังใช้งานไม่ได้ต้องตั้งค่าก่อน โดยการเข้าไปที่  Tools->Add-ons เหมือนเดิม แล้วเรียกแก้ Options ของ LaTeX It! ดังในรูป

สำหรับโฟลเดอร์ของ LaTeX และ dvips ก็อยู่ในโฟลเดอร์ที่ติดตั้ง MiKTeX ต่อด้วย \miktex\bin\latex.exe และ \miktex\bin\dvips.exe  ตามลำดับนะครับ ส่วน convert ก็จะอยู่ในโฟลเดอร์ที่ติดตั้ง Imagemagick นั่นแหละครับ หาได้ไม่ยาก  แค่นี้ก็สามารถใช้งานคำสั่งส่วนใหญ่ของ LaTeX ได้แล้ว ส่วนใครต้องการใช้ amsmath ก็ไปเพิ่มแพ็กเกจนี้เอาเองใน LaTeX template to use

เมื่อผ่านขั้นตอนนี้ไป เวลาต้องการเขียนสมการคณิตศาสตร์ก็ใส่คำสั่งของ LaTeX ไปได้เลย เสร็จแล้วก็กดไอคอนของ LaTeX It! มันก็จะแนบไฟล์รูปของสมการ (เป็น png) ให้อัตโนมัติ  พร้อมส่งครับ ข่าวร้ายคือต้องเฉพาะเมล์ที่อ่านผ่าน Thunderbird ได้เท่านั้นนะครับ Yahoo ต้องเสียเงินเพิ่ม, Gmail ได้, Hotmail ก็ได้ครับ

เปรียบมวย unicode edtiors for LaTeX

ในปัจจุบันบนวินโดวส์มีบรรณาธิกรณ์ (editor) อยู่สองตัวที่รองรับ unicode และสามารถทำ forward/inverse search ได้ ตัวหนึ่งคือ TeXWorks ส่วนอีกตัวคือ TeXMakerX ในบทความนี้จะเปรียบเทียบเฉพาะความสามารถในด้านที่กล่าวถึงเท่านั้น รูปร่างหน้าตาและความสามารถอื่น ๆ นั้น TeXWorks ยังคงเปรียบเทียบกับ TeXMakerX ไม่ได้  นั่นเป็นเพราะ TeXMakerX นั้นมีฐานมาจาก TeXMaker ซึ่งเป็นข้อได้เปรียบ

คราวนี้ TeXMakerX ได้ออกเวอร์ชัน 2.0  ซึ่งบรรจุความสามารถ forward/inverse search ทำให้ไม่จำเป็นต้องไปหา pdf viewer แบบ Sumatra PDF และเนื่องจากตัวมันรองรับ unicode ทำให้สามารถใช้งานกับภาษาไทยได้ดี โดยเฉพาะอย่างยิ่งกับ XeLaTeX ทำให้การแก้ไขงานที่เป็นภาษาไทยไม่ยุ่งยากอีกต่อไป  หน้าตาของ pdf viewer ที่ติดมากับ TeXMakerX นั้นเป็นแบบรูปข้างล่าง ก็มีฟังก์ชันในการดูไฟล์เอกสารครบถ้วน เพียงพอที่จะใช้ตรวจสอบเอกสาร

หลังจากที่เราได้เอกสาร pdf แล้ว เราสามารถจะเรียกดูเอกสารต้นฉบับได้โดยการเอาเมาส์ไปจิ้มตำแหน่งที่เราต้องการ แล้วคลิ๊กขวาเพื่อเลือกตัวเลือก Jump to Source ตัวบรรณาธิกรณ์ก็จะขึ้นมาตรงบรรทัดนั้นให้และแถมด้วยการเน้นข้อความในส่วนนั้นด้วยสีเหลือง  ส่วนการจะเรียกดูสิ่งที่ปรากฏใน pdf ไฟล์ จากบรรณาธิกรณ์ ก็ไปที่ตำแหน่งนั้น จะกด F7 หรือคลิ๊กที่ไอคอน Adobe ก็ได้

ตอนจะลองนะครับ สำหรับ TeXMakerX จำเป็นจะต้องตั้งค่าคำสั่งให้ถูกต้องด้วย สำหรับการใช้ XeLaTeX ก็ต้องไปแก้ อย่างในกรณีนี้ผมไม่ใช้ LaTeX แล้วผมก็แก้ให้เป็น XeLaTeX ดังนี้ครับ

xelatex  -synctex=1 -interaction=nonstopmode %.tex

ซึ่งหลังจากแก้ไขแล้ว ตัวโปรแกรมก็จะเรียกใช้ XeLaTeX แทน

สำหรับ TeXworks นั้นมีตัวเลือกสำหรับ XeLaTeX ให้อยู่แล้ว เรียกใช้ได้เลย ทุกอย่างแทบจะเหมือนกันกับ TeXMakerX ทั้งหมด เพียงแต่ในการทำ Forward/Inverse search นั้นจะต้องใช้เมาส์ซึ่งไม่สะดวกนัก อีกข้อเสียหนึ่งก็คือตัวโปรแกรมจะเลือกเปิดตัว pdf viewer เฉพาะในที่ ๆ กำหนดไว้เท่านั้น ผู้ใช้ต้องเลื่อนเอาเอง บางครั้งมันไม่สะดวกนัก

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

Microsoft Academic Search

เรื่องนี้ไม่เกี่ยวกับ LaTeX เท่าไหร่ แต่เกี่ยวกับนักวิจัย การเป็นนักวิจัยนั้น สิ่งที่เลี่ยงไม่ได้ก็คือเรื่องของการตีพิมพ์ผลงานวิจัย เว็บ Microsoft Academic search คงจะเป็นอาวุธหนึ่งของ Microsoft สำหรับผูกตัวบริษัทติดกับนักวิจัยทั้งหลายแหล่ ผมเข้าไปพบโดยบังเอิญด้วยการค้นชื่อตัวเองด้วย Bing แล้วมันก็โยงผมมาที่เว็บแห่งนี้

ตัวเว็บยังเป็นเบต้าอยู่ ซึ่งแน่นอนยังมีที่ผิดเยอะ และตัวข้อมูลก็ยังน้อยเมื่อเทียบกับฐานข้อมูลมาตรฐานอย่าง Scopus ซึ่งใหญ่กว่า ทันสมัยและเป็นที่ยอมรับมากกว่า แต่ของใหม่มาทีหลังย่อมต้องมีจุดขาย จุดขายที่สำคัญของ Microsoft Academic Search นั้นก็คือกราฟฟิคที่แสดงการเชื่อมโยงของผู้ร่วมวิจัย รวมไปถึงเส้นทางการเชื่อมต่อจากคนหนึ่งไปสู่อีกคนหนึ่ง ตัวอย่างเช่น

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

ซึ่งก็คือหกทอดพอดี แต่จริง ๆ แล้วมันผิด เพราะ Christian Schmidt นั้นเป็นคนละคนกัน (ในเยอรมันมีคนชื่อนี้นามสกุลนี้ น่าจะเกินร้อย) และอาจารย์ผมนั้นน่าจะเชื่อมโยงกับคนที่ใกล้ชิด Erdös ได้มากกว่านี้ เพียงแต่ฐานข้อมูลของ Microsoft นั้นยังไม่สมบูรณ์พอ แต่แค่นี้ก็เห็นแนวทางว่ามันสามารถใช้ประโยชน์อะไรได้บ้าง

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

รูปบ้างบนคือการแสดงจำนวนการตีพิมและการอ้างอิงผลงานในแต่ละปีของมหาวิทยาลัยในไทยแห่งหนึ่ง ที่นับเฉพาะจำนวนข้อมูลที่บรรจุในฐานข้อมูล

ใครเป็นนักวิจัยก็ลองไปใช้ดูนะครับ

MATLAB; you may see different results on different platforms.

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

เรื่องนี้ต้องชม MATLAB ในเรื่องการบริการพอสมควร ผมส่งคำถามไปก็มีการตอบกลับมาไม่เกินสองวัน มีวิศวกรคอยทดสอบปัญหาให้ตลอดเวลา  เรื่องมีอยู่ว่าผมทำงานที่บ้านตอนกลางคืน ในขณะที่ทำงานที่ทำงานตอนกลางวัน อยู่มาวันหนึ่งก็แบกเครื่องโน้ตบุ๊คไปทำงานด้วย นัยว่าสองเครื่องย่อมทำงานการปรับแต่งพารามิเตอร์ได้ดีกว่าเครื่องเดียว ผลปรากฎว่าสองเครื่องให้ผลไม่เหมือนกันครับ

สมมุติฐานแรกเลย เครื่องโน้ตบุ๊คผมเป็น AMD  รัน windows 7 pro (64 bits) และใช้ MATLAB 2010b ในขณะที่เครื่องที่ทำงานเป็น Intel และรัน windows xp sp3 (32 bits)  และใช้ MATLAB 2010a  เลข 32 กับ 64 บิตนั้นหลอนก่อนเพื่อน  ค้นไปค้นมาก็เลยลง MATLAB 2010b เวอร์ชัน 32 bits ในโน้ตบุ๊คเพิ่มเข้าไป ปรากฏว่าคราวนี้ได้ผลต่างกันสามแบบเลยครับ

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

อย่างไรก็ตามวิศวกรก็ได้บอกเฉลยวิธีแก้มาให้คือ ให้ MATLAB ใช้  reference BLAS  ซึ่งทำได้ดังนี้

  1. เข้าไปตั้งตัวแปรของระบบที่  System Properties ดังรูป
  2. ที่ Environment variables ให้เพิ่มตัวแปรใน System Variables โดยที่ตัวแปรที่เพิ่มชื่อ BLAS_VERSION และมีค่าเป็น refblas.dll ซึ่งถ้าเกิดตัวแปรนี้มีอยู่แล้ว ก็แค่แก้ค่าดังกล่าวใส่ลงไป

แน่นอนสิ่งที่ได้คือมั่นใจว่าทุกเครื่องจะให้ผลเหมือนกัน แต่หลาย ๆ ฟังก์ชันจะทำงานช้าลง เท่าที่ลองตอนนี้ผลที่ได้เหมือนกันแล้ว ส่วนเรื่องช้านั้นไม่รู้สึกอะไรมากครับ

ใครมีปัญหานี้ก็ไปลองแก้ไขดูได้ครับ