<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WJ&#039;s Sandbox</title>
	<atom:link href="http://wittawat.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://wittawat.com/blog</link>
	<description>Random stuff from WJ&#039;s small brain</description>
	<lastBuildDate>Thu, 17 May 2012 05:51:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>ตามหา file manager บน Ubuntu</title>
		<link>http://wittawat.com/blog/?p=899</link>
		<comments>http://wittawat.com/blog/?p=899#comments</comments>
		<pubDate>Thu, 17 May 2012 04:32:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[vi]]></category>

		<guid isPermaLink="false">http://wittawat.com/blog/?p=899</guid>
		<description><![CDATA[หลังจากที่ใช้ Nautilus ซึ่งเป็น file manager ที่ให้มากับ Ubuntu มานาน ระยะหลังนี่เริ่มมีอะไรไม่ถูกใจ เพราะหลังจากเปลี่ยนมาเป็น Ubuntu 12.04 แล้วมีปัญหาเรื่องกดปุ่มบนคีย์บอร์ดแล้วไม่ตอบสนองบ่อยมาก เช่น กดลูกศรลงแล้วไม่เลื่อนลง อันนี้คาดว่า xmonad อาจเป็นสาเหตุส่วนหนึ่งก็ได้ เพราะ xmonad ชอบสร้างปัญหาเรื่อง window focus แต่เนื่องจากไม่อยากทิ้ง xmonad เพื่อ Nautilus เลยต้องทำกลับกันคือทิ้ง Nautilus แล้วไปหา file manager ตัวใหม่ดีกว่า หาไปหามาไปเจอหน้านี้ ซึ่งรวบรวม file manager สำหรับ Linux ไว้เยอะมาก เลยไม่คิดอะไรมากลองเล่นทีละอันไปเลย Dolphin ใช้ได้ดี คล้าย nautilus…]]></description>
			<content:encoded><![CDATA[<p>หลังจากที่ใช้ Nautilus ซึ่งเป็น file manager ที่ให้มากับ Ubuntu มานาน ระยะหลังนี่เริ่มมีอะไรไม่ถูกใจ เพราะหลังจากเปลี่ยนมาเป็น Ubuntu 12.04 แล้วมีปัญหาเรื่องกดปุ่มบนคีย์บอร์ดแล้วไม่ตอบสนองบ่อยมาก เช่น กดลูกศรลงแล้วไม่เลื่อนลง อันนี้คาดว่า xmonad อาจเป็นสาเหตุส่วนหนึ่งก็ได้ เพราะ xmonad ชอบสร้างปัญหาเรื่อง window focus แต่เนื่องจากไม่อยากทิ้ง xmonad เพื่อ Nautilus เลยต้องทำกลับกันคือทิ้ง Nautilus แล้วไปหา file manager ตัวใหม่ดีกว่า</p>
<p>หาไปหามาไปเจอ<a href="http://www.tuxarena.com/2011/06/20-file-managers-for-ubuntu/">หน้านี้</a> ซึ่งรวบรวม file manager สำหรับ Linux ไว้เยอะมาก เลยไม่คิดอะไรมากลองเล่นทีละอันไปเลย</p>
<ol>
<li>Dolphin ใช้ได้ดี คล้าย nautilus มี preview ไฟล์ด้วย แต่มันสำหรับ KDE</li>
<li>Nautilus อันนี้คือที่ใช้มาตลอด</li>
<li>Konqueror สำหรับ KDE อีกแล้ว</li>
<li>PCManFM อันนี้เบา เร็วดี คล้ายๆ Nautilus ใช้งาน tab ได้ คีย์บอร์ด shortcut เหมือน Nautilus หลายจุด ติดใจจุดเดียวคือ ถ้ากด enter เปิดไฟล์ที่เป็น executable มันจะถามว่าจะ execute มั้ย โดยไม่มีให้เลือกว่าจะเปิดไฟล์เพื่อแก้ไข จึงต้องใช้เมาส์มาคลิกขวาและเลือก Open with เอง ส่วนตัวเป็นคนไม่ชอบเมาส์ พยายามหาวิธีแก้ config แล้วหาไม่เจอ</li>
<li>Thunar อันนี้เบา เร็ว เขียนด้วย GTK ใช้ได้เลย ไม่มีปัญหาเรื่องกด enter เปิดไฟล์ ติดแค่ว่ามันไม่มี tab</li>
<li>Rox-Filer ตัวนี้เน้นที่ว่างเยอะๆ เมนูถูกซ่อนไว้ที่คลิกขวาซะส่วนใหญ่ ไม่มี tab (หรือว่าหาไม่เจอ?)</li>
<li>Xfe เห็นคำอธิบายบอกไม่เข้ากับ Gnome หรือ KDE ไม่ได้ลอง</li>
<li>Gnome-commander อันนี้คือ Midnight commander แบบ GUI แนว 2 หน้าต่างซ้ายขวา ไม่ชอบตรงใช้พวก F3, F4 เป็น shortcut</li>
<li>Krusader สำหรับ KDE อีกแล้ว</li>
<li>Midnight commander อันนี้เป็นแอปบน terminal เขียนด้วย ncurses แนว 2 หน้าต่าง ถูกใจเพราะไม่ต้องใช้เมาส์ แต่ติดตรงที่ใช้พวก F3, F4 เป็น shortcut แล้ว F10 ยังไปชนกับ gnome-terminal ด้วย ปัญหาเยอะ ต่อให้ลบ F10 ออกจากรายการ shortcut ของ gnome-terminal ก็ยังมีปัญหาอยู่ดี</li>
<li><strong>Vifm</strong> ตัวนี้ใช่เลย เป็นแอปบน terminal เขียนด้วย ncurses แนว 2 หน้าต่าง ไม่มีการใช้เมาส์ ไม่ใช้ F คีย์ทั้งหลายด้วย แต่ใช้ shortcut แบบ vim แทน ซึ่งปกติชินอยู่แล้ว ใช้ regex เพื่อเลือกไฟล์ได้ ไม่มี tab ก็จริงแต่เนื่องจากมันรันใน terminal อยู่แล้ว ใช้ tab ของ gnome-terminal แทนก็ได้ หรือใช้ bookmark ก็ได้ แค่กด m ตามด้วยตัวอักษรหรือตัวเลขเพื่อบันทึก path ไว้ แล้วกด &#8216; ตามด้วยตัวอักษรเดิม ก็จะกลับมาที่ path เดิม วิธีนี้ใช้ได้ดี ดีจนไม่ต้องเอา tab ก็ได้ กลับไปกลับมาด้วยการกดแค่ 2 ปุ่ม ถ้าจะดู help ให้พิมพ์ :help</li>
</ol>
<p>เนื่องจากเจอ Vifm ถูกใจแล้ว เลยไม่ลองต่อแล้ว แต่เท่าที่ดูผ่านๆที่เหลือก็เป็นพวกแนว 2 หน้าต่างซ้ายขวา ไม่น่ามีอะไรมาก</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://wittawat.com/blog/?p=899" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://wittawat.com/blog/?feed=rss2&#038;p=899</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>เปลี่ยน mapping ของคีย์บอร์ดด้วย xmodmap</title>
		<link>http://wittawat.com/blog/?p=875</link>
		<comments>http://wittawat.com/blog/?p=875#comments</comments>
		<pubDate>Wed, 09 May 2012 05:26:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[xmodmap]]></category>

		<guid isPermaLink="false">http://wittawat.com/blog/?p=875</guid>
		<description><![CDATA[xmodmap คืออะไร xmodmap เป็นโปรแกรมใช้กับ X Windows เพื่อเปลี่ยน mapping ของปุ่มบนคีย์บอร์ด ปกติแล้วทุกๆปุ่มบนคีย์บอร์ดจะมีหมายเลขประจำตัวอยู่ เรียกว่า keycode เวลากดปุ่มลงไป keycode นั้นๆก็จะถูกส่งไปให้ระบบเพื่อเปลี่ยนเป็น action ต่างๆที่นิยามไว้ เจ้า action พวกนี้เรียกว่า keysym ส่วนใหญ่ action ที่ว่านี้ก็ไม่มีอะไรมากไปกว่าแค่พิมพ์ตัวอักษรออกมา แต่ก็มีบางปุ่มที่ทำอะไรมากกว่าแค่พิมพ์ตัวอักษร เช่นพวกปุ่ม multimedia ต่างๆ เช่น ลดความสว่างหน้าจอ เพิ่มเสียง เป็นต้น เนื่องจากระบบ Linux ได้ทำ mapping มาให้อยู่แล้ว (กดปุ่ม a ให้พิมพ์ a, กด b ให้พิมพ์ b)…]]></description>
			<content:encoded><![CDATA[<h1>xmodmap คืออะไร</h1>
<p>xmodmap เป็นโปรแกรมใช้กับ X Windows เพื่อเปลี่ยน mapping ของปุ่มบนคีย์บอร์ด ปกติแล้วทุกๆปุ่มบนคีย์บอร์ดจะมีหมายเลขประจำตัวอยู่ เรียกว่า keycode เวลากดปุ่มลงไป keycode นั้นๆก็จะถูกส่งไปให้ระบบเพื่อเปลี่ยนเป็น action ต่างๆที่นิยามไว้ เจ้า action พวกนี้เรียกว่า keysym ส่วนใหญ่ action ที่ว่านี้ก็ไม่มีอะไรมากไปกว่าแค่พิมพ์ตัวอักษรออกมา แต่ก็มีบางปุ่มที่ทำอะไรมากกว่าแค่พิมพ์ตัวอักษร เช่นพวกปุ่ม multimedia ต่างๆ เช่น ลดความสว่างหน้าจอ เพิ่มเสียง เป็นต้น เนื่องจากระบบ Linux ได้ทำ mapping มาให้อยู่แล้ว (กดปุ่ม a ให้พิมพ์ a, กด b ให้พิมพ์ b) เราจึงใช้งานได้แบบไม่ต้องคิดอะไร</p>
<p>เหตุผลที่ทำให้อยากเปลี่ยน mapping มีหลายอย่าง</p>
<ul>
<li>ตรงปุ่ม Fn, Ctrl, Alt ด้านซ้ายล่างของคีย์บอร์ดเรียงกันไม่เหมือนกับที่เคยใช้งาน กรณีนี้อาจจะสลับ Ctrl กับ Alt เพื่อให้ใช้ได้อย่างที่ชินมา</li>
<li>กด backspace เป็น delete แทน</li>
<li>ตั้งปุ่มที่ไม่เคยได้ใช้ เช่น Capslock ให้เป็นปุ่มอื่นที่มีประโยชน์กว่า</li>
<li>เปลี่ยน a เป็น b เวลาไม่มีอะไรทำ</li>
</ul>
<h1>หา keycode และ keysym</h1>
<p>ก่อนจะเปลี่ยน mapping ได้อันดับแรกต้องรู้ keycode ของปุ่มที่อยากเปลี่ยน วิธีหาคือให้รันคำสั่ง</p>
<pre class="brush: bash; title: ; notranslate">xev</pre>
<p>แล้วจะได้หน้าต่างสีขาวขึ้นมา xev ทำหน้าที่รายงาน event ทั้งหมดที่จับได้ ซึ่งรวมไปถึง key event ด้วย ถ้าลองกด a ก็จะได้ประมาณนี้</p>
<blockquote><p>KeyPress event, serial 30, synthetic NO, window 0x3c00001,<br />
root 0xac, subw 0&#215;0, time 6206663, (718,654), root:(744,656),<br />
state 0&#215;0, keycode 38 (keysym 0&#215;61, a), same_screen YES,<br />
XLookupString gives 1 bytes: (61) &#8220;a&#8221;<br />
XmbLookupString gives 1 bytes: (61) &#8220;a&#8221;<br />
XFilterEvent returns: False</p></blockquote>
<p>จุดสำคัญคือบรรทัดที่ 3 ที่บอกว่า</p>
<blockquote><p>keycode 38 (keysym 0&#215;61, a)</p></blockquote>
<p>หมายความว่าปุ่มนี้มี keycode 38 แล้ว map ไปที่ keysym ที่ชื่อว่า a</p>
<h1>เปลี่ยน mapping</h1>
<p>ก่อนเริ่มเปลี่ยน mapping ให้ทำ backup ของ mapping ตัวปัจจุบันไว้ก่อนด้วยคำสั่ง</p>
<pre class="brush: bash; title: ; notranslate">xmodmap -pke &gt; xmodmap.default </pre>
<p>จะได้ไฟล์ xmodmap.default ที่เก็บการตั้งค่า mapping ทั้งหมด ถ้าทำ mapping พังแล้วต้องโหลดกลับไปใหม่ก็ใช้</p>
<pre class="brush: bash; title: ; notranslate">xmodmap xmodmap.default</pre>
<p>ขั้นตอนการเปลี่ยนคือ</p>
<ol>
<li>หา keycode ของปุ่มที่อยากเปลี่ยน (ขอแทนด้วย x)</li>
<li>หา keysym ที่อยากได้ (แทนด้วย y)</li>
</ol>
<p>แล้วใช้คำสั่ง</p>
<pre class="brush: bash; title: ; notranslate">xmodmap -e &quot;keycode x = y&quot;</pre>
<p>แค่นี้ ตอนกดปุ่มที่มี keycode x ก็จะทำ keysym y</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://wittawat.com/blog/?p=875" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://wittawat.com/blog/?feed=rss2&#038;p=875</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ขนาดของเส้น error bar ใน Matlab</title>
		<link>http://wittawat.com/blog/?p=866</link>
		<comments>http://wittawat.com/blog/?p=866#comments</comments>
		<pubDate>Fri, 16 Mar 2012 08:07:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[matlab]]></category>
		<category><![CDATA[plot]]></category>

		<guid isPermaLink="false">http://wittawat.com/blog/?p=866</guid>
		<description><![CDATA[ปกติเวลา plot กราฟที่มี error bar เพื่อแสดงค่า SD ก็ใช้คำสั่ง errorbar ถ้าตอนเรียกใช้ errorbar มีการเปลี่ยนขนาดของเส้นด้วยคำสั่งประมาณนี้ ค่านี้ก็จะมีผลไปถึงเส้นของ error bar ด้วย แต่มีบางทีอยากได้ขนาดของเส้น plot กับเส้น error bar ไม่เท่ากัน เช่น อยากให้เส้น plot หนา แต่ error bar บางหน่อย วิธีคือทำแบบนี้ เท่าที่เข้าใจคือ Children เป็น sub handle ของ plot โดยรวม C เป็น list มีขนาด 2 อันแรกคืออะไรไม่รู้…]]></description>
			<content:encoded><![CDATA[<p>ปกติเวลา plot กราฟที่มี error bar เพื่อแสดงค่า SD ก็ใช้คำสั่ง errorbar ถ้าตอนเรียกใช้ errorbar มีการเปลี่ยนขนาดของเส้นด้วยคำสั่งประมาณนี้
<pre class="brush: matlabkey; title: ; notranslate">errorbar(x, y, sd, 'LineWidth', 3)</pre>
<p>ค่านี้ก็จะมีผลไปถึงเส้นของ error bar ด้วย แต่มีบางทีอยากได้ขนาดของเส้น plot กับเส้น error bar ไม่เท่ากัน เช่น อยากให้เส้น plot หนา แต่ error bar บางหน่อย วิธีคือทำแบบนี้</p>
<pre class="brush: matlabkey; title: ; notranslate">
eh = errorbar(x, y, sd, 'LineWidth', 3);
C = get(eh, 'Children');
set(C(2), 'LineWidth', 1);
</pre>
<p>เท่าที่เข้าใจคือ Children เป็น sub handle ของ plot โดยรวม C เป็น list มีขนาด 2 อันแรกคืออะไรไม่รู้ อันที่ 2 คือของ error bar</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://wittawat.com/blog/?p=866" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://wittawat.com/blog/?feed=rss2&#038;p=866</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>สร้าง recovery microSD card ให้กับ Sharp pc-z1</title>
		<link>http://wittawat.com/blog/?p=858</link>
		<comments>http://wittawat.com/blog/?p=858#comments</comments>
		<pubDate>Wed, 14 Mar 2012 09:07:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[netwalker]]></category>

		<guid isPermaLink="false">http://wittawat.com/blog/?p=858</guid>
		<description><![CDATA[มีเครื่อง netbook Sharp pc-z1 (netwalker) ซื้อมานานแล้วแต่ boot ไม่ขึ้น จำไม่ได้ว่าเล่นอะไรไป การ recover คืน ดูจากเว็บของ Sharp มีบอกวิธีทำ recover microSD card ด้วย pc-z1 แต่ไม่ make sense เพราะตอนนี้มันพัง ทำไม่ได้ เลยต้องสร้างด้วยเครื่องอื่น หาไปหามาได้ความว่าจริงๆแล้วที่ทำ recovery microSD เป็น shell script อันหนึ่งโหลดได้จากที่นี่เจ้า script นี้จะ download และสร้าง recovery microSD ให้เอง แต่ต้องแก้อะไรนิดหน่อยคือ ให้เปลี่ยน SDNODE, SDNODE_VALID, SDDEVICE…]]></description>
			<content:encoded><![CDATA[<p>มีเครื่อง netbook Sharp pc-z1 (netwalker) ซื้อมานานแล้วแต่ boot ไม่ขึ้น จำไม่ได้ว่าเล่นอะไรไป การ recover คืน ดูจาก<a href="http://www.sharp.co.jp/support/mit/doc/install.html">เว็บของ Sharp</a> มีบอกวิธีทำ recover microSD card ด้วย pc-z1 แต่ไม่ make sense เพราะตอนนี้มันพัง ทำไม่ได้ เลยต้องสร้างด้วยเครื่องอื่น</p>
<p>หาไปหามาได้ความว่าจริงๆแล้วที่ทำ recovery microSD เป็น shell script อันหนึ่งโหลดได้จาก<a href="http://www.sharp.co.jp/support/ex-data/recovery.sh.tar.gz">ที่นี่</a>เจ้า script นี้จะ download และสร้าง recovery microSD ให้เอง แต่ต้องแก้อะไรนิดหน่อยคือ ให้เปลี่ยน SDNODE, SDNODE_VALID, SDDEVICE และ SDMOUNT ให้ถูกต้อง ค่าพวกนี้หาได้ด้วย</p>
<pre class="brush: plain; title: ; notranslate">mount -l</pre>
<p>แล้วรัน script แล้วก็ทำตามที่มันขึ้นมา (ภาษาญี่ปุ่น) ก็ได้แล้ว</p>
<p>เผื่อมีคนไทยเข้ามาอ่าน</p>
<ul>
<li>リカバリー用microSDカードを作成しますか？ แปลว่า &#8220;จะสร้าง recovery microSD มั้ย&#8221; ตอบ yes</li>
<li>USB端子には何も接続しないでください。แปลว่า &#8220;อย่าเสียบอะไรที่ port USB&#8221; ถอด microSD ออกก่อนแล้วตอบ yes</li>
<li>microSDを挿入してください。แปลว่า &#8220;กรุณาใส่ microSD&#8221; ใส่แล้วตอบ yes</li>
<li>microSDのフォーマットを実行します。แปลว่า &#8220;จะเริ่ม format microSD นะ&#8221; กด ok (<strong>คำเตือน: ข้อมูลบน microSD หายหมด</strong>)</li>
</ul>
<p>ตอนใช้งาน microSD เพื่อ recover ก็ให้ใส่การ์ดแล้วกดปุ่มเม้าส์ซ้ายขวาพร้อมกันข้างไว้ แล้วเปิดเครื่องกดค้างไปเรื่อยๆจนมันขึ้นหน้าจอดำๆเป็นภาษาญี่ปุ่นให้กด Y แล้วก็รอจนมัน recover เสร็จ</p>
<p>ที่มา</p>
<ul>
<li><a href="http://ameblo.jp/yamjp/entry-10693037658.html">http://ameblo.jp/yamjp/entry-10693037658.html</a></li>
<li><a href="http://www.tanimoto.to/PC_DIY/UbuntuJA/index.html">http://www.tanimoto.to/PC_DIY/UbuntuJA/index.html</a> (อันนี้คนเขียน เขียนไปบ่นไป)</li>
</ul>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://wittawat.com/blog/?p=858" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://wittawat.com/blog/?feed=rss2&#038;p=858</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>คอมไพล์ preamble ใน latex</title>
		<link>http://wittawat.com/blog/?p=851</link>
		<comments>http://wittawat.com/blog/?p=851#comments</comments>
		<pubDate>Fri, 02 Mar 2012 11:11:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[beamer]]></category>
		<category><![CDATA[latex]]></category>

		<guid isPermaLink="false">http://wittawat.com/blog/?p=851</guid>
		<description><![CDATA[ช่วงนี้กำลังหาวิธีทำให้การคอมไพล์ไฟล์ latex เร็วขึ้น วิธีหนึ่งก็คือการคอมไพล์ preamble ของ latex เตรียมไว้ก่อน ซึ่งทำให้เวลาใช้คำสั่ง latex หรือ pdflatex จะไม่มีการประมวลผลพวก usepackage ทั้งหลาย ช่วยลดเวลาคอมไพล์ได้ (แต่ประมาณ 2 วินาทีเอง จากที่วัดดู) อันนี้มีประโยชน์สำหรับคนใช้ beamer เพราะ header เยอะมาก วิธีคือให้ทำดังนี้ เรียกชื่อไฟล์ latex ว่า main.tex ละกัน สร้างไฟล์ใหม่ชื่อ preamble.tex แล้วแยกส่วนที่ต้องการคอมไพล์เตรียมไว้ก่อนไปไว้ที่นั่น ควรเป็นส่วนที่ไม่มีการเปลี่ยนแปลงบ่อยเช่น พวก usepackage ทั้งหลาย สำหรับคนใช้ pdflatex รัน แล้วจะได้ไฟล์ชื่อ preamble.fmt มา ถ้าใช้…]]></description>
			<content:encoded><![CDATA[<p>ช่วงนี้กำลังหาวิธีทำให้การคอมไพล์ไฟล์ latex เร็วขึ้น วิธีหนึ่งก็คือการคอมไพล์ preamble ของ latex เตรียมไว้ก่อน ซึ่งทำให้เวลาใช้คำสั่ง latex หรือ pdflatex จะไม่มีการประมวลผลพวก usepackage ทั้งหลาย ช่วยลดเวลาคอมไพล์ได้ (แต่ประมาณ 2 วินาทีเอง จากที่วัดดู) อันนี้มีประโยชน์สำหรับคนใช้ beamer เพราะ header เยอะมาก วิธีคือให้ทำดังนี้ เรียกชื่อไฟล์ latex ว่า main.tex ละกัน</p>
<ol>
<li>สร้างไฟล์ใหม่ชื่อ preamble.tex แล้วแยกส่วนที่ต้องการคอมไพล์เตรียมไว้ก่อนไปไว้ที่นั่น ควรเป็นส่วนที่ไม่มีการเปลี่ยนแปลงบ่อยเช่น พวก usepackage ทั้งหลาย</li>
<li>สำหรับคนใช้ pdflatex รัน
<pre class="brush: latex; title: ; notranslate">pdflatex -ini &quot;&amp;pdflatex preamble.tex\dump&quot;</pre>
<p>แล้วจะได้ไฟล์ชื่อ preamble.fmt มา ถ้าใช้ latex ให้เปลี่ยน pdflatex ให้เป็น latex</li>
<li>ที่ main.tex ใส่ <code>%&amp;preamble</code> ไปที่บรรทัดแรก</li>
<li>คอมไพล์เอกสารตามปกติ ถ้าไม่ผ่านให้ลองใช้
<pre class="brush: latex; title: ; notranslate">pdflatex -parse-first-line</pre>
<p>แทน</li>
</ol>
<p>ก็จะได้ทุกอย่างเหมือนเดิม เพียงแค่ตอนคอมไพล์จะไม่มีการประมวลผล preamble วิธีนี้พูดสั้นๆก็คือการคอมไพล์ preamble แบบ manual นั่นเอง แน่นอนว่าถ้า preamble มีอะไรเปลี่ยนก็ต้องคอมไพล์เองใหม่ด้วย</p>
<p>ที่มา</p>
<ul>
<li><a href="http://magic.aladdin.cs.cmu.edu/2007/11/02/precompiled-preamble-for-latex/">http://magic.aladdin.cs.cmu.edu/2007/11/02/precompiled-preamble-for-latex/</a></li>
<li><a href="http://www.physics.hmc.edu/latex.php">http://www.physics.hmc.edu/latex.php</a></li>
</ul>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://wittawat.com/blog/?p=851" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://wittawat.com/blog/?feed=rss2&#038;p=851</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ใส่หมายเลขบรรทัดใน Latex</title>
		<link>http://wittawat.com/blog/?p=842</link>
		<comments>http://wittawat.com/blog/?p=842#comments</comments>
		<pubDate>Thu, 09 Feb 2012 05:00:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[latex]]></category>

		<guid isPermaLink="false">http://wittawat.com/blog/?p=842</guid>
		<description><![CDATA[การเขียนบทความที่มีผู้เขียนหลายคนบางทีมีความจำเป็นต้องแลกเปลี่ยนส่วนที่แต่ละคนเขียน จะคุยกันสะดวกถ้าบรรทัดมีหมายเลขกำกับ (ได้ไอเดียนี้มาจาก template ของ ICML) วิธีใส่หมายเลขบรรทัด อันดับแรกให้หาโหลด lineno.sty ใครใช้ Ubuntu ให้ทำ จากนั้นเปิดหมายเลขบรรทัดด้วย แค่นี้ก็ได้แล้ว แต่มีประเด็นนิดหน่อย คือปกติเลขบรรทัดตัวเล็กมาก และเป็นสีดำเหมือนตัวอักษรปกติ อยากได้สีเทา วิธีแก้คือ อีกประเด็นคือ ปกติเลขบรรทัดจะแสดงที่ด้านซ้าย แต่สำหรับเอกสาร 2 คอลัมน์ มันควรแสดงด้านขวาสำหรับคอลัมน์ขวา วิธีแก้คือตอนสั่ง usepackage ให้ใช้แบบนี้แทน ที่มา: http://www.ctan.org/tex-archive/macros/latex/contrib/lineno Share on Facebook]]></description>
			<content:encoded><![CDATA[<p>การเขียนบทความที่มีผู้เขียนหลายคนบางทีมีความจำเป็นต้องแลกเปลี่ยนส่วนที่แต่ละคนเขียน จะคุยกันสะดวกถ้าบรรทัดมีหมายเลขกำกับ (ได้ไอเดียนี้มาจาก template ของ ICML) วิธีใส่หมายเลขบรรทัด อันดับแรกให้หาโหลด lineno.sty ใครใช้ Ubuntu ให้ทำ</p>
<pre class="brush: bash; title: ; notranslate">sudo apt-get install texlive-humanities</pre>
<p>จากนั้นเปิดหมายเลขบรรทัดด้วย</p>
<pre class="brush: latex; title: ; notranslate">
\usepackage{lineno}
\linenumbers
</pre>
<p>แค่นี้ก็ได้แล้ว แต่มีประเด็นนิดหน่อย คือปกติเลขบรรทัดตัวเล็กมาก และเป็นสีดำเหมือนตัวอักษรปกติ อยากได้สีเทา วิธีแก้คือ</p>
<pre class="brush: latex; title: ; notranslate">
\renewcommand{\linenumberfont}{\normalfont\color{gray}}
</pre>
<p>อีกประเด็นคือ ปกติเลขบรรทัดจะแสดงที่ด้านซ้าย แต่สำหรับเอกสาร 2 คอลัมน์ มันควรแสดงด้านขวาสำหรับคอลัมน์ขวา วิธีแก้คือตอนสั่ง usepackage ให้ใช้แบบนี้แทน</p>
<pre class="brush: latex; title: ; notranslate">
\usepackage[switch]{lineno}
</pre>
<p>ที่มา:</p>
<ul>
<li><a href="http://www.ctan.org/tex-archive/macros/latex/contrib/lineno">http://www.ctan.org/tex-archive/macros/latex/contrib/lineno</a></li>
</ul>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://wittawat.com/blog/?p=842" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://wittawat.com/blog/?feed=rss2&#038;p=842</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ย่อขนาดตารางใน Latex</title>
		<link>http://wittawat.com/blog/?p=837</link>
		<comments>http://wittawat.com/blog/?p=837#comments</comments>
		<pubDate>Thu, 02 Feb 2012 07:14:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[beamer]]></category>
		<category><![CDATA[latex]]></category>

		<guid isPermaLink="false">http://wittawat.com/blog/?p=837</guid>
		<description><![CDATA[การใส่ตารางใน Latex ปกติก็ใช้ tabular ร่วมกับ floating environment table คำสั่ง tabular นี้ไม่มี option ให้ย่อขนาดของตารางได้ เท่าที่หาได้มีหลายวิธีที่สามารถย่อขนาดได้ วิธีแรกคือใช้คำสั่ง tiny หรือ small เพื่อย่อตารางแบบนี้ แต่มันคุมขนาดไม่ได้ อีกวิธีที่ดีกว่าคือใช้ scalebox ซึ่งสามารถกำหนด ratio ที่ต้องการได้ เช่นถ้าอยากย่อให้เหลือ 60% ก็ทำแบบนี หรือจะใช้ resizebox ก็ได้ ซึ่งคุมได้ทั้งความกว้าง ความยาว สำหรับคนใช้ beamer อีกวิธีที่สามารถย่อ table ได้คือใช้ option shrink แบบนี้ แต่ถ้าใช้วิธีนี้จะทำให้ทุกอย่าง (ไม่ใช่แค่ table) ใน…]]></description>
			<content:encoded><![CDATA[<p>การใส่ตารางใน Latex ปกติก็ใช้ tabular ร่วมกับ floating environment table คำสั่ง tabular นี้ไม่มี option ให้ย่อขนาดของตารางได้ เท่าที่หาได้มีหลายวิธีที่สามารถย่อขนาดได้</p>
<p>วิธีแรกคือใช้คำสั่ง tiny หรือ small เพื่อย่อตารางแบบนี้</p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://wittawat.com/blog/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://wittawat.com/blog/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://wittawat.com/blog/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://wittawat.com/blog/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="latex" style="font-family:monospace;"><span class="re12">\tiny</span>
<span class="co1">%\small</span>
<span class="re8">\begin</span><span class="sy0">{</span><span class="re9"><span class="re7">tabular</span></span><span class="sy0">}{</span><span class="re9">...</span><span class="sy0">}</span>
<span class="co1">%....</span>
<span class="re8">\end</span><span class="sy0">{</span><span class="re9"><span class="re7">tabular</span></span><span class="sy0">}</span></pre></div></div>
<p>แต่มันคุมขนาดไม่ได้ อีกวิธีที่ดีกว่าคือใช้ scalebox ซึ่งสามารถกำหนด ratio ที่ต้องการได้ เช่นถ้าอยากย่อให้เหลือ 60% ก็ทำแบบนี<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://wittawat.com/blog/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://wittawat.com/blog/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://wittawat.com/blog/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://wittawat.com/blog/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="latex" style="font-family:monospace;"><span class="sy0">\</span><a href="http://www.golatex.de/wiki/index.php?title=%5Cusepackage"><span class="kw1">usepackage</span></a><span class="sy0">{</span><span class="re9">graphicx</span><span class="sy0">}</span>
<span class="co1">%...</span>
<span class="re12">\scalebox</span><span class="sy0">{</span><span class="re9">0.6</span><span class="sy0">}{</span><span class="re9">
 <span class="re8">\begin</span><span class="sy0">{</span><span class="re7">tabular</span></span><span class="sy0">}{</span><span class="re9">..</span><span class="sy0">}</span>
  <span class="co1">%...</span>
 <span class="re8">\end</span><span class="sy0">{</span><span class="re9"><span class="re7">tabular</span></span><span class="sy0">}</span>
<span class="sy0">}</span></pre></div></div></p>
<p>หรือจะใช้ resizebox ก็ได้ ซึ่งคุมได้ทั้งความกว้าง ความยาว</p>
<p>สำหรับคนใช้ beamer อีกวิธีที่สามารถย่อ table ได้คือใช้ option shrink แบบนี้</p>
<div id="wpshdo_3" class="wp-synhighlighter-outer"><div id="wpshdt_3" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_3"></a><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Show code only"><img border="0" style="border: 0 none" src="http://wittawat.com/blog/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Print code"><img border="0" style="border: 0 none" src="http://wittawat.com/blog/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://wittawat.com/blog/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://wittawat.com/blog/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="latex" style="font-family:monospace;"><span class="re8">\begin</span><span class="sy0">{</span><span class="re9"><span class="re7">frame</span></span><span class="sy0">}[</span><span class="re2">shrink=10</span><span class="sy0">]{</span><span class="re9">frame title</span><span class="sy0">}</span>
<span class="co1">%...</span>
<span class="re8">\end</span><span class="sy0">{</span><span class="re9"><span class="re7">frame</span></span><span class="sy0">}</span></pre></div></div>
<p>แต่ถ้าใช้วิธีนี้จะทำให้ทุกอย่าง (ไม่ใช่แค่ table) ใน frame ถูกย่อเพื่อให้อยู่ใน frame ได้</p>
<p>ที่มา</p>
<ul>
<li><a href="http://tex.stackexchange.com/questions/5067/shrinking-tables-for-presentations">http://tex.stackexchange.com/questions/5067/shrinking-tables-for-presentations</a></li>
<li><a href="http://en.wikibooks.org/wiki/LaTeX/Tables">http://en.wikibooks.org/wiki/LaTeX/Tables</a></li>
</ul>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://wittawat.com/blog/?p=837" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://wittawat.com/blog/?feed=rss2&#038;p=837</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>เปลี่ยนสีของลิงค์ใน beamer</title>
		<link>http://wittawat.com/blog/?p=810</link>
		<comments>http://wittawat.com/blog/?p=810#comments</comments>
		<pubDate>Mon, 30 Jan 2012 13:00:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[beamer]]></category>
		<category><![CDATA[latex]]></category>

		<guid isPermaLink="false">http://wittawat.com/blog/?p=810</guid>
		<description><![CDATA[&#160; ปกติใน Latex หากต้องการใส่สีให้กับลิงค์ต่างๆเช่น URL หรือลิงค์ที่เกิดจากการอ้างอิง แค่ใส่ code ก็ได้แล้ว ถ้าจะเปลี่ยนสีก็ใช้ linkcolor คือลิงค์ทั่วไปในเอกสาร (ปกติสีแดง) ส่วน citecolor คือลิงค์ที่เกิดจากการอ้างอิง (ปกติสีเขียว) ที่อยากทำคืออยากได้ citecolor=gray แต่ปัญหาเกิดเมื่อใช้ hyperref ร่วมกับ beamer เพราะไม่รู้ทำไมเปลี่ยน citecolor แล้วไม่มีผล ดูเหมือนว่าสีของลิงค์ทุกชนิดจะถูกคุมด้วย linkcolor หมดเลย ซึ่งเป็นปัญหา วิธีแก้แบบ hack ก็แน่นอน ใช้ ไปก่อน แต่ประเด็นคือมันไปกระทบกับสารบัญ เพราะสารบัญก็เป็นลิงค์เหมือนกัน ก็เลยไปตามแก้ด้วยการทำข้อยกเว้นตอนใส่สารบัญ แบบนี้ ส่วนตัวแล้วไม่ชอบวิธีนี้แต่ไม่รู้จะแก้ยังไง ถ้าจะให้สารบัญแสดงขึ้นมาตอนเปลี่ยน section ใหม่ก็ให้ทำคล้ายๆกัน ประมาณนี้ ที่มา…]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>ปกติใน Latex หากต้องการใส่สีให้กับลิงค์ต่างๆเช่น URL หรือลิงค์ที่เกิดจากการอ้างอิง แค่ใส่ code</p>
<pre class="brush: latex; title: ; notranslate">
\usepackage{hyperref}
\hypersetup{colorlinks}
</pre>
<p>ก็ได้แล้ว ถ้าจะเปลี่ยนสีก็ใช้</p>
<pre class="brush: latex; title: ; notranslate">
\hypersetup{linkcolor=red,citecolor=green}
</pre>
<p>linkcolor คือลิงค์ทั่วไปในเอกสาร (ปกติสีแดง) ส่วน citecolor คือลิงค์ที่เกิดจากการอ้างอิง (ปกติสีเขียว)</p>
<p>ที่อยากทำคืออยากได้ citecolor=gray แต่ปัญหาเกิดเมื่อใช้ hyperref ร่วมกับ beamer เพราะไม่รู้ทำไมเปลี่ยน citecolor แล้วไม่มีผล ดูเหมือนว่าสีของลิงค์ทุกชนิดจะถูกคุมด้วย linkcolor หมดเลย ซึ่งเป็นปัญหา วิธีแก้แบบ hack ก็แน่นอน ใช้</p>
<pre class="brush: latex; title: ; notranslate">
\hypersetup{linkcolor=gray}
</pre>
<p>ไปก่อน แต่ประเด็นคือมันไปกระทบกับสารบัญ เพราะสารบัญก็เป็นลิงค์เหมือนกัน ก็เลยไปตามแก้ด้วยการทำข้อยกเว้นตอนใส่สารบัญ แบบนี้</p>
<pre class="brush: latex; title: ; notranslate">
\begin{frame}{Outline}
 \begingroup
  \hypersetup{linkcolor=black}
  \tableofcontents
 \endgroup
\end{frame}
</pre>
<p>ส่วนตัวแล้วไม่ชอบวิธีนี้แต่ไม่รู้จะแก้ยังไง ถ้าจะให้สารบัญแสดงขึ้นมาตอนเปลี่ยน section ใหม่ก็ให้ทำคล้ายๆกัน ประมาณนี้</p>
<div id="wpshdo_4" class="wp-synhighlighter-outer"><div id="wpshdt_4" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_4"></a><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Show code only"><img border="0" style="border: 0 none" src="http://wittawat.com/blog/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Print code"><img border="0" style="border: 0 none" src="http://wittawat.com/blog/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://wittawat.com/blog/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://wittawat.com/blog/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="latex" style="font-family:monospace;"><span class="re12">\AtBeginSection</span><span class="sy0">[</span><span class="re2"><span class="sy0">]</span>
 <span class="sy0">{</span><span class="re9">
   <span class="re8">\begin</span><span class="sy0">{</span><span class="re7">frame</span></span><span class="sy0">}</span>&lt;beamer&gt;<span class="sy0">{</span><span class="re9">Outline</span><span class="sy0">}</span>
     <span class="re12">\begingroup</span>
     <span class="re12">\hypersetup</span><span class="sy0">{</span><span class="re9">linkcolor=black</span><span class="sy0">}</span>
     <span class="sy0">\</span><a href="http://www.golatex.de/wiki/index.php?title=%5Ctableofcontents"><span class="kw1">tableofcontents</span></a><span class="sy0">[</span>currentsection</span><span class="sy0">]</span>
     <span class="re12">\endgroup</span>
   <span class="re8">\end</span><span class="sy0">{</span><span class="re9"><span class="re7">frame</span></span><span class="sy0">}</span>
 <span class="sy0">}</span></pre></div></div>
<p>ที่มา</p>
<ul>
<li><a href="http://www.tug.org/applications/hyperref/manual.html">http://www.tug.org/applications/hyperref/manual.html</a></li>
<li><a href="http://groups.google.com/group/comp.text.tex/browse_thread/thread/f112d57202c9caa9">http://groups.google.com/group/comp.text.tex/browse_thread/thread/f112d57202c9caa9</a></li>
</ul>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://wittawat.com/blog/?p=810" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://wittawat.com/blog/?feed=rss2&#038;p=810</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>การใส่รูปจำนวนมากใน Latex โดยใช้ subfig</title>
		<link>http://wittawat.com/blog/?p=793</link>
		<comments>http://wittawat.com/blog/?p=793#comments</comments>
		<pubDate>Thu, 12 Jan 2012 05:50:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[latex]]></category>

		<guid isPermaLink="false">http://wittawat.com/blog/?p=793</guid>
		<description><![CDATA[การใส่รูปใน Latex แบบปกติก็ใช้ ก็ได้แล้ว หากมีรูปจำนวนมากที่ต้องการใส่ในเอกสารก็ใช้คำสั่งข้างต้นหลายๆครั้งก็ได้ แต่ปัญหาที่เกิดขึ้นคือรูปแต่ละรูปจะมีเบอร์เป็นของตัวเอง ทำให้อ้างอิงลำบาก ตัวอย่างเช่น ทำการทดลองบนข้อมูล 20 ชุด ได้กราฟมา 20 อัน แล้วอยากใส่กราฟพวกนี้ลงในเอกสาร แต่เวลาเขียนคำอธิบายกราฟเหล่านี้เราไม่อยากเขียนแบบนี้ The results are shown in Figure 1, Figure 2, Figure 3, &#8230; ไม่น่าดูเท่าไหร่ จะดีกว่าถ้าเราสามารถใส่แต่ละกราฟให้เป็น sub-figure ของ figure ใหญ่ แล้วอ้าง figure ใหญ่อันเดียว The results are shown in Figure 1. แล้วแต่ละกราฟมีเบอร์เป็น…]]></description>
			<content:encoded><![CDATA[<p>การใส่รูปใน Latex แบบปกติก็ใช้</p>
<pre class="brush: latex; title: ; notranslate">
\begin{figure}[hbt]
\includegraphics[width=0.9\textwidth]{figure_name.here}
\caption{A caption goes here}
\label{fig:label}
\end{figure}
</pre>
<p>ก็ได้แล้ว หากมีรูปจำนวนมากที่ต้องการใส่ในเอกสารก็ใช้คำสั่งข้างต้นหลายๆครั้งก็ได้ แต่ปัญหาที่เกิดขึ้นคือรูปแต่ละรูปจะมีเบอร์เป็นของตัวเอง ทำให้อ้างอิงลำบาก ตัวอย่างเช่น ทำการทดลองบนข้อมูล 20 ชุด ได้กราฟมา 20 อัน แล้วอยากใส่กราฟพวกนี้ลงในเอกสาร แต่เวลาเขียนคำอธิบายกราฟเหล่านี้เราไม่อยากเขียนแบบนี้</p>
<blockquote><p>The results are shown in Figure 1, Figure 2, Figure 3, &#8230;</p></blockquote>
<p>ไม่น่าดูเท่าไหร่ จะดีกว่าถ้าเราสามารถใส่แต่ละกราฟให้เป็น sub-figure ของ figure ใหญ่ แล้วอ้าง figure ใหญ่อันเดียว</p>
<blockquote><p>The results are shown in Figure 1.</p></blockquote>
<p>แล้วแต่ละกราฟมีเบอร์เป็น Figure 1(a), Figure 1(b),.. เป็นต้น อ้างอิงง่าย และรูปที่เกี่ยวกันอยู่กันเป็นกลุ่มด้วย วิธีคือให้ใช้ package ชื่อ subfig เริ่มด้วยการใส่ import package ด้วย</p>
<pre class="brush: latex; title: ; notranslate"> \usepackage[lofdepth,lotdepth]{subfig} </pre>
<p>lofdepth, lotdepth ใส่เพื่อให้ sub-figure เหล่านี้แสดงขึ้นมาใน List of figures, หรือ List of tables จากนั้นใส่รูปด้วยคำสั่ง</p>
<pre class="brush: latex; title: ; notranslate">\begin{figure}[hbt]
\centering
\subfloat[คำอธิบายรูป a]{
\includegraphics{fig1a.file}
\label{fig1a}
}
\subfloat[คำอธิบายรูป b]{
\includegraphics{fig1b.file}
\label{fig1b}
}
\\
\subfloat[คำอธิบายรูป c]{
\includegraphics{fig1c.file}
\label{fig1c}
}
\subfloat[คำอธิบายรูป d]{
\includegraphics{fig1d.file}
\label{fig1d}
}
\caption{ตรงนี้เป็นคำอธิบายทั้งกลุ่ม 4 รูป}
\label{fig:label}
\end{figure}</pre>
<p>หากจะอ้างรูปใหญ่ก็ใช้ ref{fig:label} จะอ้างรูปย่อยๆ เช่นรูป (a) ก็ใช้ ref{fig1a} เป็นต้น</p>
<p>วิธีนี้ก็ยังมีปัญหาอีกสำหรับกรณีที่มีรูปเยอะมาก เพราะตามหลัก figure environment ต้องสามารถแสดงได้ใน 1 หน้ากระดาษ ถ้ามีรูปเยอะจนไม่สามารถใส่ได้ภายใน figure environment เดียว ก็ต้องแยกเป็นหลายๆ figure แบบนี้ (สมมติว่า 1 กระดาษแสดงได้แค่ 2 รูป)</p>
<pre class="brush: latex; title: ; notranslate">
\begin{figure}[hbt]
\centering
\subfloat[คำอธิบายรูป a]{
	\includegraphics{fig1a.file}
	\label{fig1a}
}\\
\subfloat[คำอธิบายรูป b]{
	\includegraphics{fig1b.file}
	\label{fig1b}
}\\
\caption{ตรงนี้เป็นคำอธิบายรูป (a) และ (b)}
\label{fig:label}
\end{figure}

\begin{figure}[hbt]
\ContinuedFloat
\centering
\subfloat[คำอธิบายรูป c]{
	\includegraphics{fig1c.file}
	\label{fig1c}
}\\
\subfloat[คำอธิบายรูป d]{
	\includegraphics{fig1d.file}
	\label{fig1d}
}\\
\caption[]{ตรงนี้เป็นคำอธิบายรูป (c) และ (d)}
\label{fig:label} % label ตรงนี้ต้องเหมือนข้างบน
\end{figure}
</pre>
<p>การใส่คำสั่ง</p>
<pre class="brush: latex; title: ; notranslate">\ContinuedFloat</pre>
<p>จะทำให้เบอร์ของ sub-figure นับต่อไป ไม่เริ่มใหม่ที่ (a) เท่านี้ก็จะได้ 4 รูป โดยใช้ 2 หน้า จะเห็นว่า figure environment อันที่สองมี label เหมือนกับอันแรกและ caption มีการใส่ option ว่างๆ(ตรง &#8220;[]&#8220;) ถ้าไม่ใส่ option ว่างๆที่ว่านี้ จะทำให้เกิด entry ใหม่ใน List of figures ซึ่งไม่ใช่สิ่งที่อยากได้ เพราะถ้าเรามองว่ารูปทั้งหมดเกี่ยวเนื่องกัน ก็ไม่จำเป็นต้องมี entry ใหม่ ให้ทั้งหมดอยู่ภายใต้ entry เดียวกันคือ entry ที่มีคำอธิบายเป็น caption อันแรก</p>
<p>ปัญหายังไม่จบแค่นี้ เพราะเบอร์ของรูปย่อยเป็นแค่ (a), (b), (c),&#8230; ซึ่งเวลามันลอยอยู่ในเอกสารอาจจะไม่รู้เรื่องว่ารูปย่อยอันไหนอยู่ภายใต้รูปใหญ่อันไหน ทางที่ดีคือควรแก้ (a), (b), (c),.. ให้เป็นเบอร์เต็มๆคือ 1 (a), 1 (b), 1 (c),&#8230; จะเข้าใจง่ายกว่า (ในตัวอย่างนี้เบอร์ของรูปใหญ่คือเบอร์ 1) วิธีคือให้ใส่คำสั่งนี้ที่ต้นเอกสาร</p>
<pre class="brush: latex; title: ; notranslate">\renewcommand{\thesubfigure}{\thefigure{} \alph{subfigure}}</pre>
<p>แค่นี้ก็ได้แล้ว เพิ่มเติมคือถ้าเขียนแบบนี้</p>
<pre class="brush: latex; title: ; notranslate">\renewcommand{\thesubfigure}{\alph{subfigure}}</pre>
<p>ก็จะกลับมาเป็นเหมือนเดิมคือ แสดงแค่ (a),(b),(c),&#8230;</p>
<p>ที่มา</p>
<ul>
<li><a href="http://www.latex-community.org/forum/viewtopic.php?f=45&amp;t=4250">http://www.latex-community.org/forum/viewtopic.php?f=45&amp;t=4250</a></li>
<li><a href="http://stackoverflow.com/questions/1078370/subfigs-of-a-figure-on-multiple-pages">http://stackoverflow.com/questions/1078370/subfigs-of-a-figure-on-multiple-pages</a></li>
<li><a href="http://www.peteryu.ca/tutorials/publishing/latex_captions">http://www.peteryu.ca/tutorials/publishing/latex_captions</a></li>
<li><a href="http://texblog.org/2011/05/24/placing-figures-side-by-side-subfig/">http://texblog.org/2011/05/24/placing-figures-side-by-side-subfig/</a></li>
</ul>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://wittawat.com/blog/?p=793" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://wittawat.com/blog/?feed=rss2&#038;p=793</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>print sin() curve บน console</title>
		<link>http://wittawat.com/blog/?p=785</link>
		<comments>http://wittawat.com/blog/?p=785#comments</comments>
		<pubDate>Fri, 16 Dec 2011 06:30:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[challenge]]></category>

		<guid isPermaLink="false">http://wittawat.com/blog/?p=785</guid>
		<description><![CDATA[เจอโจทย์ที่ไหนไม่รู้ลืมแล้ว ให้เขียนโปรแกรมให้ print กราฟ sin แนวตั้งแบบนี้ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * คำตอบแบบใช้ Python Share on Facebook]]></description>
			<content:encoded><![CDATA[<p>เจอโจทย์ที่ไหนไม่รู้ลืมแล้ว ให้เขียนโปรแกรมให้ print กราฟ sin แนวตั้งแบบนี้</p>
<pre>                              *
                                   *
                                       *
                                           *
                                              *
                                                *
                                                 *
                                                 *
                                                *
                                              *
                                           *
                                       *
                                   *
                              *
                         *
                   *
              *
          *
      *
   *
 *
*
*
 *
   *
      *
          *
              *
                   *
                        *</pre>
<p>คำตอบแบบใช้ Python</p>
<pre class="brush: python; title: ; notranslate">
from math import *

lines = 30
width = 50
hpos = (int(width*(1+sin(i*2*pi/lines))/2.0) for i in xrange(1,lines+1))
for p in hpos:
	print(' '*p + '*')
</pre>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://wittawat.com/blog/?p=785" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://wittawat.com/blog/?feed=rss2&#038;p=785</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

