结合其他包优化tikz//国际象棋开局曲目图形可视化

问题描述 投票:0回答:0

是否有可能以更简单的方式编写代码?:

\documentclass[landscape]{article}
\usepackage[paperwidth=42in,paperheight=40in,margin=0.5in]{geometry}
\usepackage{skak} %package to display chessboards with notation
\usepackage{tikz}
\pagenumbering{gobble} % avoid page numbering

\begin{document}

\begin{tikzpicture}[
        level 1/.style={sibling distance=32cm,}, %x-spacing
        level 2/.style={sibling distance=0cm,},
        level 3/.style={sibling distance=17cm,},
        level 4/.style={sibling distance=0cm,},
        level 5/.style={sibling distance=7cm,},
        level distance=7cm, %y-spacing
        line width=2,]
%
\node {\newgame \mainline{1.f4} \storegame{move1000} \showboard}
    child {  node {\restoregame{move1000} \mainline{1...Nf6} \showboard}
        child {  node { \mainline{2.g3} \storegame{move1100} \showboard}
            child {  node {\restoregame{move1100} \mainline{2...d5}  \showboard}
                child {  node { \mainline{3. Bg2} \storegame{move1110} \showboard}
                    child {  node {\restoregame{move1110} \mainline{3...e6}  \showboard}
                        child {  node { \mainline{4. a4}  \showboard}
                            child {  node { \mainline{4...c6}  \showboard}
                                child {  node [rectangle, minimum size=7.5cm] {eval: -0.1}}
                            }
                        }
                    }
                    child {  node {\restoregame{move1110} \mainline{3...e6}  \showboard}
                        child {  node {\mainline{4. a4}  \showboard}
                            child {  node {\mainline{4...c6}  \showboard}
                                child {  node [rectangle, minimum size=7.5cm] {eval: -0.2}}
                            }
                        }
                    }
                    child {  node {\restoregame{move1110} \mainline{3...c5}  \showboard}
                        child {  node [rectangle, minimum size=7.5cm] {-0.3}}
                    }
                }
            }
            child {  node {\restoregame{move1100} \mainline{2...g6}  \showboard}
                child {  node [rectangle, minimum size=7.5cm] {eval: -0.2}}
            }
            child {  node {\restoregame{move1100} \mainline{2...c5}  \showboard}
                child {  node { \mainline{3. Nf3}  \showboard}
                    child {  node [rectangle, minimum size=7.5cm] {eval: -0.2}}
                }
            }
        }
    }
%
    child {  node [operator, xshift=-0cm] {\restoregame{move1000} \mainline{1...e5} \showboard} 
        child {  node {\mainline{2. fxe5} \showboard} 
            child {  node {\mainline{2...d6} \showboard} 
                child {  node {\mainline{3. exd6} \showboard} 
                    child {  node {\mainline{3...Bxd6} \showboard} 
                        child {  node {\mainline{4. Nf3} \showboard} 
                            child {  node {\mainline{4...Nf6} \showboard} 
                                    child {  node [rectangle, minimum size=7.5cm] {eval: +0.7}}                            
                            }
                        }
                    }
                }
            }
        }
    }
%
    child {  node [operator, xshift=-20cm] {\restoregame{move1000} \mainline{1...f5} \showboard} 
        child {  node {\mainline{2. Nf3} \showboard} 
            child {  node {\mainline{2...Nf6} \showboard} 
                child {  node {\mainline{3. c4} \showboard} 
                    child {  node {\mainline{3...c5} \showboard} 
                        child {  node {\mainline{4. b3} \showboard} 
                            child {  node {\mainline{4...g6} \showboard} 
                                child {  node {\mainline{5. g3} \showboard} 
                                    child {  node {\mainline{5...Nc6} \showboard} 
                                        child {  node {\mainline{6. Bg2} \showboard} 
                                            child {  node {\mainline{6... Bg7} \showboard}  
                                                child {  node {\mainline{7. Bb2} \showboard} 
                                                    child {  node [rectangle, minimum size=7.5cm] {eval: +0.3}}
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }    
%
    child {  node [operator, xshift=-40cm] {\restoregame{move1000} \mainline{1...g6} \showboard} 
        child {  node {\mainline{2. Nf3} \showboard} 
            child {  node {\mainline{2...d5} \showboard} 
                child {  node {\mainline{3. e3} \showboard} 
                    child {  node {\mainline{3...Bg7} \showboard} 
                        child {  node {\mainline{4. d4} \showboard} 
                            child {  node {\mainline{4...c5} \showboard} 
                                child {  node {\mainline{5. Bd3} \showboard} 
                                    child {  node [rectangle, minimum size=7.5cm] {eval: -0.4}}
                                }
                            }
                        }
                    }
                }
            }
        }
    }
%
    child {  node [operator, xshift=-60cm] {\restoregame{move1000} \mainline{1...b6} \showboard} 
        child {  node {\mainline{2. e4} \showboard} 
            child {  node {\mainline{2...Bb7} \showboard} 
                child {  node {\mainline{3. d3} \showboard} 
                    child {  node {\mainline{3...e6} \showboard} 
                        child {  node {\mainline{4. Bd2} \showboard} 
                            child {  node {\mainline{4...Nc6} \showboard} 
                                child {  node {\mainline{5. Nf3} \showboard} 
                                    child {  node [rectangle, minimum size=7.5cm] {eval: -0.1}}
                                }
                            }
                        }
                    }
                }
            }
        }
    }
%
;
\end{tikzpicture};
%
\end{document}

获得类似的结果:

我会喜欢像森林这样的东西: https://tex.stackexchange.com/questions/35526/tikz-tree-sibling-distance

(可选,我希望将移动描述放在棋盘之前的行上,例如“ ewline”在棋盘前)

chess tikz
© www.soinside.com 2019 - 2024. All rights reserved.