วันนี้เอาแพ็กเกจดี ๆ มาฝากเช่นเคยครับ (?) เรื่องมีอยู่ว่าเวลาเราเขียนหนังสือเรามักจะชอบทำให้ส่วนต่าง ๆ ของหนังสือให้มีความแตกต่างกัน ตัวอย่างเช่น เวลาที่เราต้องการให้มีเส้นกรอบปิดหัวท้ายของส่วนที่เป็นตัวอย่างดังในรูป
ในการสร้างตัวสิ่งแวดล้อม (environment) ตัวอย่าง ดังในรูปนั้น โดยทั่วไปแล้วเราก็จะใช้รูปแบบมาตรฐานที่มีให้กับ LaTeX และ amsmath ดังนี้
\newtheorem{theorem}{ตัวอย่างที่}[chapter]
ซึ่งแน่นอนครับ การใช้คำสั่งมาตรฐานย่อมได้สิ่งที่เป็นมาตรฐาน (แน่นอนสวยงามในแบบมาตรฐาน) ซึ่งย่อมไม่ถูกใจคนนอกกรอบแน่นอน
ถ้าเราไปเปิดหนังสือมีการออกแบบรูปแบบของหนังสือเป็นอย่างดีนั้น ในส่วนของทฤษฎีบท, ตัวอย่าง ฯลฯ ย่อมจะต้องมีรูปแบบที่ตายตัว มีการตกแต่งที่สวยงาม เปิดไปเจอก็จะรู้ว่าตรงนี้เป็นส่วนของตัวอย่าง ตอนที่ผมเขียนวิทยานิพนธ์ก็ได้พยายามทำเช่นเดียวกัน โดยใช้แบบจากหนังสือของ Stephen Boyd หนึ่งในบุคคลแม่แบบของใครหลาย ๆ คน (ลอกกันทุกอณู (ถ้าทำได้)) แน่นอนผมไม่ได้ลอก Boyd เพราะผมต้องทำเองให้เหมือนหรือดีกว่า (ฮา) ตอนที่ผมทำนั้นผมใช้วิธีดังนี้ครับ
\newcounter{Examplecount}[chapter]
\setcounter{Examplecount}{0}
\renewcommand\theExamplecount{\arabic{chapter}.\arabic{Examplecount}}
\makeatletter%
\newenvironment{examplex}
{% This is the begin code
\vspace{-.5em}
\@tempdima0.0cm
\def\endbit{}
\advance\rightskip\@tempdima
\hangindent\@tempdima
\ignorespaces
{\vspace{0.5cm} \begin{flushright}\rule{1\textwidth}{0.5pt}\end{flushright}}
\vspace{-0.0cm}
\refstepcounter{Examplecount}
{ \noindent \small\textbf{ตัวอย่างที่}
\thechapter.\arabic{Examplecount}}
\small
}
{% This is the end code
\nolinebreak\hspace*{\stretch2}
\parfillskip-\@tempdima
\makebox[\@tempdima][r]{\endbit}\par
\raggedleft$\Box$ \\[-0.5em]
\hfill\hspace{0.03\textwidth}\rule{1\textwidth}{0.5pt}
}
ขออนุญาตไม่อธิบายนะครับ เพราะนอกจากจะยุ่งยากแล้วเรายังจะไม่ใช้มันอีกด้วย (ผู้สนใจสามารถดูรายละเอียดได้จากคำสั่ง \newenvironment{}{}{}) สำหรับรหัสต้นข้างต้นนั้น มีปัญหาในหลายส่วนครับ เช่นในกรณีของตัวอย่างที่คร่อมสองหน้า บางครั้งเส้นขอบบนและเส้นขอบล่างจะไม่อยู่ในที่ ๆ มันควรจะอยู่ หรือบางครั้งเส้นขอบบนอยู่หน้าหนึ่ง ตัวเนื้อหาอยู่อีกหน้าหนึ่ง
เวลาผ่านไปนาน หลังจากที่ผมทนใช้รหัสต้นของผมอยู่ปีกว่า ผมก็ได้เริ่มเขียนหนังสือเล่มใหม่ ปัญหาเดิม ๆ กลับมาหลอกหลอนผมอีกครั้งและแก้ยาก ผมเลยใช้วิธีค้นหา แน่นอนผมใช้ทั้ง bing, google และ Stack Exchange ผมก็ได้ผมกับแพ็กเกจ mdframed ซึ่งทำให้งานเหล่านี้ง่ายขึ้นมากทีเดียว สำหรับการทำให้สิ่งแวดล้อมตัวอย่าง มีลักษณะดังรูปข้างต้นนั้นทำดังนี้ครับ
\newtheorem{mdtheorem}{\textbf{ตัวอย่างที่}}[chapter]
\newenvironment{examplex}{%
\begin{mdframed}%
[linewidth=1pt, leftline=false, rightline=false,%
outerlinewidth=2,leftmargin=50,rightmargin=0,%
innertopmargin=-0.6cm, innerleftmargin=0, innerrightmargin=0%
backgroundcolor=white, outerlinecolor=black,%
splittopskip=\topskip, skipbelow=\baselineskip,%
skipabove=\baselineskip, ntheorem]%
\begin{mdtheorem} \small\normalfont}
{\end{mdtheorem}\end{mdframed}}
ซึ่งการใช้งานก็ง่ายมากครับ อ่านคู่มือเอาเองได้เลย เวลาน้อยไม่ขออธิบายแล้วกัน เจอกันใหม่คราวหน้าครับ
