Comment puis-je condenser ce code?
C'est beaucoup de lignes, comment puis-je condenser ce code pour qu'il soit plus court? Je voulais juste montrer comment la reine se déplace sur un échiquier.
\documentclass[12pt]{book}
\usepackage{skak} %or xskak
\usepackage{chessboard}
% https://tex.stackexchange.com/questions/215330/chess-notation-with-skak-how-to-highlight-squares
\begin{document}
\begin{frame}
\newgame
\chessboard[setfen=8/8/8/8/3Q4/8/8/8/8 w - - 0 0,
% pgfstyle=border,markfields={d4,d6},
color=green!50,
colorbackfield=c5,
pgfstyle=color,
color=green!50,
colorbackfield=b6,
pgfstyle=color,
color=green!50,
colorbackfield=a7,
pgfstyle=color,
color=green!50,
colorbackfield=e3,
pgfstyle=color,
color=green!50,
colorbackfield=f2,
pgfstyle=color,
color=green!50,
colorbackfield=g1,
pgfstyle=color,
color=green!50,
colorbackfield=d1,
pgfstyle=color,
color=green!50,
colorbackfield=d2,
pgfstyle=color,
color=green!50,
colorbackfield=d3,
pgfstyle=color,
color=green!50,
colorbackfield=d5,
pgfstyle=color,
color=green!50,
colorbackfield=d6,
pgfstyle=color,
color=green!50,
colorbackfield=d7,
pgfstyle=color,
color=green!50,
colorbackfield=d8,
pgfstyle=color,
color=green!50,
colorbackfield=c3,
pgfstyle=color,
color=green!50,
colorbackfield=c4,
pgfstyle=color,
color=green!50,
colorbackfield=e4,
pgfstyle=color,
color=green!50,
colorbackfield=e5,
pgfstyle=color,
color=green!50,
colorbackfield=a1,
pgfstyle=color,
color=green!50,
colorbackfield=b2,
pgfstyle=color,
color=green!50,
colorbackfield=f6,
pgfstyle=color,
color=green!50,
colorbackfield=g7,
pgfstyle=color,
color=green!50,
colorbackfield=h8,
pgfstyle=color,
color=green!50,
colorbackfield=a4,
pgfstyle=color,
color=green!50,
colorbackfield=b4,
pgfstyle=color,
color=green!50,
colorbackfield=f4,
pgfstyle=color,
color=green!50,
colorbackfield=g4,
pgfstyle=color,
color=green!50,
colorbackfield=h4,
pgfstyle=color,
% opacity=0.5,
% color=red,
%markfield={d5}
]
\end{frame}
\end{document}
Réponses
Avec les arguments clé-valeur, vous n'obtenez généralement rien en définissant une clé plus d'une fois. Il peut y avoir des exceptions, avec des clés qui indiquent des actions plutôt que des paramètres. chessboardLes touches de sont parfois des actions, donc certaines d'entre elles doivent être répétées, mais dans ce cas, la définition de la couleur n'est pas nécessaire, donc vous pouvez supprimer toutes les occurrences de pgfstyle=color,color=green!50, sauf une , car elles sont redondantes.
Ensuite, la recherche colorbackfielddans la chessboarddocumentation fait apparaître :colorbackfields
donc vous êtes à:
\documentclass{book}
\usepackage{xskak}
\begin{document}
\newgame
\chessboard[
setfen=8/8/8/8/3Q4/8/8/8/8 w - - 0 0,
color=green!50,
colorbackfields={c5,b6,a7,e3,f2,g1,d1,d2,d3,d5,d6,d7,d8,c3,
c4,e4,e5,a1,b2,f6,g7,h8,a4,b4,f4,g4,h4},
pgfstyle=color
]
\end{document}
Phelype a souligné que le paquet a une clé à plusieurs valeurs ici, mais si ce n'était pas le cas (ou comme moi, vous n'avez pas cherché la documentation du paquet), vous pouvez compresser le code simplement en utilisant le codage tex général, par exemple
\documentclass[12pt]{book}
\usepackage{skak,chessboard}
\def\z#1#2{\ifx.#1\else colorbackfield=#1#2,\expandafter\z\fi}
\begin{document}
\newgame
\expanded{\noexpand\chessboard[
setfen=8/8/8/8/3Q4/8/8/8/8 w - - 0 0,
pgfstyle=color,color=green!50,
\z c5b6a7e3f2g1d1d2d3d5d6d7d8c3c4e4e5a1b2f6g7h8a4b4f4g4h4..
]}
\end{document}
J'ai aussi enlevé framecomme \frameune macro argument, une variante \fboxqui ne semble ici recherché (et ne fonctionne pas comme un environnement) non