使用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止,黑棋布局简明。]))

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值