¿Cómo puedo condensar este código?
Son muchas líneas, ¿cómo puedo condensar este código para que sea más corto? Solo quería mostrar cómo se mueve la reina en un tablero de ajedrez.
\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}
Respuestas
Con los argumentos clave-valor, normalmente no obtiene nada al configurar una clave más de una vez. Puede haber excepciones, con claves que denotan acciones en lugar de configuraciones. chessboardLas claves de a veces son acciones, por lo que algunas de ellas deben repetirse, pero en este caso, establecer el color no es necesario, por lo que puede eliminar todas las apariciones menos una pgfstyle=color,color=green!50, ya que son redundantes.
Luego, al buscar colorbackfielden la chessboarddocumentación aparece :colorbackfields
entonces estás listo para:
\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 señaló que el paquete tiene una clave de varios valores aquí, pero si no la tenía (o como yo, no buscó la documentación del paquete), puede comprimir el código simplemente usando la codificación tex general, por ejemplo
\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}
También eliminé framecomo \framees una macro de un argumento, una variante de la \fboxcual no parece deseada aquí (y no funciona como entorno)