Skip to content

Instantly share code, notes, and snippets.

@doraTeX
Created May 21, 2014 15:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save doraTeX/31787fce2d461cc6563a to your computer and use it in GitHub Desktop.
Save doraTeX/31787fce2d461cc6563a to your computer and use it in GitHub Desktop.
TeXでシェルピンスキー・ギャスケットを作る http://doratex.hatenablog.jp/entry/20140522/1400688261
\documentclass{minimal}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{pgffor}
\usepackage{etoolbox}
\usepackage{varwidth}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{varwidth}
\setlength{\PreviewBorder}{0pt}
\setlength{\parindent}{0pt}
\setlength{\fboxsep}{2pt}
\newbox\ZERO
\newbox\ONE
\def\outputletter#1{%
\ifvmode\leavevmode\fi
\ifcase#1\copy\ZERO\or\copy\ONE\fi
}
\begin{document}
\setbox\ZERO\hbox{\colorbox[RGB]{170,255,255}{\makebox[7pt][c]{\texttt{0}}}}
\setbox\ONE\hbox{\colorbox{red}{\textcolor{white}{\makebox[7pt][c]{\texttt{1}}}}}
\begin{varwidth}{\maxdimen}
\begin{center}
\setlength{\lineskiplimit}{-\maxdimen}
\setlength{\baselineskip}{10pt}
\outputletter{1}
\outputletter{1}\outputletter{1}
\csnumgdef{C0}{1}
\csnumgdef{C1}{1}
\foreach \n in {2,...,127}{%
\outputletter{1}%
\csnumgdef{t}{\n-1}%
\csnumgdef{p}{1}%
\foreach \i in {1,...,\t}{%
\csnumgdef{q}{\csname C\i\endcsname}%
\csnumgdef{C\i}{\p+\q}%
\ifnum\csname C\i\endcsname>1
\csnumgdef{C\i}{\csname C\i\endcsname - 2}%
\fi
\csnumgdef{p}{\q}%
\outputletter{\csname C\i\endcsname}%
}%
\csnumgdef{C\n}{1}%
\outputletter{1}\par
}
\end{center}
\end{varwidth}
\end{document}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment