21 Kasım 2010

LaTeX de Tablolar

Tablolar birçok dokümanın vazgeçilmez unsurlarından biridir. Özellikle verileri topluca, daha kolay okunur ve daha anlaşılır biçimde sunduğundan çoğunlukla tercih sebebidir. LaTeX de tablolar tabular ortamında kullanılır.

Oluşturulacak tablonun sütun sayısı, sütunların ne şekilde hizalanacağı, sütunlar arasında ayrıcı çizgi, vb. parametre olarak verilirken sütunların genişliği ve satırların yüksekliği LaTeX tarafından ayarlanır. İlave paketler yardımıyla LaTeX in standart tablo komutlarının yanında tabloların özelleştirilebileceği yeni komutlar da söz konusu olabilir. Basit bir tablo örneği aşağıda verilmiştir.



Bu tabloyu oluşturan komutlar aşağıdaki gibidir:



İlk satırdaki {crrrrl} ifadesi tablonun altı sütundan oluştuğunu ve ilk sütunun içerisinde yer alan ifadelerin ortalı, 2., 3., 4. ve 5. sütundaki ifadelerin sağa yaslı, 6. sütundaki ifadelerin ise sola yaslı olacağını belirtmektedir. Sütunlar birbirinden & simgesi ise ayrılırken \\ simgesi ise satırın sona erdiğini göstermektedir.

Sütunlar için kullanılabilecek karakterler sola hizalama için l, sağa hizalama için r, ortalamak için c ve paragraflar için ise p dir. Ancak bir sütun için p simgesi kullanılacak ise bu simge ile birlikte paragrafın genişliğinin de verilmesi gerekir. Aşağıda tablo ile paragraf içeren tablolara bir örnek sunulmuştur.





Eğer tablo bir satır içerisinde kullanılacaksa, bu durumda tablonun bulunduğu satıra göre dikey olarak nasıl hizalanacağı t, b ve c simgeleri ile belirtilir. Bu harfler sırasıyla tablonun üst, alt ve ortalı olarak hizalanacağını göstermektedir. Aşağıda bu duruma bir örnek verilmiştir:



Yukarıdaki tabloların LaTeX kodundaki \hline komutları tablonun satırları arasına yatay çizgiler çizilmesi için kullanılır. Bu komut ard arda iki kez kullanılırsa satırlar arasına çift yatay çizgi çizilir. Sütunlar arasına dikey çizgi çizdirilmesi nispeten daha kolaydır. Bunun için tablonun sütunları tanımlanırken sütunlar arasına | simgesinin koyulması yeterlidir. Eğer bu karakter iki kez kullanılacak olursa sütunlar arasına çift çizgi çizilir. Sütunlar arasına çizgi dışında başka karakterler de koyulabilir. Bunun için @ simgesi ile beraber sütunlar arasına koyulacak simgeyi vermek yeterlidir. Tüm bunlar aşağıdaki tabloda örnek olarak verilmiştir.




Yukarıdaki tablo gerçekte üç sütundan oluşmasına rağmen 2. ve 3. sütunlar birbirinden . simgesi ile ayrıldığından tek sütun gibi görünmektedir.

Çoğu zaman tablonun bazı sütunlarının birleştirilmesi gerekebilir. Bu durumda \multicolumn komutu \multicolumn{sayı}{hiza}{metin} şeklinde kaç sütunun birleştirileceği, birleştirilen hücrenin nasıl hizalanacağı ve hücre içerisine yerleştirilecek metin ile birlikte kullanılır.




Bu tablonun LaTeX kodununun 7. satırındaki \cline{i-j} komutu ile sadece i. sütundan j. sütuna kadar bir yatay çizgi çizilir.

Tablonun sütunları arasındaki boşlukları \tabcolsep değerini, satırları arasındaki boşlukları ise \arraystretch değerini  değiştirerek ayarlayabilirsiniz.




LaTeX in standart komutlarını kullanarak satırları birleştirmek mümkün değildir. Ancak multirow paketi bu konuda oldukça kullanışlı bir pakettir. Bu paket yardımıyla \multirow komutunu kullanarak satırlar birleştirilebilir. Komutun iki farklı kullanımı vardır. Birincisi \multirow{satır}{*}{metin} biçimindedir. Bu komut ile tablonun satır tane satırı birleştirilip hücre içerisine metin yazılır. İkincisi ise \multirow{satır}{genişlik}{metin} biçimindedir. Bu komut ile yine satır tane satır birleştirilirken hücrenin genişliği verilen genişlik değeri kadar ayarlanır.





Tablolar kullanılırken kimi zaman tablonun çok geniş olması ve sayfaya sığmaması problem yaratabilir. Bu durumda sıklıkla kullanılan yöntem tabloyu 90 derece döndürerek sayfaya yerleştirmektir. Bunu gerçekleştirmek için rotating paketinin sunduğu sideways, rotate, turn ve sidewaystable ortamları kullanılabilir.




Yukarıdaki tablolarda paragraf içeren sütunların dikey olarak üstten hizalandığı dikkatinizi çekmiş olabilir. Hücrelerin dikey olarak üstten, ortalı veya alttan hizalanması array paketi kullanılarak gerçekleştirilebilir. Bu paket paragraflar için p{genişlik} yerine alttan hizalama için b{genişlik} ve ortalamak için m{genişlik} ifadelerinin de kullanılmasını mümkün kılar.




LaTeX tabloları tablonun tümü aynı sayfada olacak şekilde yerleştirmeye çalışır. Ancak, çok fazla satırı olan tablolar tek bir sayfaya sığmayacağı zaman bu durum bir problem oluşturur. Bu problemin çözümü ise longtable paketini kullanmaktadır. Bu durumda tabular ortamı yerine longtable ortamı kullanılır.




Eğer tabloların belli satır, sütun ya da hücrelerinin zemin rengi değiştirilmek istenirse colortbl paketi kullanılabilir. Bu paket ile \hline komutu ile çizdirilen yatay çizgilerin renklerini de değiştirmek mümkündür. Sütunların zemin rengi için \columncolor satırların zemin rengi için \rowcolor tek bir hücrenin zemin rengi için ise \cellcolor komutu kullanılır. Bu komutların en basit şekliyle kullanımları sırasıyla \columncolor[model]{renk}, \rowcolor[model]{renk} ve \cellcolor[model]{renk} şeklindedir. Burada model, rgb, cmyk, gray, vb olabilir. Örneğin, model olarak rgb (Red Green Blue) kullanılacaksa verilecek renk virgül ile ayrılmış ve 0 ile 1 arasındaki üç sayıdan oluşacaktır. Kırmızı için {1,0,0}, yeşil için {0,1,0} ve mavi için {0,0,1} yazılmalı, siyah için {0,0,0} ve beyaz için ise {1,1,1} yazılmalıdır.




LaTeX in standart tablo komutları ile birlikte yukarıda anlatılan paketlere ek olarak daha birçok paketten bahsedilebilir. Bunlardan bazıları slashbox, ctable, rccol, tabularx, tabulary, supertabular  paketleridir.

Gerek yukarıda anlatılanlar hakkında gerekse tablolar ile ilgili diğer paketler hakkında bilgi edinmek isteyenler bu bilgileri
adreslerinde bulabilir.

2 yorum:

  1. Emrah bey öncelikle verdiğiniz bilgiler için teşekkürler. . Elektronik Mühendisliği öğrencisiyim. Latex i raporlarımı yazmakta kullanıyorum. Ancak bu sefer Staj defterimi Latex ile hazırlamak istiyorum. Staj defteri sayfalarının formatını nasıl oluşturailirim? Yardımcı olursanız, bu konuda bir paylaşımınız olursa sevinirim.

    YanıtlaSil
  2. Cok yararli oldu ayrintilar icin tesekkurler.

    YanıtlaSil