LaTeX’de ağaç çizmek (xypic)

LaTeX’le ya da başka bir araç kullanarak ağaç ve şekil çizmek her zaman en büyük işkencelerden birisidir. WYSIWYG bir ortamda bile fareyle şekil yerleştirmek , varolan bir şekli düzenlemek ömür törpüsüdür. LaTeX ‘de xypic kullanarak ağaç benzeri şekilleri kaynak kodun içerisinde, ayrıca araç kullanmadan düzenleyebilirsiniz.

xypic örnek aÄ�açYandakine benzer ağaçları çizmek xypic makrolarıyla çok kolay. Üstelik ağacın ilişkileri parantezlerle gruplandığından programlamaya alışkınsanız kolaylıkla değişiklik yapabileceksiniz.

Temel kurallar:

  • Ağacın her düğümü matrisin bir hücresidir.
  • her hücreden “:[dr]” benzeri bir ifade ile d:aşağı, r:sağa, l:sola, u:yukarı şeklinde başka bir hücreye doğru bir ok çizip o hücrenin tanımından devam edersiniz.
  • bir hücre içeriğinden sonra parantez açarak bir geri dönüş noktası yaratırsınız. Takip eden her virgül son parantezin olduğu hücreye geri döner.

Bu kurallara göre yukarıdaki ağacı çizecek kod:

\\documentclass{....}
\\usepackage[frame,graph,arrow]{xypic}
\\begin{document}
\\xygraph{[]!{<10mm,0mm>:}
A (:[dll]  B ( :[dl] 2 ,
               :[dr] C ( :[dl] D (:[dl] 3,
                                  :[dr] 1),
                         :[dr] 4)),
    :[drr] E ( :[dl] F ,
               :[dr] 6))
}

Kodda ilk satırda gördüğünüz :[dll], A düğümünden sonra bir kez aşağı, iki kez sola gidiyor ve B düğümünü çiziyor. Sonraki parantez B’nin konumunu anımsıyor. B’den :[dl] ile bir kez aşağı, bir kez sola gidiliyor ve 2 çiziliyor. “,”e gelindiğinde son parantez olan B’ye dönülüyor :[dr] ile B’den bir aşağı bir sağa gidilip C çiziliyor ve bu böyle devam ediyor.

:[dll] benzeri ifadedeki :, çizilecek çizginin tanımı. Eğer : yerine – koyarsanız ağaçta ok yerine normal çizgiler olacak. İlk satırdaki []!{<10mm,0mm>:}
ifadesinin ne yaptığını anlamak için biraz denemeniz lazım. Amaç ağacın büyüklük ve yönünü ayarlamak. <10mm,0mm> koordinat ekseninde X yönündeki birim vektörü tanımlıyor. Bunla oynayarak ağacınızı (metinler hariç) dilediğiniz gibi çevirebilirsiniz. Örneğin soldan sağa bir ağaç için <0mm,10mm>, 45 derece eğimli bir ağaç için <10mm,10mm> yapabilirsiniz.

Bu yaklaşımla ağaç dışında “lattice” ya da benzeri çizgeleri de üretebilirsiniz.
Bunun için bir sonraki ipucuna bakabilirsiniz.

Leave a Reply