WinEDT, LED and TeXmaker

ช่วงอาทิตย์ที่ผ่านมาคงเป็นช่วงที่ชาว \LaTeX บนวินโดวส์ดีใจกันยกใหญ่ เพราะว่า
บรรณาธิกรณ์หลักสามตัวได้แสดงให้เห็นว่ายังมีการปรับปรุงอยู่ ตัวแรกสุดที่ออกประกาศมาหลัง
จากที่หยุดไปนานคือ LaTeX Editor (LED) ได้ประกาศความเคลื่อนไหว เมื่อวันที่ 15 เมษายน
ที่ผ่านมา ว่าเวอร์ชันใหม่จะออกภายในหนึ่งเดือน และจะสนับสนุน MiKTeX 2.7 เต็มที่

LEd Main Window

ก็รอกันต่อไปนะครับว่าบรรณธิกรณ์ขวัญใจชาว Freeware ตัวนี้

ตัวที่สองที่เรื่อย ๆ มาเรียง ๆ ก็คือ Texmaker ก็ได้ประกาศเวอร์ชัน 1.7 เมื่อวันที่ 24 เมษายน
นี่เอง โดยมีความเปลี่ยนแปลงหลัก ๆ คือ

  1. ตรวจสอบการสะกดคำโดยใช้ hunspell และใช้พจนานุกรมของ OpenOffice.org
  2. มีการตรวจสอบ LaTeX log errors แบบใหม่ ถ้าดูจากรูปก็จะเห็นความเปลี่ยนแปลงที่
    ชัดเจนนะครับ
  3. มีรูปแบบการติดต่อกับผู้ใช้แบบใหม่
  4. Indentation “memory” ไม่เข้าใจเหมือนกันว่าคืออะไร
  5. มี Code Completion

ก็คิดว่าคงถูกใจชาว Unicode ไม่มากก็น้อย

ส่วนตัวสุดท้ายที่พึ่งประกาศเมื่อวานก็คือ WinEDT 5.6 beta 1 มีการเปลี่ยนแปลงมากมายโดยเฉพาะ
ส่วน Project Manager หน้าตาสวยขึ้นถ้าชอบสีสัน แต่บอกตรง ๆ ว่าไม่ชอบ

winedt561

สิ่งที่เปลี่ยนแปลงนั้นมีมากมายจนเล่าไม่หมด แต่ที่ชอบมาก ๆ คือ

  1. ตรง Bibliography ในส่วนของ Project manager มีชื่อเรื่องกับชื่อผู้แต่งตัวเต็ม ๆ ให้ดูด้วย
    ซึ่งมีประโยชน์มาก
  2. Help เปล่ยนเป็น LaTeX Help e-book ไม่ต้องเลื่อนไปดูแบบเก่าแล้ว ดีมาก ๆ

ที่เหลือต้องลองเอาดูเองนะครับ

วาดวงรีด้วย MATLAB

จากความตอนที่แล้ว

ขั้นต่อไปคงเป็นการสร้างวงรี จริง ๆ แล้วเราเรียนเรื่องวงรีจากเรขาคณิตวิเคราะห์ในบทที่ว่าด้วย
ภาคตัดกรวยที่มี วงกลม วงรี พาราโบลา ไฮเปอร์โบลา ยากสุด ๆ กลับไปดูในแบบเรียนเอาเอง
นะครับ หรือที่ Conic Section Gallery

การวาดวงรีด้วย MATLAB สำหรับผมแล้วผมจะไม่ใช้เรขาคณิตวิเคราะห์ เพราะผมเป็นวิศวกรที่
ไม่เขียนแบบด้วยไม้บรรทัดและวงเวียนอีกแล้ว ผมจะวาดแบบง่ายโดยให้ค่าบนแกน y = r_1\sin\theta และค่าบนแกน x = r_2\cos\theta ซึ่งคราวนี้ค่า r_1 และ r_2
จะมีขนาดไม่เท่ากัน

รหัสต้นของ MATLAB ที่ดูดีขึ้นก็จะเป็น

theta = linspace(0,2*pi,100);
r = 1;
x = 2*r*cos(theta);
y = r*sin(theta);
axis equal
axis([-3,3,-3,3]);

el1

ทีนี้ถ้าเราต้องการหมุนวงรีจะทำอย่างไรครับ ถ้าจะบวกองศาที่หมุนไปดื้อ ๆ นั้นจะไม่
เป็นผล เพราะหมุนแกนตอนแกนตั้งมันก็หมุนด้วย ด้วยความสัตย์จริงผมต้องไปค้นหนังสือ
พีชคณิตเชิงเส้น เรื่อง orthogonal basis มาอ่าน ได้ความว่าเราสามารถใช้ orthogonal
basis มาหมุนวงรีได้ ดังนี้

g= U_\theta u, \qquad U_\theta = \begin{bmatrix}\cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix}

โดยที่ u = [x \quad y]^T คือค่าบนแกนนอนและแกนตั้งตามลำดับ ก็จับมาคูณ
กันดื้อ ๆ เลยครับ ได้รหัสต้นดังนี้

ar = 30*pi/180;
Uth = [cos(ar) -sin(ar); sin(ar)  cos(ar)];
g = Uth*[x ; y ];
plot(g(1,:),g(2,:));
axis([-3,3,-3,3]);

el2

ก็จะได้รูปวงรีที่เอียงทำมุม 30 องศากับแกนนอนตามต้องการ

อนึ่ง เพื่อให้ได้อะไรบ้าง U_\theta จะทำการเปลี่ยน orthogonal basis
จาก e_1 = [1 \quad 0]^T และ e_2 = [0\quad 1]^T ไปเป็น e_1 = [\cos\theta \quad \sin\theta]^T
และ e_2 = [-\sin\theta \quad \cos\theta]^T นั่นเอง

The PracTeX Journal 2008, No. 1

TUG logo

The PracTeX Journal ฉบับเดือนเมษายน ปี 2008 ออกแล้ว ฉบับนี้มีเรื่อง
ที่น่าสนใจมาก ๆ อยู่สองเรื่อง เรื่องแรกคือเรื่อง Writing a thesis with
LaTeX ในบทความมีตัวอย่างการการปรับแต่งรูปแบบวิทยานิพนธ์ของผู้เขียน
ที่น่าสนใจ นอกจากนั้นยังมีเอกสารอ้างอิงที่สามารถอ่านได้ในรูปแบบ pdf

ที่ควรอ่านอีกหลายเรื่องทีเดียว เรื่องที่สองเป็นการตอบคำถามเกี่ยวกับตาราง How do I
create math mode columns in tabular environments? ซึ่งมีการอธิบายการสร้างสิ่งแวด
ล้อมใหม่ ๆ ให้กับตาราง ซึ่งน่าสนใจเป็นอย่างยิ่ง

การสร้างวงกลมด้วย MATLAB

เห็นมีคำค้นการสร้างวงกลมด้วย MATLAB ไม่ทราบว่าคนค้นได้คำตอบหรือยัง ก็ถือ
โอกาสเขียนวิธีการไว้ตรงนี้เลย เผื่อว่าคนที่ค้นจะกลับมาอีกแล้วจะได้คำตอบ

ว่ากันตามตรงการสร้างวงกลมด้วย MATLAB ถือเป็นปัญหาเส้นผมบังภูเขานะครับ
สมการวงกลมนั้นมีลักษณะดังนี้

x^2+y^2 = r^2

โดยที่ r คือรัศมีของวงกลม ถ้าผู้ต้องการวาดวงกลมด้วย MATLAB เอาเส้นผมออก
ก็จะพบว่าจริง ๆ แล้วเราสามารถเขียนสมการข้างต้นได้ดังนี้

r\sin^2\theta + r\cos^2\theta = r

โดยให้ค่าบนแกน y คือ r\sin\theta  และค่าบนแกน x คือ r\cos\theta
แค่นี้เราก็สามารถนำมาสร้างคำสั่งของ MATLAB ได้แล้วง่าย ๆ ดังนี้

theta = 0:0.1:2*pi;
r = 1;
y = r*sin(theta);
x = r*cos(theta);
plot(x,y);

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

A dvips problem

ในการสร้างเอกสาร pdf โดยใช้วิธีการ dvi–ps–pdf นั้นเป็นวิธีการหนึ่งที่นิยมใช้ของผู้ใช้ดั้งเดิม
ในการส่งเอกสารให้ IEEE นั้นผู้ใช้จำเป็นจะต้องส่งในเอกสารในรูปของ letter ซึ่งเป็นมาตรฐาน
ของอเมริกา (ประเทศเดียว?) ปัญหาเกิดขึ้นเมื่อ MiKTEX มีค่าตั้งต้นเป็น A4 ตามมาตรฐานสากล
ผู้ใช้ส่วนใหญ่ที่ทำงานบน Windows นั้น ไม่ได้สนใจเรื่องต่าง ๆ ในเชิงลึกมากนัก เช่น บน
WinEDT ยังกดปุ่ม save แล้วรันคำสั่ง latex สองรอบ ซึ่งจริง ๆ แล้วแค่กดปุ่ม Texify ทีเดียวจบ
ซื้อร้ายไปกว่านั้น ถ้าต้องการสร้างเอกสาร pdf ผู้ใช้ส่วนใหญ่ก็ยังกดปุ่ม dvipdf หรือ dvips–ps2pdf
โดยที่ก่อนหน้านั้นจะทำการปิดไฟล์เดียวกันที่เปิดบน Adobe reader ก่อน ซึ่งจริง ๆ แล้วกดปุ่ม
PDF Texify ทีเดียวจบเหมือนกัน ไม่ต้องทำอะไรมากกว่านั้น จริง ๆ ค่าตั้งต้นเหล่านี้สามารถตั้งเอง
ได้ง่ายมาก แต่อยู่นอกเหนือของเขตของบล็อกนี้

ปัญหาเกิดเมื่อโปรแกรมใช้มาตรฐานสากลแต่สมาคมใช้มาตรฐานอเมริกา และมีผู้ใช้อยู่ทั้งสอง
ฝั่ง ผู้ใช้ที่ดีก็จะอ่านคำแนะนำที่ละเอียดของเว็บ paper plaza ทำให้รู้วิธีการแก้ปัญหาที่อาจจะ
เกิดขึ้นเหล่านี้ ผู้ใช้หลายคนไม่เข้าใจว่าปัญหาที่เกิดขึ้นกับไฟล์ pdf ของเขานั้นไม่ได้เกิดที่ขั้น
ตอน ps2pdf แต่เกิดขึ้นที่ขั้นตอน dvips ทั้งนี้เพราะผู้ใช้เหล่านั้นไม่เคยเปิดไฟล์ ps ดู

สำหรับ WinEDT นั้น จะไม่ยอมให้คุณตั้งค่าอะไรเลยสำหรบ dvips คือจะถือค่าตั้งต้นของ MiKTEX
โดยปริยายไป ทำให้ผู้ใช้ทั่วไปไม่สามารถที่จะตั้งค่าอะไรได้ ทั้ง ๆ ที่ไม่เข้าใจอยู่แล้วว่าทำไมต้อง
ตั้งค่า ผู้ใช้ฝั่งอเมริกาต้องการสร้างเอกสารเป็น letter ก็ทำไม่ได้ เช่นเดียวกันกับผู้ใช้อื่น ๆ ทั่วโลก

หลังจากที่ยอมรับแล้วว่าปัญหาเกิดที่ dvips ก็มาทดลองตั้งค่ากัน ที่ WinEDT ให้เข้าเมนู Options
–Execution Modes จะได้ dialog box ขึ้นมาตามรูปข้างล่าง

winedt1

ก็เลือก Enter Extra Switches on Spot แล้วก็ตั้งค่า Paper Size and Orientation ที่ใช้บ่อยเป็น
ค่าตั้งต้น

หลังจากนั้นพอเรียก dvips ก็จะมี dialog box ขึ้นมา

winedt2

ขี้นมาให้เราเลือกค่าต่าง ๆ หรือใส่ Extra Switches หรือจะเลือกจากของเก่าที่เคยใส่ไว้ก็ได้
สำหรับกรณีที่ต้องการให้เอกสารเป็น Letter ก็เลือก Letter แล้วกด ปัจจุบันเราไม่จำเป็นต้องใส่
-Ppdf แล้วนะครับ เพราะเป็นค่าตั้งต้นให้อยู่แล้ว

อนึ่ง จริง ๆ แล้วเราควรใช้ PdfLaTeX กันให้หมดได้แล้วนะครับ เพราะจะได้ pdf ที่ดีกว่า เสียเวลา
แปลงรูปหน่อยเดียวเอง สะดวกกว่าเยอะ

ps2epsi เรื่องขำ ๆ ของ GsView

ผมใช้คำสั่ง ps2epsi เพื่อใส่ BoundingBox ให้กับรูปที่สร้างเป็น eps มานานมากแล้ว

epstool

จริง ๆ ก็เห็นปัญหาอยู่นะว่ามีการกำหนด box ให้ผิดตามรูปข้างบนด้านขวามือ ซึ่งจะเห็นได้ว่า
ตัวเลขสองมันถูกขลิปส่วนบนออกไป แต่ผมก็ไม่ได้คิดจะแก้ไขอะไร คงเป็นเพราะผมทำงาน
ในลักษณะนี้น้อยมาก วันนี้ลองใช้ Xfig ที่เราสามารถใส่รูปที่เป็น pdf, eps ลงไปในรูปเพื่อ
ตกแต่งใน Xfig (เวอร์ชัน 3.2.5 ขึ้นไป) พอได้ก็ลองใชู้ และลองสร้างไฟล์ pdf ตามที่ได้เคย
เสนอไปใน Xfig reuse ก็เกิดปัญหาตามที่ได้กล่าวข้างบน ดูรูปแล้วจะเห็นชัด ปัญหาก็คือถ้า
เราใส่ BoundingBox ให้รูป eps ผิด เวลาเราแปลงรูปเป็น pdf ก็จะได้ลักษณะอย่างที่เห็น
ทางขวามือ ปัญหานี้มีมานานมากแล้วสำหรับคำสั่งนี้ของ GhostScript เห็นว่าได้รับการแก้ไข
ไปบางส่วนแล้ว

ครั้งนี้แปลกออกไปที่ผมยอมลงทุนเสียเวลาหาวิธีแก้ไข คิดว่ามีทางแก้ไขโดยการเพิ่มตัวเลือก
ให้คำสั่ง ps2epsi เสียเวลาเป็นชั่วโมงในการหาตัวเลือก ด้วยความเชื่อที่ว่า GsView ไปเรียก
คำสั่ง GhostScript มาใช้ ดังนั้นมันต้องใช้คำสั่งเดียวกัน แต่เปล่าเลย สิ่งที่เชื่อกับสิ่งที่เป็น
จริงมันต่างกัน
กล่าวคือเมื่อผมสิ้นหวังผมก็ต้องไปหาเครื่องมือตัวอื่นมาใช้งาน แล้วก็ไปเจอ
epstool พออ่านถึงบรรทัดที่ว่า

GSview (same code as epstool)

ก็ร้อง… ออกมาทีหนึ่ง เพราะว่า GsView ใช้ epstool ในการแปลงรูปจาก PS ไปเป็น eps
ไม่ได้ใช้คำสั่ง ps2epsi ตามที่เข้าใจ เพื่อแก้ปัญหานี้ผมต้องไปโหลด epstool จาก CTAN
มา แล้วก็เพิ่มคำสั่งในการคำนวณ BoundingBox ที่ถูกต้องเข้าไปอีกทีหนึ่ง ดังนี้

epstool --copy --bbox golfer.eps golfer2.eps 

ซึ่งผมใช้ batch file อยู่แล้วก็แค่เพิ่มบรรทัดนี้เข้าไป ไม่ยากอะไร ผลที่ได้ก็ดีขึ้นได้รูป
แบบทางซ้ายมือ ถึงตอนนี้คุณก็สามารถสร้างรูป eps จาก Inkscape แล้วนำไปประกอบ
กับสมการคณิตศาสตร์ใน Xfig เพื่อให้ได้รูปที่สวยงามไปใช้กับเอกสารได้แล้ว

IEEE-Transaction Ubuntu

เห็นบทความ IEEE-Transaction-on-Ubuntu ของคุณโบว์แล้วร้องจ๊าก ติดใจตรงที่ คนใช้
\LaTeX กลายเป็นคนหัวโบราณไปแล้วเหรอ ไม่ว่ากัน

ด้วยความที่ไม่เห็นความจำเป็นที่ต้องใช้ Linux เพราะทุกอย่างในเครื่อง Windows นั้นถูกกฎหมาย
ทั้งหมด และก็ฟรีหมดด้วย (Windows XP มากับเครื่องและใช้สิทธินักเรียนได้) ปกติแล้วสำหรับ
\LaTeX แล้วผมก็ใช้ MikTeX เสมอ อาจจะเป็นโปรแกรมตัวเดียว (ตัวโปรแกรมส่วนที่
ติดต่อผู้ใช้) ที่มีบน windows ก่อนแล้วก็ถูกเรียกร้องให้ผู้เขียนทำบน linux บ้าง ตัวผมพอมีคำถาม
ของคนที่ใช้งานบน linux เราก็ไม่เข้าใจปัญหาเขาเหมือนกัน

ปัจจุบันผมลง Colinux เพื่อใช้งาน Xfig ก็เลยเถิดไปถึง Kile 2.0 ด้วย (ซึ่งแย่กว่าที่คิดเมื่อเทียบ
กับ WinEDT) ก็เลยได้เวลาศึกษา \LaTeX บน linux ด้วย ปรกติแล้วบน MikTeX นั้น
ก็แค่คิดตั้งตัวติดตั้งชุดเล็กสุดที่จำเป็น พอเอกสารจำเป็นต้องใช้แพ็กเกจไหน(ไม่ขึ้นกับบรรณาธิกรณ์)
มันก็จะไปโหลดมาติดตั้งให้โดยอัตโนมัติ ไม่ต้องไปติดตั้งเองให้เมื่อย แต่สำหรับ Texlive แล้วผู้ใช้
จะต้องติดตั้งเพิ่มเอง ลำบากมาก และสำหรับ WinEDT เวลาต้องการจะอ่านคู่มือของแพ็กเกจไหนก็
แค่ดับเบิลคลิ๊กที่ \usepackage{xx} นั้น ๆ ไฟล์เอกสารที่อยู่ใน …/doc/latex/… ก็จะขึ้นมาให้
เลือกเปิดอ่านได้ตามชอบใจ ถ้ามีไฟล์ .ps ก็ไปเปลี่ยนเป็น .pdf แล้วเรียกขึ้นมาภายหลังก็ได้ พอมา
ถึง Texlive บน Ubuntu 8.04 beta ก็ใบ้กินครับ เพราะเอกสารที่ควรจะอยู่ …/texmf/doc/latex/
นั้นไม่มีซะแล้ว ทำไงดี

เสียเวลาไปพอสมควรกว่าจะรู้ว่าสำหรับ Texlive จะมี /usr/share/texmf-texlive/ เป็นรากของ
TeX ทั้งหมด ไม่รู้จะเก็บของเดิมไว้สำหรับ TeTeX ทำไม เพราะเป็นที่รู้กันว่าคนทำเขาไม่ทำต่อ
แล้ว และผู้ใช้ทั้งหมดก็ย้ายมาที่ Texlive กันหมดแล้ว ไม่ว่ากัน (จริง ๆ เป็นข้อปฏิบัติของ debian
เขา ที่มั่นคงและหนักแน่น สมกับเป็นต้นน้ำ) สำหรับผู้ใช้ linux แล้วต้องการเอกสารของแพ็กเกจ
ต่าง ๆ ก็ไปที่โฟลเดอร์ที่บอกได้เลย เอกสารมีและดีมากครับ อย่างของ IEEE-Transaction นั้น
มีเอกสารจำนวน 24 หน้า ละเอียดมาก ๆ มีวิธีแก้ปัญหาต่าง ๆ ที่รวบรวมไว้นานมากแล้ว

อ้าวบอกตำแหน่งของเอกสารแล้ว แต่ไม่บอกว่าติดตั้ง Texlive บน Ubuntu 8.04 beta อย่างไร
(ผมใช้ Colinux-Ubuntu 8.04) วิธีการก็

sudo aptitude install texlive-publishers texlive-fonts-recommended
texlive-latex-base texlive-latex-base texlive-latex-recommended
texlive-doc-en

ส่วนผู้ที่พิสมัย beamer ในการทำ screen presentation แบบ powerpoint (ไม่ใช่ทำ
powerpoint นะ) ก็

sudo aptitude install latex-beamer latex-xcolor pgf

ก็เป็นอันเรียบร้อยโรงเรียนจีนนะครับ สำหรับใครใช้ pdflatex ก็อย่างลืมว่ามันไม่รองรับไฟล์ .eps
นะ ต้องแปลเป็น pdf ก่อนโดยใช้ epstopdf ในการแปลง

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

สุดท้ายสำหรับผู้ใช้ \LaTeX จะบนไหนก็ตามที ก็คือเรื่องของ BIBTEX บน MikTeX
มี TeXify สะดวกโยธินไปตั้งนานแล้ว บน Texlive คิดว่าไม่มี แล้วคราวหน้าจะทวนความรู้เมื่อ
เจ็ดปีก่อนให้นะครับ ว่าต้องทำอย่างไร วันนี้ขอเอาลูกนอนก่อน