Very fat matrices (Matrix with more than 10 columns)

ใน amsmath นั้นกำหนดค่าสำหรับคอลัมน์สำหรับคำสั่งในการสร้างเมตริกซ์ไว้แค่ 10 คอลัมน์เท่านั้น
การจะเพิ่มจำนวนคอลัมน์นั้นทำได้โดยการกำหนดค่า MaxMatrixCols ให้เกินสิบ ดังนี้

\setcounter{MaxMatrixCols}{20}

เป็นอันเสร็จเรื่อง

Advertisements

isomath package

จากข้อกำหนด ISO 31-11 ได้กำหนดสัญลักษณ์ทางคณิตศาสตร์เป็นมาตรฐานไว้  ทั้งนี้เพื่อให้เข้า
ใจตรงกัน น่าเสียดายที่เอกสารตัวจริงราคา 130 เหรียญ ในขณะที่ที่ Wiki pedia ที่ได้คัดลอกบาง
ส่วนไว้นั้น ไม่แน่จะว่าถูกต้องหรือเปล่า โดยเฉพาะสัญลักษณ์ต่าง ๆ ที่ใช้ฟอนต์ทั่วไป มาดูอันที่ชัด ๆ ก่อน

เรื่องแรก

  1. ตัวแปรสการ์ลานั้นใช้แทนด้วยตัวอักษรธรรมดาอยู่แล้ว จริง ๆ จะใช้ “ก, ข, …” แทนก็ได้  
    แต่มันไม่เป็นสากล ก็ให้ใช้ตัวอักษรภาษาอังกฤษตัวเล็ก a, b, c \ldots ซึ่งไม่มีปัญหาอะไร
  2. ตัวแปรเวกเตอร์ให้ใช้ตัวหนาและต้องเป็นตัวเอียง ใน LaTeX นั้นมีคำสั่ง \mathbf ในการ
    สร้างตัวหนาใน math mode อยู่แล้ว แต่ไม่ได้ตัวเอียง เท่าที่รู้ถ้าต้องการทำตัวหนาและ
    ตัวเอียงด้วยใน math mode อย่างนี้ \text{\textbf{\textit{a, b, c}}} \ldots จำเป็น
    จะต้องใช้แพกเกจ amsmath สำหรับคำสั่ง \text{ } แล้วใส่ \text{\textbf{\textit{a, b, c}}}
    ซึ่งยุ่งยากพอสมควร ผู้ใช้ที่มีประสบการณ์สามารถสร้างคำสั่งใหม่ได้ดังนี้

                         \newcommand[1]{\vector}{\text{\textbf{\textit{#1}}}
  3. สำหรับตัวแปรเมตริกซ์ก็ต้องใช้อักษรตัวใหญ่ที่เป็นตัวหนาและตัวเอียง ซึ่งทำได้เช่นเดียว
    กับอักษรตัวเล็ก
  4. ในอักษรกรีกและสัญลักษณ์พิเศษก็ควรจะมีลักษณะเช่นเดียวกับข้อ 2-3 ซึ่งโดยปกติจะใช้
    คำสั่ง \mathit{\boldsymbol{\Phi}} ซึ่งจะได้  phiit  (ต้องใช้กับแพกเกจ amsmath)
    เช่นเดียวกันสามารถสร้างเป็นคำสั่งใหม่ได้ และใช้ในกรณีของตัวอักษรปกติได้

จะเห็นได้ว่ายุ่งยากพอสมควร (ผู้ใช้ Word, OO.o นั้นจะไม่มีปัญหาเรื่องพวกนี้เพราะส่วนใหญ่ไม่สน
ใจคุณภาพของการเรียงพิมพ์อยู่แล้ว–เน้นว่าการเรียงพิมพ์นะครับ)  พึ่งมีไม่กี่วันมาได้มีการออก
แพกเกจใหม่ที่ชื่อ isomath และบรรจุไว้ใน MiKTeX เรียบร้อยแล้ว  ซึ่งมีคุณลักษณะเพิ่มเติมดังนี้

  1. มีการกำหนดอักษรกรีกใหม่เป็น \mathalpha (เวลาเรียกใช้ยังใช้ \alpha เหมือนเดิม)
  2. เพิ่มคำสั่ง \vectorsym, \matrixsym และ \tensorsym เพื่อให้สัญลักษณ์ต่าง ๆ เข้ากับ
    มาตรฐาน
  3. กำหนดคำสั่งสำหรับตัวอักษรใหม่อีกสามตัว
    – \mathbold   สำหรับตัวอักษรหนาและเอียง
    – \mathsans  สำหรับตัวอักษรแบบไม่มีเชิงและเป็นตัวเอียง
    – \mathboldsans สำหรับตัวอักษรแบบไม่มีเชิงที่เป็นตัวหนาและเอียง

ในการติดตั้งครั้งแรกแพกเกจนี้จะมาพร้อมบัก ให้ไปหาบรรทัดที่เขียนว่า

\usepackage[sfdefault=cmbr]{isomath}

แล้วใส่คอมเมนต์ซะ

มีการแก้บักนี้แล้ว

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

Subordinate numbering sequences

ในบางครั้งในการเขียนสมการเราก็ต้องการจัดกลุ่มของสมการเช่น 1a 1b … 1e แทนที่จะเรียง
แบบ 1 2 … 5 ซึ่งแบบแรกจะสามารถสื่อสารได้ดีกว่าว่าเป็นสมการเรื่องเดียวกัน ปกติก็ไม่เคย
ใช้หรือคิดจะใช้นะครับ พอดีเห็นคำค้นเรื่องนี้ก็เลยสนใจ พอค้น google ก็มีคนแนะนำว่าใน
package amsmath นั้นมีชุดคำสั่งนี้ให้อยู่แล้ว แถมยังบอกหน้าให้เสร็จสรรพว่าหน้า 10 พอเข้า
ไปก็ลองทำตามที่คู่มือบอก ปรากฏว่าไม่ได้ ก็ไม่ยากครับไปค้น google อีกรอบได้วิธีทำที่
ละเอียดกว่าที่ wikibooks ซึ่งมีวิธีการดังนี้นะครับ

\begin{subequations}
\begin{gather}
a x + b = 0 \\
a x^2 + b x + c = 0 \\
a x^3 + b x^2 + c x + d = 0
\end{gather}
\end{subequations}

ไปลองดูกันเองนะครับ
ถ้าต้องการ 1ก 2ข … ก็ต้องลงแพ็กเกจภาษาไทยก่อนแล้วก็ทำตามนี้นะครับ

\begin{subequations}
\renewcommand{\theequation}{\theparentequation
\thaialph{equation}}
\begin{gather}
a x + b = 0 \\
a x^2 + b x + c = 0 \\
a x^3 + b x^2 + c x + d = 0
\end{gather}
\end{subequations}

โดยการแปลงตัวเลขให้เป็นภาษาไทย โดยใช้คำสั่ง \thaialph{equation} ก็จะได้หน้าตาดังรูป
ข้างล่างนี้

thaieqn

ก็คิดว่าน่าจะมีประโยชน์ในการเขียนเอกสารภาษาไทยบ้างนะครับ

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? ซึ่งมีการอธิบายการสร้างสิ่งแวด
ล้อมใหม่ ๆ ให้กับตาราง ซึ่งน่าสนใจเป็นอย่างยิ่ง

\newcommand ซะหน่อย

ใน \LaTeX นั้นคุณสามารถสร้างคำสั่งใหม่เพื่อใช้ส่วนตัวได้ด้วยคำสั่ง

\newcommand{cmd}[args]{definition}
\newcommand{cmd}[args][default]{definition}

แบบนี้ ซึ่งสะดวกมาก ยกตัวอย่างถ้าคุณต้องการเขียนสมการแบบนี้

x_1 + x_2 + \cdots + x_n

แต่บางครั้งในเอกสารจำเป็นต้องเปลี่ยน x ไปเป็น y บ้าง z
บ้าง และต้องเขียนแบบนี้เยอะมากในรายงาน การทำคำสั่งใหม่ไว้ใช้ก็เป็นความคิดที่ดี
ซึ่งทำได้ดังนี้

\newcommand{\xse}[1][x]{#1_1 + #1_2 + \cdots + #1_n}

เวลาเรียกใช้งานถ้าสั่งแค่ \xse ค่าโดยปริยายก็จะแสดงเป็น x แต่ถ้าสั่งเป็น
\xse[y] เราก็จะได้อนุกรมของ y แทนซึงสะดวกดี

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

สำหรับในกรณีสองตัวแปรเช่นในบางกรณีต้องการเปลี่ยนค่าสุดท้ายจาก n
ไปเป็นแบบอื่น ก็

\newcommand{\xse}[2][x]{#1_1 + #1_2 + \cdots + #1_#2}

ถ้าต้องการได้

z_1+z_2 + \cdots + z_m

ก็สั่ง \xse[z]{m} เป็นต้น

"two column equation"

 มีคนค้นคำนี้ เข้าใจว่ามีปัญหา วิธีการทำ two column equation นั้นไม่ยากครับ
ใช้ amsmath.sty ดังนี้ครับ

\usepackage{amsmath}

\begin{align*}
     \int^\infty_0 xdx &= 0    & x^2 + y^2   &= z^2\\
     \frac{dx^2}{dx}    &= 2x  & \text{ha ha} & 
\end{align*}

ซึ่งจะได้ผลตามรูปข้างล่าง latex

จริง ๆ มีวิธีอื่นอีก แต่คิดว่าวิธีนี้ดีและง่ายที่สุด วิธีอื่น ๆ ที่ง่ายดีก็ใช้ array เป็นต้นครับ

Partitioned Matrix

ใครเคยสร้างเมตริกซ์แบบนี้

\left[\begin{array}{c|c} A & B \\ \hline C & D \end{array}\right]

จะเห็นได้ว่าการเอาแนวทางของ array มาใช้และดัดแปลงนิดหน่อย มันไม่ยาก
เลย แต่ถ้าสังเกตดี ๆ จะพบว่าตัวอักษร C และ D ใต้เส้นนั้นมันชิดกันเกินไป ไม่
สวย วิธีแก้ก็ให้นำคำสั่ง \rule มาช่วยดังนี้ครับ

\left[\begin{array}{c|c}
A     &     B  \\ \hline

\rule[13pt]{0pt}{0pt} C   &   D

\end{array}\right]

\left[\begin{array}{c|c} A & B \\ \hline \rule[13pt]{0pt}{0pt}C & D \end{array}\right]

จะเห็นความแตกต่างได้ทันทีนะครับ ตัวเลข 13pt นั้นก็ขึ้นอยู่กับขนาดตัวอักษร หรือ
ขึ้นกับความพอใจของผู้ใช้นะครับ

Avoid eqnarray

ช่วงที่ผ่านมาผมเปลี่ยนจาก eqnarray ไปเป็น align ด้วยเหตุผลที่ฟังง่าย ๆ
และดูเหมือนจะมีเหตุผลอยู่บ้างคือ มันพิมพ์สั้นกว่า ทั้งตัวชื่อมันเองและเวลา
พิมพ์สมการหลายบรรทัด เวลาจัดให้ตรงกัน สำหรับตัวแรกต้องพิมพ์ & &
สองที ในขณะที่กรณีหลังพิมพ์แค่ทีเดียว ดีกว่าเห็น ๆ พึ่งมารู้เมื่อกี้นี้เองว่า มีคน
แนะนำกันมานานแล้วว่าไม่ให้ใช้ eqnarray รายละเอียดของเรื่องนี้ได้มา
จาก The PracTeX Journal ฉบับล่าสุด ในบทความเรื่องเดียวกันกับชื่อบท
ความนี้ที่ Avoid eqnarray! อ่านแล้วน่าตกใจมากครับ กล่าวคือ eqnarray
นั้นมันมีปัญหาเรื่องช่องไฟที่จัดไม่ดี ไม่เท่ากันบ้าง ในขณะเดียวกันก็ยังมีปัญหา
เรื่องการเพิ่มเลขอ้างอิงโดยไม่มีการบอกกล่าว ซึ่งกรณีหลังนี้สำคัญมากครับ
เพราะถ้าเราไปอ้างอิงโดยไม่ทันระวังตัวแล้ว ตัวเลขที่ได้กับตัวเลขที่ตั้งใจ มันจะ
ไม่ตรงกัน แล้วคุณก็ไม่มีทางรู้ได้เลยถ้าไม่มีคนมาอ่านงานของคุณทีหลัง

อ่านถึงตรงนี้แล้วผมก็จะทำการ replace eqnarray ทุกตัวด้วย align หล่ะครับ
แต่จะใช้ align นั้นต้องโหลด  amsmath ก่อนนะครับ ข้างล่างนี้ได้แสดงให้เห็น
ว่าการใช้ eqnarray นั้นช่องไฟมันจะเพี้ยน ๆ ซึ่งจะไม่เหมือนกับ align

ด้านซ้ายนี้ใช้ eqnarray จะเห็นว่าช่องไฟมัน
เพี้ยนตรง x^2

 

  ส่วนตัวอย่างนี้จะใช้ align ซึ่งช่องไฟจะไม่มี
  ความเพี้ยนใด ๆ ทั้งสิ้น

 

ดังนั้นสำหรับมือใหม่และมือเก่า ก็พยายามหลีกเลี่ยงการใช้ eqnarray แล้วกัน

Not in

ปกติเวลาเราจะบอกว่า x เป็นสมาชิกของ R เราก็จะเขียน LaTeX code อย่างนี้ครับ 

\[   x \in R \]

ถ้าดีขึ้นมาหน่อยก็ใช้ DS Fonts โดยเขียนเป็น \mathds{R} เพื่อความสวยงาม แต่
ถ้าจะเขียนอย่านี้หล่ะ นึกไม่ออกใช่ไหมครับ ลองหาดูก่อนก็ได้ บอกได้เลยว่า
ไม่มีหรอก อย่างนี้ต้องใช้เทคนิคกันหน่อย ให้ใช้ package cancel ครับ ดังนี้

\usepackage{cancel}
….
\[ x \cancel{\in} R \]

ก็จะได้สิ่งที่ปรารถณาครับ  จริง ๆ แล้วเราสามารถใช้คำสั่ง

\not\in

ได้เลย โดยไม่ต้องเรียก package ใด ๆ อีก แต่ผลที่ได้จะไม่สวยเท่า อย่างไรก็ตาม package  cancel นั้น ก็ไม่เหมาะกับสัญลักษณ์ที่มีความยาว เช่น

\longrightarrow

เป็นต้น พวกนี้จะได้ผลไม่พึงประสงค์ ในอนาคตอันใกล้คุณ Heiko Oberdiek ซึ่งได้ออก package centernot ที่ได้อัพโหลดไปไว้บท CTAN แล้ว MikTeX คงจะรวม package
 นี้เข้าไปด้วยในไม่ช้าครับ ซึ่งตัวใหม่นี้ให้ผลที่ดีกว่ามาก ๆ

วันนี้เองค้นไปค้นมา เจอคำสั่ง

\notin

ซึ่งมีมาพร้อมอยู่แล้ว ไม่ต้องไปใส่ package เพิ่ม ใช้ได้ทันที งานนี้ปล่อยไก่ตัวใหญ่เลย

Free Math Fonts for TeX and LaTeX

เรื่อง Fonts เป็นเรื่องหนึ่งที่คนในวงการ LaTeX ไม่ค่อยเรื่องมากเท่าไหร่ อาจจะเป็น เพราะของที่มีให้มันสวยอยู่แล้วก็ได้ แต่ในการทำ screen presentation ทำ lecture notes รวมไปถึงการทำรายงานที่ต้องการความแตกต่าง Fonts เป็นสิ่งหนึ่งที่มักจะ เป็นตัวเลือกต้น ๆ ที่ต้องเปลี่ยนกัน สำหรับ Free Math Fonts นาย Stephen G. Hartke ได้แบ่งเวลาอันมีค่าทำไว้ให้ได้ เลือกอ่านเลือกใช้กัน ตามนี้ครับ

  1. A Survey of Free Math Fonts for TeX and LaTeX html version
  2. A Survey of Free Math Fonts for TeX and LaTeX pdf version

ตัวที่นาย Hartke ได้แนะนำให้ใช้ในการทำ Screen presentation ก็คือ Arev San. ซึ่ง คนทำก็ไม่ใช่ใครอื่น ก็คือนาย Hartke เอง ได้พัฒนาจากประสบการณ์ตรง ข้อเสียข้อ เดียวของ Font ชุดนี้คือเวลาเป็นหนังสือแล้วไม่สวย แต่เวลาขึ้นไปบน screen แล้วจะ เห็นชัดเจนดีแม้ในระยะไกล