นาย Raskòlnikov ได้ถามไว้ใน LaTeX Users Group จากเขียนเมตริกซ์ตามในรูปโดยใช้ LaTeX ทำอย่างไร อืมจริง มันซับซ้อนมากเหมือนกัน
มาเริ่มต้นด้วยการทำเส้นปะ แบ่งเมตริกซ์ง่าย ๆ กันก่อน ซึ่งสามารถทำได้โดยการใช้ แพ็กเกจ arydshln โดยการสร้างชุดคำสั่งดังนี้
\usepackage{arydshln}
\begin{document}
\begin{align}
\left[\begin{array}{ccccc:cc} % โคลอนเป็นตัวบอกตำแหน่งของเส้นปะ
0 & 1 & & & 0 & & \\
& & \ddots & & \vdots & & \\
& & & 1 & 0 & & \\
e_0 & e_1 & & \cdots & e_{n-1} & & \\ \hdashline
& & & & & a & c \\
& & & & & d & e
\end{array}\right]
\end{align}
\end{document}
ซึ่งจะได้เมตริกซ์ลักษณะดังนี้


ขั้นต่อไปเป็นการเขียนสัญลักษณ์ให้อยู่ตรงกลางในช่องสี่เหลี่ยมที่เหลือ ซึ่งใช้ความสามารถของแพ็กเกจ multirow โดยในส่วนที่ต้องการขยาย row และ column นั้นให้ทำดังนี้
\multicolumn{ncol}{c}{\multirow{nrow}{*}{$equation$}}
ซึ่งหน้าตามของรหัสต้นที่แก้ไขแล้วจะเป็นดังนี้
\left[\begin{array}{ccccc:cc}
0 & 1 & & & 0 &
\multicolumn{2}{c}{\multirow{4}{*}{$\phi$}}\\
& & \ddots & & \vdots & & \\
& & & 1 & 0 & & \\
e_0 & e_1 & & \cdots & e_{n-1} & & \\\hdashline
\multicolumn{5}{c}{\multirow{2}{*}{$M_1$}} & a & c \\
& & & & & d & e
\end{array}\right]
\end{align}
ซึ่งจะได้เมตริกซ์หน้าตาแบบข้างล่างนี้

ผลที่ได้น่าเกลียดเล็กน้อย จะเห็นว่าเส้นปะตรงมุมด้านขวาล่างนั้นไม่สอดคล้องกับด้านบน ทั้งนี้เพราะตัวแพ็กเกจ arydshln นั้นมีปัญหาเล็กน้อยกับคำสั่ง \multicolumn ทางแก้นั้นง่ายมาก แต่ใช้เวลาคิดนานเหมือนกัน ทางแก้คือเปลี่ยน
\multicolumn{5}{c}{\multirow{2}{*}{$M_1$}
ไปเป็น
\multicolumn{3}{c}{\multirow{2}{*}{$M_1$}
ก็จะแก้ปัญหาการไม่เข้ากันของคำสั่งได้ ทั้งนี้เป็นปัญหาของการคำนวณ
ขั้นต่อมาคือการทำวงเล็บปีกกาด้านข้างด้านบน และด้านข้าง ซึ่งไม่ยากเท่าไหร่โดยใช้แพ็กเกจ bigdelim แต่เพื่อความสวยงามแล้ว ผมจึงเลือกให้วิธีปรับด้วยมือดีกว่า ซึ่งสะดวกและได้ผลที่ถูกใจกว่า ส่วนด้านบนก็ทำคล้าย ๆ กัน เรามาดูด้านข้างกันก่อน ก็ทำโดยการสร้าง array ซ้อน array แบบไม่มีวงเล็บ แล้วใช้การสร้างวงเล็บแบบปรับขนาดอัตโนมัติด้วยคำสั่ง \left. \right} ปรับระยะแนวนอนด้วย \hspace{xcm} และแนวตั้งด้วย \vspace{xcm} ทั้งหมดเป็นดังนี้
\hspace{-0.5cm} % ทำหน้าที่เลื่อน array ตัวที่สองให้เข้าไปใกล้เมตริกซ์อันแรก
\begin{array}{c}
\multirow{4}{*}{$\left.\begin{array}{c} \\[1.6cm]
\end{array}
\right\} n$}\\ \\ \\ \\[0.2cm]
\multirow{2}{*}{$\left.
\begin{array}{c} \\[0.4cm] \end{array}
\hspace{0.07cm}\right\} m$} \\ \\
\end{array}
% ใช้คำสั่ง \multirow ในการสร้าง array ใน array อีกชั้นหนึ่ง
ผลที่ได้เป็นดังรูปข้างล่าง

ซึ่งจะเห็นว่ามันจะไม่ไปกระทบ array ตัวหลัก เอาหละเหลือด้านบน ทำได้โดยการสร้าง array เปล่าเหมือนกัน แต่ต้องสร้างก่อนหน้า array ตัวหลัก และใช้ไสยศาสตร์เข้าช่วยในการสร้างช่องว่างที่มองไม่เห็น จริง ๆ ใช้ \hspace ทำก็ได้ แต่เพื่อให้บทความสมบูรณ์ขึ้น ก็เสนอให้ทำโดยใช้ \hphantom{}
\hspace{0.3cm}
\overbrace{\hphantom{
\begin{array}{ccccc}
e_0 & e_1 & \ddots & 1 & e_{n-1}
\end{array}}}^{n}
\hspace{0.3cm}
\overbrace{\hphantom{
\begin{array}{cc}
a &
\end{array}}}^{i}
ท้ายที่สุดจะเห็นได้ว่าเราก็ยังจำเป็นต้องปรับแต่งด้วย \hspace อีกอยู่ดี

รหัสต้นทั้งหมด ตามข้างล่างนี้นะครับ (เครื่องหมาย & หน้า \hspace{0.3cm} กับหน้า \left[ นั้นเพื่อเป็นการจัด array ให้เริ่มต้นที่ตำแหน่งเดียวกัน)
\begin{align*}
& \hspace{0.3cm}
\overbrace{\hphantom{
\begin{array}{ccccc} e_0 & e_1 & \ddots & 1 & e_{n-1} \end{array}}}^{n}
\hspace{0.3cm}
\overbrace{\hphantom{\begin{array}{cc}a & \end{array}}}^{i}\\
&
\left[\begin{array}{ccccc:cc}
0 & 1 & & & 0 &
\multicolumn{2}{c}{\multirow{4}{*}{$\phi$}} \\
& & \ddots & & \vdots & & \\
& & & 1 & 0 & & \\
e_0 & e_1 & & \cdots & e_{n-1} & & \\\hdashline
& \multicolumn{3}{c}{\multirow{2}{*}{$M_1$}} & & a & c \\
& & & & & d & e
\end{array}\right]
\hspace{-0.5cm}
\begin{array}{c}
\multirow{4}{*}{$\left.
\begin{array}{c} \\[1.6cm] \end{array}\right\}
n$}\\ \\ \\ \\[0.2cm]
\multirow{2}{*}{$\left.
\begin{array}{c}
\\[0.4cm]
\end{array}
\hspace{0.07cm}\right\} m$} \\ \\
\end{array}
\end{align*}
รหัสต้นของอนุญาติไม่จัดนะครับ


[...] arydshln ดูเรื่อง Advanced matrix partitioning (LaTeX) ซึ่งก็มีปัญหามากพอสมควร [...]
[...] arydshln ดูเรื่อง Advanced matrix partitioning (LaTeX) ซึ่งก็มีปัญหามากพอสมควร [...]