到目前为止,我有一个完整显示的棋盘,但是,我想对其进行修改,使其缺少对角线角块,我不介意哪个角。
这是我目前的代码:
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{csquotes}
\usepackage[style=verbose-ibid,backend=bibtex]{biblatex}
\usepackage{tikz}
\usepackage{tkz-euclide}
\usetkzobj{all}
\bibliography{bibliography}
\usepackage{amsmath}
\begin{figure}[h!]
\caption{Chess board with opposite diagonal corner pieces missing.}
\label{fig:mutilated_chessboard}
\begin{center}
\begin{tikzpicture}[x=1cm]
\foreach \x in {0,...,7} \foreach \y in {0,...,7}
{
\pgfmathparse{mod(\x+\y,2) ? "black" : "white"}
\edef\colour{\pgfmathresult}
\path[fill=\colour] (\x,\y) rectangle ++ (1,1);
}
\draw (0,0)--(0,8)--(8,8)--(8,0)--cycle;
\end{tikzpicture}
\end{center}
\end{figure}
我正在考虑添加一个 if 语句,以便仅在 x 和 y 值不均等于 0 或均不等于 8 时才运行嵌套 for 循环的内容。我该怎么做?
答案1
使用你的一些建议\if
。
这是一个解决方案,但对你和 Ti 来说工作量太大了钾Z 检查每个方格。更好的解决方案是在棋盘上方进行绘制。
此外,您是否知道skak
包裹?
你没有指定哪个两个角,所以我做了两个变体:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{figure}[h!]
\caption{Chess board with opposite diagonal corner pieces missing.}
\label{fig:mutilated_chessboard}
\begin{center}
\begin{tikzpicture}[x=1cm]
\foreach \x in {0,...,7} \foreach \y in {0,...,7}
{
\pgfmathparse{mod(\x+\y,2) ? "black" : "white"}
\edef\colour{\pgfmathresult}
% This one for the bottom-left and top-right corners
% \ifnum\x=\y
% \ifnum\x=7
% \def\colour{black}
% \else\ifnum\x=0
% \def\colour{black}
% \fi\fi
% \fi
% % % % % %
% And this one for the top-left and bottom-right corners
\ifnum\x=\numexpr\y-7
\ifnum\x=0
\def\colour{white}
\fi
\fi
\ifnum\y=\numexpr\x-7
\ifnum\y=0
\def\colour{white}
\fi
\fi
% % % % % %
\path[fill=\colour] (\x,\y) rectangle ++ (1,1);
}
\draw (0,0)--(0,8)--(8,8)--(8,0)--cycle;
\end{tikzpicture}
\end{center}
\end{figure}
\end{document}