Showing posts with label chessboard. Show all posts
Showing posts with label chessboard. Show all posts

Thursday, October 1, 2015

Chessboard dan Xskak: Menandai Langkah dengan Tanda Panah

Pendahuluan

Sifat dari belajar $\small\LaTeX$ yang membentuk kurva belajar telah membawa saya untuk memperoleh pengetahuan baru tentang tiga hal dari penggunaan paket xskak, yaitu:
  • mencantumkan titik pada penomoran langkah
  • membalik posisi papan, di mana pemain Hitam berada pada bagian bawah
  • menandai langkah terakhir pada permainan yang sedang berlangsung dengan menggunakan tanda panah


Penggunaan Paket Xskak

Menurut saya, salah satu cara untuk membuat dokumen tentang catur dalam $\small\LaTeX$ yang relatif mudah dan memadai adalah dengan menggunakan paket xskak. Paket ini biasa saya sandingkan dengan paket chessboard untuk pembuatan diagramnya. Kedua paket tersebut dibuat oleh seorang ahli, Ulrike Fischer.

Pada umumnya, untuk membuat dokumen tentang catur, dalam preamble kita muat 
\usepackage[LSBC4,T1]{fontenc}
\usepackage{xskak,chessboard}
\setboardfontencoding{LSBC4}
Pengaturan enkripsi huruf dengan LSBC4 menjadikan tampilan diagram (papan dan buah catur) tampak baik dan "halus". Pilihan lainnya adalah LSBC3, seperti yang saya gunakan dalam dokumen terlampir. Itu terjadi karena berkaitan dengan keseluruhan unsur dalam pengkodean untuk dokumen tersebut.

Naskah catur dengan 
xskak dan chessboard menggunakan pengkodean sebagai berikut:
\newchessgame[...] % dengan beberapa opsi, misalnya: result=1--0
\xskakset{...} % pengaturan tertentu
\mainline{...} % langkah-langkah
\variation[invar]{...} % variasi langkah
\variation{...} % variasi langkah lain
\mainline[outvar]{...} % kembali ke langkah teks
\xskakgetgame{result} % hasil permainan setelah mencantumkan opsi "result"
\chessboard[...] % menampilkan diagram dengan beberapa opsi
Penomoran langkah merupakan bagian dari penggunaan paket xskak. Untuk menunjukkan tanda (noktah) titik setelah angka pada nomor langkah kita gunakan
\xskakset{style=UF}
Sedangkan posisi papan merupakan bagian dari penggunaan paket chessboard. Untuk mengatur agar pihak Hitam yang terletak di bawah, kita gunakan
\chessboard[inverse]

Menandai Langkah dengan Tanda Panah

Seperti tampak pada dokumen terlampir, saya menunjukkan langkah terakhir dari permainan yang sedang berlangsung (langkah teks) dalam penggunaan paket xskak. Kemudian, dalam penggunaan paket chessboard, saya tunjukkan langkah terakhirnya dengan menggunakan tanda panah, dari petak semula (yang saya tandai dengan kotak berwarna) ke petak yang diduduki sekarang.
Untuk hal ini (agar sekali perintah dapat digunakan seterusnya di dalam penyusunan dokumen) saya menetapkan perintah baru di dalam preamble. Tanda panah ini berbentuk lurus, kecuali untuk langkah Kuda dibuat membelok.

  1. \newcommand{\lain}{\setchessboard{
  2.     lastmoveid=A,%tunjukkan langkah terakhir saja
  3.     pgfstyle=straightmove,%untuk langkah terakhir selain kuda
  4.     arrow=to,arrow=stealth,%bentuk panah
  5.     linewidth=0.1ex,%ketebalan garis
  6.     shortenstart=0ex,%letak awal pangkal panah
  7.     shortenend=5pt,%akhir ujung panah
  8.     inverse, %membalik papan
  9.     color=Crimson,%warna panah
  10.     markmoves=\xskakget{move},%menandai langkah
  11.     arrow=to, %arah panah
  12.     color=DodgerBlue, %warna petak semula
  13.     markstyle=border, %tanda (kotak) pada petak semula
  14.     markfield=\xskakget{movefrom}%pangkal panah
  15.     setfen=\xskakget{nextfen}%acuan langkah
  16.     }}

sehingga, di dalam dokumen, diagramnya saya buat dengan perintah
{\lain\chessboard}
A adalah identitas dari permainan yang saya tulis.
\newchessgame[id=A,result=1/2--1/2]
Selain dengan menggunakan kotak, petak asal juga dapat ditandai oleh lingkaran dengan opsi (pada baris 13)
markstyle=circle
Perintah kedua berdasarkan pengkodean di atas, untuk langkah Kuda, , saya tetapkan perintah \kuda pada baris 1, kemudian pada opsi (baris 3) saya tetapkan
pgfstyle=knightmove
Selain itu, karena untuk keterangan mengenai permainan disediakan oleh paket texmate, maka saya gunakan pula paket ini untuk "judul" permainan.

Penutup 

Dokumen di bawah ini saya susun dalam jaringan melalui Online LaTeX Editor ShareLaTeX dengan menggunakan cara-cara sebagaimana telah disebutkan di atas. Demikian semoga bermanfaat.

Adjie Gumarang Pujakelana 2015





Thursday, May 28, 2015

Membuat Diagram Catur dari Forsyth–Edwards Notation (FEN)

Di dalam blog ini telah beberapa kali diterbitkan tulisan tentang catur, yaitu
  1. Menulis Naskah Catur dengan $\small\LaTeX$
  2. Skak
  3. Diagram dan Teks Terpisah dalam Kolom Berbeda
  4. Notasi Permainan Catur
  5. Teori Bilangan dalam Round-robin
  6. Meletakkan Lambang (Simbol) pada Diagram Catur
  7. Presentasi Materi Catur?
  8. Membuat Kamus atau Daftar Istilah?
  9. Animasi Permainan Catur dengan Xskak
  10. Laporan Berkala (Newsletter)
Tulisan kali ini saya fokuskan pada pembuatan diagram catur dengan memanfaatkan kode  Forsyth–Edwards Notation (FEN). Silakan perhatikan contoh dokumen berikut ini.





Untuk hal ini saya gunakan paket chessboard dan xskak, kedua-duanya dari Ul­rike Fis­cher. Unsur pokok yang dimuat dalam preamble adalah 
\usepackage{chessboard}
\usepackage{xskak}
dan untuk "memperhalus papan" saya muat juga
\usepackage[LSBC4,T1]{fontenc}
\setboardfontencoding{LSBC4}
Sekarang kita akan memasuki batang tubuh (body) dokumen. Lebih dulu saya beritahukan bahwa contoh dokumen di atas bersumber dari buku Chess Tactics Jilid 1 karya Igor Shmirin. Saya susun posisi buah catur, sebagaimana tersaji dalam diagram pada buku tersebut, dengan menggunakan DiagTransfer. Misalnya, untuk diagram No.1, saya susun dalam Diagtransfer seperti ini
Kemudian klik menu Edit dan pilih "Copy FEN to clipboard".
Selanjutnya saya tempelkan (paste) hasil langkah terakhir tadi ke dalam pengkodean $\small\LaTeX$ sebagai berikut.
\newchessgame[id=...,
  setfen={tempel di sini, tanpa tanda kurung},
  moveid=...
]
\chessboard[...]
Opsi id digunakan bila kita ingin menandai identitas suatu permainan (game), sehingga "datanya" dapat kita gunakan pada pengkodean berikutnya yang berkaitan dengan game tersebut.
Opsi moveid diisi 1w, bila giliran pertama melangkah dilakukan oleh Putih dan diisi 1bbila giliran pertama melangkah dilakukan oleh Hitam.
Opsi untuk papan pada perintah \chessboard saya isi dengan papan berukuran kecil smallboard dan petunjuk giliran pertama melangkah berbentuk segitiga moverstyle=triangle (secara bawaan berbentuk persegi).
Berikut ini pengkodean untuk diagram No. 1.
\newchessgame[id=A1,
  setfen=6k1/5p2/8/4p3/pp1qPn2/3P4/PP2B3/2Q2K2 w - - 0 1,
  moveid=1b
]
\chessboard[smallboard,moverstyle=triangle]

Demikian semoga bermanfaat. Dokumen di atas saya susun (compile) dalam jaringan melalui Online LaTeX Editor ShareLaTeX.

Adjie Gumarang Pujakelana 2015

Saturday, June 7, 2014

Meletakkan Lambang (Simbol) pada Diagram Catur

Telah diketahui bahwa cara termudah untuk membuat diagram permainan catur adalah dengan menyatakannya dalam FEN (Forsyth–Edwards Notation). Sering kali saya menggunakan DiagTransfer dan kadang-kadang Game Editor untuk membuat FEN. Kemudian saya salin dan menempelkannya pada dokumen $\small\LaTeX$ yang saya susun, tentu saja dengan menyertakan paket catur.

Masalah kemudian muncul ketika saya ingin membuat diagram catur yang memuat lambang seperti tampak pada gambar di samping. FEN tidak dapat menyertakan lambang-lambang semacam itu, hanya langkah-langkah catur beserta komentar-komentarnya.

Saya mengadukan masalah ini di Forum dan, alhamdulillah, atas petunjuk dari Ulrike Fischer (pembuat paket catur xskak, chessboard, dan chessfss) berikut ini:
"You can use the chessboard package to create new symbols. On page 73 of the documentation there is an example. This chars will work in fen too but you can't "play" with them: \mainline etc will not like them as it will not know how to move them." - Ulrike Fischer
akhirnya saya pun dapat menyelesaikan masalah tersebut dan sekarang menunjukkannya pada Anda.

Silakan buka dokumentasi paket chessboard pada halaman 73. Untuk lambang "silang" saya gunakan paket pifont, sedangkan lambang "bintang" dari paket amsmath.

Nah, berikut ini contoh pengkodean selengkapnya beserta hasilnya.
Demikian semoga bermanfaat.

Adjie Gumarang Pujakelana 2014
\documentclass{article}
\usepackage[LSB3,T1]{fontenc}
\usepackage{xskak}
\usepackage{chessboard}
\usepackage{amsmath}
\usepackage{pifont}
\makeatletter
\cbDefineNewPiece{white}{C}
{\raisebox{\depth}{\cfss@whitepiececolor
$\bigstar$}}
{\BlackEmptySquare%
\makebox[0pt][r]{\cfss@whitepiececolor
\raisebox{\depth}{%
\makebox[1em]{$\bigstar$}}}}
\cbDefineNewPiece{black}{c}
{\raisebox{\depth}{\cfss@blackpiececolor
\ding{53}}}
{\BlackEmptySquare%
\makebox[0pt][r]{\cfss@blackpiececolor
\raisebox{\depth}{%
\makebox[1em]{\ding{53}}}}}
\makeatother

\begin{document}

\setchessboard{
clearboard,
margintopwidth=1pt,
marginbottomwidth=1pt,
addwhite={Nb1,Ke1,pg4,Cg5},
addblack={cc3,ce2},
showmover=false}
\chessboard

\end{document}



Wednesday, April 2, 2014

Diagram dan Teks Terpisah dalam Kolom Berbeda

Saya tertarik oleh buku catur yang saya anggap baik untuk dipelajari, seperti tampak jilidnya di samping ini. Selain karena muatan materi di dalamnya, yang menarik juga adalah teknis penulisannya yang memisahkan antara kolom teks dan kolom diagram. Bagaimana cara menuliskannya?

Lebih dulu saya memilih paket untuk catur yang relatif sudah dipahami, yaitu xskak dan chessboard. Berikutnya, untuk membuat dua kolom dengan tulisan di dalamnya merapat ke atas, saya gunakan paket adjustbox dengan environment minipage.

\adjustbox{valign=t}{\begin{minipage}{0.4\textwidth}
 <...kolom kiri...>
\end{minipage}}%
\hfill
\adjustbox{valign=t}{\begin{minipage}[t]{0.6\textwidth}
 <...kolom kanan...>
\end{minipage}}%
\hfill

Pada buku tersebut, untuk halaman bernomor genap, kolom kiri memuat diagram. Demikian sebaliknya untuk halaman bernomor ganjil. Karena penampilan diagram tanpa disertai penampilan langkah-langkah permainan, maka saya gunakan perintah 

\newchessgame
\hidemoves{<langkah-langkah permainan>}
\chessboard

Berikut ini contoh pengkodean selengkapnya, yang saya susun (compile) melalui ShareLaTeX, untuk halaman bernomor genap pada buku tersebut beserta dokumen yang dihasilkannya.
\documentclass[12pt]{article}
\title{101 Winning}
\usepackage{tikz}
\usepackage{lipsum}
\usepackage[explicit]{titlesec}
\usetikzlibrary{shapes.misc,arrows}

\usepackage{xskak,chessboard}

\usepackage[lmargin=2cm,rmargin=2cm,tmargin=2cm,bmargin=2cm]{geometry}
\usepackage{adjustbox}
\usepackage{graphicx}
\usepackage[math]{anttor}
\usepackage[T1]{fontenc}

\definecolor{paper}{RGB}{239,227,157}
\definecolor{biru}{cmyk}{1,.60,0,.40}
\definecolor{bgblue}{RGB}{245,243,253}
\definecolor{RoyalBlue}{cmyk}{1, 0.50, 0, 0}
\definecolor{wine-stain}{rgb}{0.5,0,0}
\definecolor{Teal}{RGB}{0 128 128}
\newcommand\titlebar{%
\tikz[baseline,trim left=0.5cm,trim right=2.5cm] {%
    \node [
        text = red!70!green,
        anchor= base east,
        minimum height=3.5ex] (a) at (2.5cm,0.6ex) {%
    };
   \path[fill=red!70!blue] (a.east) circle (.5ex);
   \draw[color=red!70!blue, thick,rounded corners=1ex] (a.east) |- (\textwidth+3cm,-0.75ex);
}
}

\newcommand\subtitlebar{%
\tikz[baseline,trim left=1cm,trim right=3.05cm] {%
    \node[
        text = red!70!green,
        anchor= base east,
        minimum height=3.5ex] (b) at (3.05cm,0.6ex) {%
    };
   \path[fill=red!70!blue] (b.east) circle (.5ex);
   \draw[color=red!70!blue, thick,rounded corners=1ex] (b.east) |- (\textwidth+2cm,-0.75ex);
}%
}

\newcommand\titledot{%
\tikz[baseline=-0.65ex] {%
\path[fill=red!70!blue] (0,0) circle (.5ex);
  }
}

\titleformat{\section}{\Large\sffamily}{\llap{\titledot}}{0cm}{\textcolor{blue!60!green}{#1}}
\titlespacing*{\section}{0cm}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}
\titlespacing*{name=\section,numberless}{0cm}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}
\renewcommand*{\thesection}{\arabic{section}}
\setlength{\parindent}{0pt}

\begin{document}
\pagenumbering{gobble}

\adjustbox{valign=t}{\begin{minipage}{0.4\textwidth}
\setchessboard{boardfontsize=17pt,showmover=false}
\newchessgame
\hidemoves{1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Be2 O-O 6. Nf3 e5 7. O-O Nc6 8. d5  Ne7 9. b4 Nh5 10. g3 f5 11. Ng5 Nf6 12. f3 a5 13. bxa5 Rxa5 14. Qb3 f4 15. Ba3  fxg3 16. hxg3 Nh5 17. Kg2}
\chessboard\\

\setlength{\leftskip}{0.5cm}
Setelah langkah 17 Putih

\setlength{\leftskip}{0cm}
\newchessgame
\hidemoves{1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Be2 O-O 6. Nf3 e5 7. O-O Nc6 8. d5  Ne7 9. b4 Nh5 10. g3 f5 11. Ng5 Nf6 12. f3 a5 13. bxa5 Rxa5 14. Qb3 f4 15. Ba3  fxg3 16. hxg3 Nh5 17. Kg2 Nxg3 18. Kxg3 Nf5+ 19. exf5 Qxg5+ 20. Kf2 Qh4+ 21. Kg2 Rxf5 22. Ne4 Rg5+ 23. Nxg5 Qxg5+ 24. Kf2 Qh4+ 25. Kg1 Qg3+ 26. Kh1 Rxa3}
\chessboard\\

\setlength{\leftskip}{1.6cm}
Setelah 26.\symking h1

\setlength{\leftskip}{0cm}
\newchessgame
\hidemoves{1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Be2 O-O 6. Nf3 e5 7. O-O Nc6 8. d5  Ne7 9. b4 Nh5 10. g3 f5 11. Ng5 Nf6 12. f3 a5 13. bxa5 Rxa5 14. Qb3 f4 15. Ba3  fxg3 16. hxg3 Nh5 17. Kg2 Nxg3 18. Kxg3 Nf5+ 19. exf5 Qxg5+ 20. Kf2 Qh4+ 21. Kg2 Rxf5 22. Ne4 Rg5+ 23. Nxg5 Qxg5+ 24. Kf2 Qh4+ 25. Kg1 Qg3+ 26. Kh1 Rxa3 27. Qxa3 Bh6 28. Qa8 Qh3+ 29. Kg1 Be3+ 30. Rf2 Kg7! 31. Rf1 Qg3+ 32. Kh1 Bh3 33. Qd8 Bxf2 34. Qe7+ Kh6 35. Qf8+ Kh5 36. f4+}
\chessboard\\

\setlength{\leftskip}{0.6cm}
Setelah 36. f4+ (analisis)

    \end{minipage}}%
\hfill
\adjustbox{valign=t}{\begin{minipage}[t]{0.6\textwidth}
\section{Strategi 21 - Sirami Api dengan Bahan Bakar}
Steffensen-Hamilton, Canberra 1994. \\
Bidak-bidak sayap raja yang mengalami kerusakan ringan dan letak Menteri dan Gajah petak gelap Putih memacu Hitam untuk menyerang. Kunci dari strategi sukses Hitam adalah kemauannya untuk berinvestasi materi. 

\newchessgame[id=A,result=0--1]
\hidemoves{1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Be2 O-O 6. Nf3 e5 7. O-O Nc6 8. d5  Ne7 9. b4 Nh5 10. g3 f5 11. Ng5 Nf6 12. f3 a5 13. bxa5 Rxa5 14. Qb3 f4 15. Ba3  fxg3 16. hxg3 Nh5 17. Kg2}
\mainline{17... Nxg3!!}\\
Menghilangkan bidak yang setia.

\mainline{18. Kxg3 Nf5+ 19. exf5 Qxg5+ 20. Kf2 Qh4+ 21. Kg2}

\variation[invar]{21. Ke3? Qd4#}
menegaskan kesulitan pada Putih.

\mainline[outvar]{21... Rxf5 22. Ne4 Rg5+!}

Pengorbanan yang sangat baik ini adalah langkah kunci dari strategi, karena dengan Kuda di e4 Putih mampu bertahan. Materi hanyalah salah satu faktor dalam catur, dan di sini penguasaan Hitam terhadap petak gelap diprioritaskan.

\mainline{23. Nxg5 Qxg5+ 24. Kf2 Qh4+ 25. Kg1 Qg3+ 26. Kh1}

Hitam kehilangan Benteng, tetapi Menterinya telah memerangkap Raja Putih. Tahap berikutnya peran Gajah yang kuat dari sayap raja, tetapi lebih dulu Hitam menumpahkan lebih banyak bahan bakar di atas api.

\mainline{26... Rxa3!!}

Hitam menyerahkan benteng lainnya, berguna untuk menyingkirkan perwira potensial yang menyelamatkan permainan, demi kesiapan untuk pukulan mematikan di petak gelap.

\mainline{27. Qxa3 Bh6 28. Bd1}

Mengosongkan baris kedua. Setelah \variation[invar]{28. Qa8 Qh3+ 29. Kg1 Be3+ 30. Rf2 Kg7! 31. Rf1 Qg3+ 32. Kh1 Bh3! 33. Qd8 Bxf2 34. Qe7+ Kh6 35. Qf8+ Kh5! 36. f4+ Bg4 37. Bxg4+ Kxg4 38. Qh6 Kf3! 39. Qh2 Qxh2+ 40. Kxh2 e4}
Gajah tunggal memenanginya.

\mainline[outvar]{28... Bf4 29. Qb2 Qh4+ 30. Kg1 Be3+ 31.  Rf2 Bh3 32. Kh2 Bf5+ 33. Kg1 Qg3+ 34. Kh1}

\variation[invar]{34. Kf1 Bd3+}

\mainline[outvar]{34...Bxf2 35. Be2 Qh3#}
\mbox{\XskakAresult}

    \end{minipage}}%
\hfill


\end{document}


-->
Related Posts Plugin for WordPress, Blogger...