This week only. Pastebin PRO Accounts Christmas Special! Don't miss out!Want more features on Pastebin? Sign Up, it's FREE!
Guest

Checkered drawing (v0.3)

By: a guest on Feb 14th, 2014  |  syntax: Latex  |  size: 2.63 KB  |  views: 181  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. \documentclass[crop=false]{standalone}
  2.  
  3. \usepackage{tikz,xstring,fp}
  4. \usetikzlibrary{calc,intersections}
  5.  
  6. %Set dimensions
  7. \newcommand\secs{20}    % number of side divisions
  8. \newcommand\Width{10}   % width of page
  9. \newcommand\Height{10}  % height of page
  10. \newcommand\edgecut{1}  % how many rows - 1 to cut of on all edges, like OP (1 is no rows)
  11.  
  12. \FPeval\nWidth{clip(\Width+2)}
  13. \FPeval\nHeight{clip(\Height+2)}
  14.  
  15. \usepackage[paperwidth=\nWidth cm, paperheight=\nHeight cm,margin=.5cm]{geometry}
  16.  
  17. \begin{document}
  18.  
  19. \thispagestyle{empty}
  20.  
  21. \topskip0pt
  22. \vspace*{\fill}
  23.  
  24. \begin{center}
  25.  
  26. \begin{tikzpicture}
  27. %Mark side intervals
  28. \foreach \i in {1,...,\secs}{
  29.  \coordinate (b\i) at (\i*\Width/\secs-\Width/\secs,0);
  30.  \coordinate (r\i) at (\Width,\i*\Height/\secs-\Height/\secs);
  31.  \coordinate (t\i) at (\Width-\i*\Width/\secs+\Width/\secs,\Height);
  32.  \coordinate (l\i) at (0,\Height-\i*\Height/\secs+\Height/\secs);
  33. }
  34. %Mark coordinates
  35. \foreach \j in {1,...,\secs}{
  36.  \foreach \i in {1,...,\secs}{
  37.    \coordinate (br\i-\j) at (intersection of r\i--b1 and b\j--l1);
  38.    \coordinate (rt\i-\j) at (intersection of t\i--r1 and r\j--b1);
  39.    \coordinate (tl\i-\j) at (intersection of l\i--t1 and t\j--r1);
  40.    \coordinate (lb\i-\j) at (intersection of b\i--l1 and l\j--t1);
  41.  }
  42. }
  43. %Fill in sections
  44. \FPeval\nsecs{clip(\secs-1)}
  45. \foreach \i in {\edgecut,...,\nsecs}{
  46.  \FPeval\resulti{clip(\i / 2)}
  47.  \FPeval\ip{clip(\i + 1)}
  48.  \IfInteger{\resulti}{
  49.    \fill[fill=black] (br\i-\secs)--(rt\secs-\i)--(rt\secs-\ip)--(br\ip-\secs);
  50.    \fill[fill=black] (rt\i-\secs)--(tl\secs-\i)--(tl\secs-\ip)--(rt\ip-\secs);
  51.    \fill[fill=black] (tl\i-\secs)--(lb\secs-\i)--(lb\secs-\ip)--(tl\ip-\secs);
  52.    \fill[fill=black] (lb\i-\secs)--(br\secs-\i)--(br\secs-\ip)--(lb\ip-\secs);
  53.  }{}
  54.  \foreach \j in {\edgecut,...,\nsecs}{
  55.    \FPeval\resultj{clip(\j / 2)}
  56.    \FPeval\jp{clip(\j + 1)}
  57.    \IfInteger{\resulti}{
  58.      \IfInteger{\resultj}{
  59.        \foreach \k in {br,rt,tl,lb}{
  60.          \fill[fill=black] (\k\i-\j)--(\k\i-\jp)--(\k\ip-\jp)--(\k\ip-\j);
  61.        }
  62.      }{}
  63.    }{
  64.      \IfInteger{\resultj}{}{
  65.        \foreach \k in {br,rt,tl,lb}{
  66.          \fill[fill=black] (\k\i-\j)--(\k\i-\jp)--(\k\ip-\jp)--(\k\ip-\j);
  67.        }      
  68.      }
  69.    }
  70.  }
  71. }
  72. %Center box
  73. \fill[fill=black] (br\secs-\secs)--(rt\secs-\secs)--(tl\secs-\secs)--(lb\secs-\secs);
  74.  
  75. %To draw whole grid:
  76. %\foreach \i in {1,...,\secs}{
  77. %  \draw (b1)--(r\i) (r1)--(t\i) (t1)--(l\i) (l1)--(b\i);
  78. %}
  79.  
  80. %To draw just bounding box:
  81. \draw (0,0)--(\Width,0)--(\Width,\Height)--(0,\Height)--(0,0);
  82.  
  83. \end{tikzpicture}
  84.  
  85. \end{center}
  86.  
  87. \vspace*{\fill}
  88.  
  89. \end{document}
clone this paste RAW Paste Data