steinmetz เขียนเฟสด้วย LaTeX

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

$20\phase{30^\circ}$

ก็จะได้ phase

ง่ายดี ใครใช้ MikTeX ก็ไม่ต้องติดตั้งพิมพ์ \usepackage{steinmetz} มันก็จะิติดตั้งให้เอง

ดูคู่มือที่ steinmetz.pdf

ข่าวเศร้าของ WinEDT

พึ่งได้รับข่าวจาก mailing group วันนี้เองว่า Alex คนเขียน WinEDT ที่ผมใช้มาร่วม 10 ปีแล้ว ป่วยเป็นมะเร็งผิวหนัง ผมไม่ค่อยรู้หรอกว่าอาการและการรักษามันยากแค่ไหน ขอให้รักษาหายไว ๆ ครับ กลับมาเขียน WinEDT 6.0 ให้เสร็จ

ประโยชน์อันหนึ่ง Schur’s complements

ถ้าเรามีเงื่อนไขว่า

q^TA^{-1}q \leq 1

โดยที่ q^Tq =1 ถ้าเราอยากหาว่า q^TAq \leq ? จะทำอย่างไร มันกลับเศษเป็นส่วนแบบตัวเลขทั่วไปไม่ได้เพราะนี่มันเมตริกซ์  แต่เรารู้ว่า

-1 + q^TA^{-1}q \leq 0

และจาก Schur’s complements เราจะได้ว่า

\begin{bmatrix}-1 & q^T \\ q & -A\end{bmatrix} \leq 0

-A\leq 0, \qquad -A + qq^T \leq 0

คูณทางซ้ายด้วย q^T และคูณทางขวาด้วย q ของสมการล่างสุด จะได้

-q^TAq + 1 \leq 0

q^TAq \geq 1

งดงามดีแท้

Hold all

ทุกคนที่เคยใช้ Matlab คงจะไม่มีใครไม่เคยใช้ฟังก์ชัน hold on หรือ hold off  ที่ blog ของ Loren มีการนำเสนอตัวเลือกของฟังก์ชัน hold นั่นคือ hold all และเหมือนทุกครั้ง ผมก็พึ่งรู้ว่ามีงี้ด้วย

ยกตัวอย่างปัญหาที่มักเกิดขึ้นเสมอ ๆ แล้วกันครับ เวลาเราพล็อตกราฟเพื่อเปรียบเทียบ เอาตามตัวอย่างของ Loren แต่นำเสนอให้เข้ากับสถานการณ์จริงมากขึ้นคือ สมมติว่า  เราสร้างฟังก์ชัน sin แล้วพล็อตดังนี้

t = 0:0.005:1;
f = sin(2*pi*10*t);
plot(t,f)

ซึ่งเราก็จะได้กราฟดังรูปsin

จากนั้นถ้าต้องการจะเพิ่มสัญญาณรบกวนเข้าไป แล้วพล็อตเปรียบเทียบกัน ก็ทำง่าย ๆ ดังนี้

fn = f + 0.3*randn(size(t));
hold on
plot(t,fn)
legend('signal','signal with noise');

ผลที่ได้ก็ดังนี้

sin2แน่นอนดูไม่ออกว่าอันไหนเป็นอันไหนใช่ไหมครับ เกือบทุก ๆ คนเวลาเจอปัญหานี้ก็จะแก้บรรทัด plot(t,fn,’g') คือให้ใส่สีเขียวด้วย เจ้าแม่บอกว่าอย่าทำอย่างนั้นเลยมันไม่ดีหรอก เสียเวลา ทำอย่างนี้นะ

t = 0:0.005:1;
f = sin(2*pi*10*t)
plot(t,f);
fn = f + 0.3*randn(size(t));
hold all
plot(t,fn)
legend('signal','signal with noise');
hold off

นั่นคือเปลี่ยนจาก hold on เป็น hold all และ สิ่งที่ได้คือ

sin3

โดยไม่ต้องมานั่งเลือกสีให้เมื่อยอีกต่อไป หลายคนรู้แล้วก็คงคิดว่าทำไมตูพึ่งรู้วะ นี่อาจจะเป็น 1 ใน 10 เรื่องง่าย ๆ ของ Matlab ที่คุณไม่รู้ก็ได้

Monospace font for programming

ปกติจะใช้ courier new ซึ่งหน้าตาจะเป็นแบบนี้

courier new

ซึ่งจะเห็นว่ามีปัญหาหลายจุด ที่เห็นชัด ๆ และกวนใจเสมอ ๆ คือ ตัว l กับเลข 1 และตัว O กับเลข 0 ส่วนเรื่องความคมชัดบองตัวหนังสือก็พอใช้ได้ไม่มีปัญหาอะไร  จริง ๆ แล้วหลาย ๆ คนคงจะรู้มานานแล้วว่า Microsoft ได้ออกแบบฟอนต์ใหม่เอาใจโปรแกรมเมอร์ซึ่งชื่อว่า Consolas ซึ่งกลายเป็นขวัญใจโปรแกรมเมอร์ในเวลาอันรวดเร็ว ดูได้จาก Top 10 Programming Fonts ตอนวิสต้าออกมาใหม่ ๆ  ก็ลองพยายามหาโหลดมาใช้กับ XP ดู ปรากฎว่าไม่ได้แจกฟรี มันมาพร้อมกับโปรแกรมเวอร์ชันหลัง ๆ ของ Microsoft เท่านั้น พึ่งมารู้เมื่อวานว่ามันฟรีแล้วสำหรับผู้ใช้วินโดวส์แท้ หน้าตามันเป็นดังนี้ครับ

consolas

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

ใครต้องการใช้ก็เข้า google หรือ bing ไปโหลดได้เลย

Texmaker 1.9

มีการโต้กลับ TexmakerX เล็กน้อย สำหรับ Texmaker ดั้งเดิม โดยมีการเปลี่ยนหน้าตาใหม่ให้ดูดีกว่าเดิมหรือเปล่า แต่ที่แน่ ๆ ทันสมัยขึ้น

http://www.xm1math.net/texmaker/texmakervista.png

และมีการปรับปรุงดังต่อไปนี้

  • inline spell checking
  • bi-directional support (thanks to Alavizadeh,Seyyed Razi)  <– การเขียนจากขวาไปซ้าย
  • new modern interface
  • asymptote support  <– ภาษาวาดรูปสามมิติ
  • user can change the interface language via the “Options” menu (the application must be restarted)
  • a bug has been fixed in the latex log parser
  • new translations
  • Qt >= 4.5.1 is now required
  • The “change log” file : CHANGELOG.txt

ส่วนฟังก์ชันที่ดี ๆ ก็รอต่อไป ตอนนี้สนหน้าตาก่อน

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

วิธีการทำให้ content ของ pdf แสดงภาษาไทย

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

\input{lthpuenc.def}
\input{lthenc2.def}
\usepackage[thai1]{inputenc}

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

pdfcontent

Animation with TikZ

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

ที่เว็บ texample.com มีตัวอย่างการทำ animation แบบที่เข้าใจง่าย ๆ และผลลัพธ์ที่ได้ก็เป็นดังนี้

Animated set intersection

ผมได้หัดใช้ TikZ เบื้องต้นดูแล้ว (ใช้วิธีต้องการทำอะไร แล้วนึกคำที่ควรจะค้น แล้วค้นในเอกสารของ beamer) ติดใจ ไว้ว่าง ๆ จะลองทำมั่งแล้วมาอธิบายครับ

TexMakerX: TexMaker กบฏ

TexMaker เป็น Unicode editor ตัวแรกสำหรับ LaTeX ที่ใช้งานบน Windows ได้ แต่ผมไม่ค่อยชอบนัก ด้วยเหตุผล bla bla (ด่าโปรแกรมเปิดรหัส เดี๋ยวจะโดนแขวะว่า พูดตรงนี้ไม่มีคนพัฒนาเขาไม่รู้หรอก เสือกรู้อีกว่าเราไม่ได้บอกคนพัฒนา) บน OS อื่นรู้สึกจะมีนานแล้ว ตอนนี้มี TeXworks กับ Kile บน KDE for windows (การพัฒนายังไม่เสถียร และผมก็ยังไม่ได้ลอง)

ปัจจุบันมี TexMakerX ซึ่งแยกตัวออกมากจาก TexMaker เข้าใจว่าตั้งแต่ 1.8 โดยมีการส่งเวอร์ชัน 1.8.1 มาให้ยลโฉมดังรูปข้างล่าง ผมลองใช้ดูแล้วสิ่งที่ดีขึ้นเห็นได้ชัด ๆ คือ การ syntax highlight ที่ดีขึ้น และมีการ floding ทำให้สามารถปิดบางส่วนของโปรแกรมใน environment ได้ (ซึ่งจะมีประโยชน์มากในการทำ presentation) ที่เหลือก็คงแตกต่างจาก 1.8 มากนัก

http://texmakerx.sourceforge.net/img/example.png

การแจ้งความผิดพลาดยังใช้ระบบเดิมคือ ถ้าคอมไพล์ latex ไม่พลาด แต่โปรแกรมเสริมตัวอื่น ๆ พลาด จะแสดงข้อความแค่ว่ามีปัญหา แล้วหลุดออกมาโดยไม่กระทบกับโปรแกรมตัวอื่น ๆ (ดีกว่า WinEDT ตรงที่ไม่ต้องมากด cancel เอง ถ้าลืมกดก็จะมีปัญหาน่ารำคาญ)

ข้อดีของ TexMaker ซึ่งมีมานานแล้วคือการตั้งค่าลำดับของการคอมไพล์ที่เข้าใจง่าย และเข้าถึงได้ง่าย (ของ WinEDT ง่ายกว่า แต่เข้าถึงยาก) แต่แน่นอนการจัดการต่าง ๆ ยังห่างไกล WinEDT พอสมควร (ใครติด WinEDT แล้วจะเลิกลำบาก)  อย่างไรก็ตามนี่เป็นพัฒนาการที่ดีของบรรณาธิกรณ์ตัวนี้ครับ

ตัวเลือกสำหรับ Xming สำหรับ coLinux

พอดีมีปัญหากับ keyboard ใน X application แก้อย่างไรก็ไม่หาย วิธีแก้ทำได้ง่าย ๆ คือตั้งค่าในไฟล์ .conf ของ coLinux โดยเพิ่มตัวเลือกต่าง ๆ เข้าไป ดังนี้

exec0="C:\Program Files\Xming\Xming.exe",":0 -dpi 96 -ac -clipboard -notrayicon -c -multiwindow -reset -terminate -unixkill -logfile Xming.log -xkblayout en -xkbvariant nodeadkeys"

ที่สำคัญ ๆ ก็คือ -xkblayout en กับ  -xkbvariant nodeadkeys