使用xetex直接由围棋棋谱文件创建pdf书籍

【转载请注明出处】 本人是一个围棋爱好者,这几天心血来潮,看到xe(la)tex能够对中文字体提供原生的支持 ,不由试了试,看能否由sgf(Smart Go Format)文件直接生成pdf文档。 由sgf制作tex,历史上已经有人为之,一个很著名的包,sgf2tex,就能够完成类似功能, 该软件包经过完善,后来改名为sgf2dg,提供了更好、更强大的功能(好像应该与时俱进得 使用很好、很强大:P)。 我的系统是Debian lenny,安装了sgf2dg 4.026-9和texlive-xetex 2007.dfsg.1-2以及一 些个人比较喜欢的字库,转换工作就由此基础开始。 简要转换步骤如下: 1 使用iconv将sgf文件的文字内码由gbk转换成utf-8 2 使用sgf2dg将sgf文件转换成tex文件 3 在sgf文件中添加如下三行(在文件头部的任何位置均可)   /font/zh="[/home/young/fonts/simyou.ttf]"   /XeTeXlinebreaklocale "zh"   /XeTeXlinebreakskip = 0pt plus 1pt 4 使用jjgod的xcp.p(再次感谢!)给tex文档的中文部分添加/zh命令,其中,对xcp.py进行 一些修改,找到开头的MARK_START和MARK_END,将其内容修改为:   MARK_START = '//input gooemacs'   MARK_END = '//bye' 5 用xcp.py处理生成的tex文档 6 用xetex编译tex文件 为了方便起见,写了一个很简单的Makefile,用来自动完成上述所有工作,代码如下: allok:         iconv -f gbk -t utf-8 test.sgf > ok.sgf         sgf2dg ok.sgf         sed '/input gooemacs/s/^///font//zh=/"[//home//young//fonts//simyou.ttf] /"/n//XeTeXlinebreaklocale /"zh/"/n//XeTeXlinebreakskip = 0pt plus 1pt/n/' ok.tex > allok.tex         python xcp.py allok.tex > final.tex         xetex final.tex clean:         rm -f *.log *.dvi *.pdf 写得比较土,还没有进行优化。 最后,附上一张棋谱,供大家实验用: (;AB[pd][pp][dp]C[坂田荣男先放三子,可能只在学棋时期有此经历。 受三子弈一局模范棋,对拥有了本因坊等七十个头衔的他来说,可能连做梦也没想到过吧! 一般业余棋手受几子,还输得一塌糊涂,心情一定很难过,也不会服气,研究一下专家高段棋手的模范受子棋的手法,定可帮助提高您的棋力,这也是出版本书的目的之一。 弈受子棋的棋理,最重要的是如何运用所受之子。] AP[MultiGo:3.7.0]SZ[19]GN[专家让子棋·三子局]RO[221]PB[桥本昌二]BR[九段]PW[坂田荣男] WR[九段]KM[0]HA[3]RE[黑35目胜] ;W[cd];B[ed]C[白1占据小目,为求变化常用之手段,黑2一单调挂,意在求简明,黑如A位小飞挂,变化则较多,白棋可以使用种种趣向,也就是白棋有较多的机会挽回授三子之负担。桥本昌二在二十三岁时,就已升到最高段位——九段,曾经获得王座及NHK杯快棋等多项头衔。 白3如照参考图] (;W[ee]C[故白3上靠求较复杂的变化,这是授子者所应执有的态度。];B[fe];W[de];B[gd] ;W[ff];B[gf]C[坂田荣男在对局前说:“过去专家棋士之间的授子棋,大家都下得非常认真,我一手棋也不能下错。” 受三子的坂田荣男,他的手法与弈分先棋毫无两样,总是选择最严酷的着法,授三子的桥本昌二当然十分难下。 白9如] (;W[fg]C[问题一:黑棋的下一手是A、B或C?]LB[cc:A][gg:B][jd:C] (;B[gg];W[fh];B[gh];W[fi]C[白11长时,黑12再压,对受子棋来说,连压几手总是好棋,请勿忘记。 坂田荣男没有花时间,弈出了黑10、12。而白11、13只好听命,两手棋都不能扳。 问题2 黑棋的下一手是什么?在上边大围是大棋,但白棋挂左下角也很大。坂田荣男选择的着点是A、B或C?] LB[ci:A][ck:B][cm:C] (;B[cm];W[nd]C[两位对局者都说:“不懂,不好下。” 黑14占据左下边,而白15挂右上角是当然的着手。 白15若于左下边×位拦,目前不大,黑▲大飞,可以满意。 问题3 黑16可以A夹吗? 还是黑B外靠,或老实地黑C跳?] TR[mc]MA[ck]LB[lc:A][ne:B][pf:C] (;B[lc];W[pf]C[白17双挂(也可以说是反夹)是当然 的一手,此手如单A跳出,则黑在17位也跳,黑棋舒畅。 ] (;B[nc]C[黑18托碰是坚实的一手。 坂田说:“黑18托碰,可能过于坚实……”];W[md]C[白19是先手刺。 白19如不下,则黑19后手虎是好棋。] ;B[mc]C[黑20粘,不得已。];W[qn]C[白21挂右下角,桥本以快步调布局,拼命追赶。 问题4 桥本昌二苦苦思考。对手不是业余棋手,而是第一流高级棋士,何况授三子。 白21挂右下角,黑棋怎棋着手才对?A、B与C,哪一手最佳?] LB[ld:A][pj:B][qo:C] (;B[pj]C[黑22打入时,白23如] (;W[nq]C[白23双挂时,黑A压好呢,还是B压好?]LB[pn:A][np:B] (;B[np]C[普通是在黑24方面压。 白21比23子弱,黑24压是顺从“压强不压弱”的棋谚而弈出。 也可以说黑24压是攻击白21的声东击西之法。 如压向白21,有帮对方强化,方向倒逆之嫌。] ;W[mp];B[no] (;W[qq]C[现在白27点三三求变是正确思维,也可以说是此型的常用手法。 问题5 A、B与C,哪一手最佳?] LB[oq:A][pq:B][qp:C];B[oq];W[qp];B[mq];W[nf];B[cj];W[dq];B[eq];W[er];B[ep];W[cr] ;B[gq];W[cp];B[co];W[fr];B[bp];W[cq];B[gp];W[ec];B[fc];W[eb];B[qd];W[ld];B[kd];W[ke] ;B[je];W[kf];B[gr];W[fb];B[gb];W[oc];B[od];W[ob];B[jd];W[rc];B[qb];W[rd];B[pb];W[qe] ;B[qg];W[ql];B[rf];W[re];B[mf];W[oe];B[mg];W[rb];B[le];W[lf];B[me];W[ne];B[nb];W[ng] ;B[mh];W[oi];B[pi];W[mi];B[kg];W[nh];B[rj];W[bi];B[ci];W[ch];B[bj];W[bh];B[bq];W[br] ;B[ar];W[ds];B[fs];W[bs];B[ml];W[ik];B[im];W[ll];B[lm];W[km];B[kl];W[lk];B[kn];W[mm] ;B[ln];W[gm];B[hl];W[gl];B[gk];W[fk];B[hk];W[el];B[nl];W[bn];B[bo];W[cl];B[bl];W[bm] ;B[dm];W[bk];B[dl];W[al];B[ej];W[fj];B[aj];W[dk];B[ck];W[di];B[dj];W[ek];B[bl];W[kh] ;B[lg];W[cl];B[nj];W[oj];B[mj];W[ni];B[lj];W[bl];B[li];W[in];B[hm];W[hj];B[gj];W[gi] ;B[hi];W[ij];B[hh];W[hn];B[jn];W[en];B[do];W[io];B[gn];W[go];B[fn];W[fo];B[fm];W[em] ;B[fl];W[eo];B[jp];W[ip];B[iq];W[jq];B[jo];W[pr];B[or];W[rk];B[pk];W[ok];B[pl];W[pm] ;B[ol];W[qa];B[pa];W[ra];B[po];W[qo];B[qk];W[rl];B[pg];W[dd];B[fd];W[ga];B[ha];W[fa] ;B[hb];W[an];B[om];W[pn];B[on];W[sj];B[si];W[sk];B[rh];W[ho];B[ir];W[se];B[gs];W[es] ;B[sf];W[qc];B[pc];W[nk];B[mk];W[hp];B[hq];W[os];B[ns];W[ps];B[pq];W[qr];B[og];W[oh] ;B[ph];W[ao]) (;W[oq];B[pq];W[jq]C[白27如照此参考图下,则无谋。])) (;B[pn];W[pm];B[on];W[qo];B[qp];W[om]C[黑1方面压,白2扳,黑3长时,白4长、6压,不但白阵趋于坚实,而且星位黑子有被攻击的危险。])) (;W[qq];B[qp];W[pq];B[op];W[rp];B[ro];W[rq];B[qo];W[nq];B[pn]C[白1点三三,则黑2以下至10止,黑棋简明,求之不得。 白棋这样下,永远都赶不上。 ])) (;B[ld];W[pj]C[黑1拐,虽是厚实,但为时过早,目前还是小棋。 白2围右边,黑棋不利。 黑棋如一定要从上边着手,则黑A位冲击白形之急所是有力的一着。] LB[nf:A]) (;B[qo];W[pn];B[np];W[pj]C[黑如1位尖顶,再3跳,则白4围是绝好点。如此黑棋不能满意。 上边的白子生出作用后,白棋在右边可以围到一点空。]) (;B[pj]C[黑1打入,分断白棋为二处是最佳的一手。 含有攻击的着手是弈受子棋的获胜要领。 过于重视实利,则大局容易被对方控制。 眼光要放得远。])) (;B[oe];W[ld];B[kd];W[kc]C[黑18虽也可以考虑如图中1位尖出,但白棋有2、4扭断处理之手段,局面趋于复杂。])) (;B[ne];W[me];B[oe];W[ld]C[黑如1位外靠,至白2、4止是最普通的进行这样与当初左上角所形成的形状差不多,但周围情况则大不相同,黑棋不能这样下。 黑棋留有被白A进三三之缺陷,且有帮白棋安定之嫌。] LB[qc:A]) (;B[pf];W[pc];B[qc];W[oc];B[qb];W[jc]C[黑如普通地1跳,则是最稳当的着手,但此际正中白意。 白2、4托退后再6拆,在黑棋的势力圈里简单安定,且左边所筑成的黑棋势力也无法生出任何作用。]) (;B[lc]C[黑1的夹,方为最严酷之应手。 不给白棋以根据,这样,黑棋才有攻击白棋的机会。])) (;B[ci];W[ck];B[dj];W[dk];B[ej];W[fl]C[黑1过于深入,被白2夹,待黑3尖时,白4、6封锁,黑棋无法逸出。]) (;B[ck];W[dn];B[ek];W[fn]C[黑1比前图近二路,但还是过深。 被白2反击,待黑3跳时,白也跟着4跳,下一手白A封和白B曲为见合之点。 黑棋陷入苦境。] LB[gk:A][fp:B]) (;B[cm]C[顺从“不靠近厚势行棋”之棋谚,黑1大飞是最正确的着点,白棋再也无法遮断。])) (;B[jd];W[gg]C[黑如1位拆,则白2拐是急所,黑棋只好A位长,上边黑棋呈重复状态,显然不利。] LB[hf:A]) (;B[cc];W[dd];B[dc];W[ec];B[fd];W[eb];B[db];W[gb];B[bb];W[ic]C[黑如1位托角,则白2、4之手段可以成立。 白6立下时,黑7挡是最强手,但白8跳,长气是好手,黑9只好活角,白10飞出后,中央五颗黑子彻底浮起,黑棋以后很难下。]) (;B[gg]C[黑1压应是急所,这里是双方的要点,对弈双方之子接近时,绝对不能松懈,当然,黑A尖或黑B飞是不及格的,没有魄力。 黑1压,白棋在左边虽可获取相当实利,但右边黑棋之模样也在扩大,以围棋术语而言对白是“形成狭小局面”。] LB[hg:A][hh:B])) (;W[gg];B[fg];W[ef];B[hf];W[hg];B[ig];W[fh];B[ih]C[1位连扳,其变化如何? 在实战中时有出现,请多多研究。 黑2断打后再4长是次序,白5时,黑6扳用强,再白7打至黑8长出,只是此过程中的一种形状。])) (;W[ec];B[fc];W[dc];B[fd];W[cf];B[jc]C[在1位托,则黑2以下至黑6止,黑棋布局简明。]))
相关文章
相关标签/搜索