Initial commit

This commit is contained in:
Ian Jauslin 2017-08-06 16:42:24 +00:00
commit dfe8ce9590
45 changed files with 3042 additions and 0 deletions

1329
Jauslin_Lebowitz_2017b.tex Normal file

File diff suppressed because it is too large Load Diff

54
Makefile Normal file
View File

@ -0,0 +1,54 @@
PROJECTNAME=$(basename $(wildcard *.tex))
LIBS=$(notdir $(wildcard libs/*))
FIGS=$(notdir $(wildcard figs/*.fig))
PDFS=$(addsuffix .pdf, $(PROJECTNAME))
SYNCTEXS=$(addsuffix .synctex.gz, $(PROJECTNAME))
all: $(PROJECTNAME)
$(PROJECTNAME): $(LIBS) $(FIGS)
pdflatex -file-line-error $@.tex
pdflatex -file-line-error $@.tex
pdflatex -synctex=1 $@.tex
$(PROJECTNAME).aux: $(LIBS) $(FIGS)
pdflatex -file-line-error -draftmode $(PROJECTNAME).tex
$(SYNCTEXS): $(LIBS) $(FIGS)
pdflatex -synctex=1 $(patsubst %.synctex.gz, %.tex, $@)
libs: $(LIBS)
$(LIBS):
ln -fs libs/$@ ./
figs: $(FIGS)
$(FIGS):
make -C figs/$@
ln -fs figs/$@/*.pdf ./
clean-aux:
rm -f $(addsuffix .aux, $(PROJECTNAME))
rm -f $(addsuffix .log, $(PROJECTNAME))
rm -f $(addsuffix .out, $(PROJECTNAME))
clean-libs:
rm -f $(LIBS)
clean-figs:
$(foreach fig,$(addprefix figs/, $(FIGS)), make -C $(fig) clean; )
rm -f $(notdir $(wildcard figs/*.fig/*.pdf))
clean-figs-aux:
$(foreach fig,$(addprefix figs/, $(FIGS)), make -C $(fig) clean-aux; )
clean-tex:
rm -f $(PDFS) $(SYNCTEXS)
clean: clean-aux clean-tex clean-libs clean-figs

45
README Normal file
View File

@ -0,0 +1,45 @@
This directory contains the source files to typeset the article, and generate
the figures. This can be accomplished by running
make
This document uses a custom class file, located in the 'libs' directory, which
defines a number of commands. Most of these are drop-in replacements for those
defined in the 'article' class.
Some extra functionality is provided in custom style files, located in the
'libs' directory.
* Dependencies:
pdflatex
TeXlive packages:
amsfonts
babel
babel-russian
color
cyrillic
doublestroke
graphics
hyperref
latex
lh
marginnote
pgf
standalone
GNU make
* Files:
Jauslin_Lebowitz_2017b.tex:
main LaTeX file
libs:
custom LaTeX class and style files
figs:
source code for the figures

View File

@ -0,0 +1 @@
../libs/Makefile

View File

@ -0,0 +1,32 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\fill[color=lightgray](4.5,0.5)--++(1.0,0.0)--++(0.0,1.0)--++(2.0,0.0)--++(0.0,1.0)--++(2.0,0.0)--++(0.0,1.0)--++(2.0,0.0)--++(0.0,1.0)--++(1.0,0.0)--++(0.0,1.0)--++(-1.0,0.0)--++(0.0,2.0)--++(-1.0,0.0)--++(0.0,2.0)--++(-1.0,0.0)--++(0.0,2.0)--++(-1.0,0.0)--++(0.0,1.0)--++(-1.0,0.0)--++(0.0,-1.0)--++(-2.0,0.0)--++(0.0,-1.0)--++(-2.0,0.0)--++(0.0,-1.0)--++(-2.0,0.0)--++(0.0,-1.0)--++(-1.0,0.0)--++(0.0,-1.0)--++(1.0,0.0)--++(0.0,-2.0)--++(1.0,0.0)--++(0.0,-2.0)--++(1.0,0.0)--++(0.0,-2.0)--++(1.0,0.0)--cycle;
\begin{scope}
\clip(4.5,0.5)--++(1.0,0.0)--++(0.0,1.0)--++(2.0,0.0)--++(0.0,1.0)--++(2.0,0.0)--++(0.0,1.0)--++(2.0,0.0)--++(0.0,1.0)--++(1.0,0.0)--++(0.0,1.0)--++(-1.0,0.0)--++(0.0,2.0)--++(-1.0,0.0)--++(0.0,2.0)--++(-1.0,0.0)--++(0.0,2.0)--++(-1.0,0.0)--++(0.0,1.0)--++(-1.0,0.0)--++(0.0,-1.0)--++(-2.0,0.0)--++(0.0,-1.0)--++(-2.0,0.0)--++(0.0,-1.0)--++(-2.0,0.0)--++(0.0,-1.0)--++(-1.0,0.0)--++(0.0,-1.0)--++(1.0,0.0)--++(0.0,-2.0)--++(1.0,0.0)--++(0.0,-2.0)--++(1.0,0.0)--++(0.0,-2.0)--++(1.0,0.0)--cycle;
\grid{13}{13}{(0,0)}
\end{scope}
\cross{teal}{(5,2)}
\cross{teal}{(4,4)}
\cross{teal}{(3,6)}
\cross{teal}{(2,8)}
\cross{teal}{(7,3)}
\cross{teal}{(9,4)}
\cross{teal}{(11,5)}
\cross{teal}{(10,7)}
\cross{teal}{(9,9)}
\cross{teal}{(8,11)}
\cross{teal}{(6,10)}
\cross{teal}{(4,9)}
\draw[color=black,line width=6.0](4.5,0.5)--++(1.0,0.0)--++(0.0,1.0)--++(2.0,0.0)--++(0.0,1.0)--++(2.0,0.0)--++(0.0,1.0)--++(2.0,0.0)--++(0.0,1.0)--++(1.0,0.0)--++(0.0,1.0)--++(-1.0,0.0)--++(0.0,2.0)--++(-1.0,0.0)--++(0.0,2.0)--++(-1.0,0.0)--++(0.0,2.0)--++(-1.0,0.0)--++(0.0,1.0)--++(-1.0,0.0)--++(0.0,-1.0)--++(-2.0,0.0)--++(0.0,-1.0)--++(-2.0,0.0)--++(0.0,-1.0)--++(-2.0,0.0)--++(0.0,-1.0)--++(-1.0,0.0)--++(0.0,-1.0)--++(1.0,0.0)--++(0.0,-2.0)--++(1.0,0.0)--++(0.0,-2.0)--++(1.0,0.0)--++(0.0,-2.0)--++(1.0,0.0)--++(0.0,-1.1);
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1,29 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\fill[color=lightgray](4.5,0.5)--++(1.0,0.0)--++(0.0,1.0)--++(2.0,0.0)--++(0.0,1.0)--++(2.0,0.0)--++(0.0,1.0)--++(2.0,0.0)--++(0.0,1.0)--++(1.0,0.0)--++(0.0,1.0)--++(-1.0,0.0)--++(0.0,2.0)--++(-1.0,0.0)--++(0.0,2.0)--++(-1.0,0.0)--++(0.0,2.0)--++(-1.0,0.0)--++(0.0,1.0)--++(-1.0,0.0)--++(0.0,-1.0)--++(-2.0,0.0)--++(0.0,-1.0)--++(-2.0,0.0)--++(0.0,-1.0)--++(-2.0,0.0)--++(0.0,-1.0)--++(-1.0,0.0)--++(0.0,-1.0)--++(1.0,0.0)--++(0.0,-2.0)--++(1.0,0.0)--++(0.0,-2.0)--++(1.0,0.0)--++(0.0,-2.0)--++(1.0,0.0)--cycle;
\begin{scope}
\clip(4.5,0.5)--++(1.0,0.0)--++(0.0,1.0)--++(2.0,0.0)--++(0.0,1.0)--++(2.0,0.0)--++(0.0,1.0)--++(2.0,0.0)--++(0.0,1.0)--++(1.0,0.0)--++(0.0,1.0)--++(-1.0,0.0)--++(0.0,2.0)--++(-1.0,0.0)--++(0.0,2.0)--++(-1.0,0.0)--++(0.0,2.0)--++(-1.0,0.0)--++(0.0,1.0)--++(-1.0,0.0)--++(0.0,-1.0)--++(-2.0,0.0)--++(0.0,-1.0)--++(-2.0,0.0)--++(0.0,-1.0)--++(-2.0,0.0)--++(0.0,-1.0)--++(-1.0,0.0)--++(0.0,-1.0)--++(1.0,0.0)--++(0.0,-2.0)--++(1.0,0.0)--++(0.0,-2.0)--++(1.0,0.0)--++(0.0,-2.0)--++(1.0,0.0)--cycle;
\grid{13}{13}{(0,0)}
\end{scope}
\cross{magenta}{(10, 9)}
\cross{magenta}{( 8,10)}
\cross{magenta}{( 6,11)}
\cross{magenta}{( 5, 9)}
\cross{magenta}{( 2, 8)}
\cross{magenta}{( 3, 5)}
\cross{magenta}{( 4, 2)}
\cross{magenta}{( 7, 3)}
\cross{magenta}{(10, 4)}
\cross{magenta}{(11, 6)}
\draw[color=black,line width=6.0](4.5,0.5)--++(1.0,0.0)--++(0.0,1.0)--++(2.0,0.0)--++(0.0,1.0)--++(2.0,0.0)--++(0.0,1.0)--++(2.0,0.0)--++(0.0,1.0)--++(1.0,0.0)--++(0.0,1.0)--++(-1.0,0.0)--++(0.0,2.0)--++(-1.0,0.0)--++(0.0,2.0)--++(-1.0,0.0)--++(0.0,2.0)--++(-1.0,0.0)--++(0.0,1.0)--++(-1.0,0.0)--++(0.0,-1.0)--++(-2.0,0.0)--++(0.0,-1.0)--++(-2.0,0.0)--++(0.0,-1.0)--++(-2.0,0.0)--++(0.0,-1.0)--++(-1.0,0.0)--++(0.0,-1.0)--++(1.0,0.0)--++(0.0,-2.0)--++(1.0,0.0)--++(0.0,-2.0)--++(1.0,0.0)--++(0.0,-2.0)--++(1.0,0.0)--++(0.0,-1.1);
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1 @@
../../libs/shapes.sty

View File

@ -0,0 +1 @@
../libs/Makefile

View File

@ -0,0 +1,75 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\cross{cyan}{(5,2)}
\cross{magenta}{(4,4)}
\cross{magenta}{(3,6)}
\cross{cyan}{(2,8)}
\cross{magenta}{(7,3)}
\cross{magenta}{(9,4)}
\cross{cyan}{(11,5)}
\cross{magenta}{(10,7)}
\cross{cyan}{(9,9)}
\cross{cyan}{(8,11)}
\cross{cyan}{(6,10)}
\cross{magenta}{(4,9)}
\cross{magenta}{(6,6)}
\cross{magenta}{(7,8)}
\square{black}{(6,4)}
\square{black}{(5,5)}
\square{black}{(5,7)}
\square{black}{(4,7)}
\square{black}{(5,8)}
\square{black}{(7,5)}
\square{black}{(8,5)}
\square{black}{(8,6)}
\square{black}{(9,6)}
\square{black}{(8,7)}
\cross{cyan}{(13,6)}
\cross{red}{(12,8)}
\cross{cyan}{(11,10)}
\cross{cyan}{(10,12)}
\cross{red}{(15,7)}
\cross{red}{(17,8)}
\cross{cyan}{(19,9)}
\cross{red}{(18,11)}
\cross{red}{(17,13)}
\cross{cyan}{(16,15)}
\cross{red}{(14,14)}
\cross{cyan}{(12,13)}
\cross{red}{(15,10)}
\cross{red}{(13,11)}
\square{black}{(14,8)}
\square{black}{(14,9)}
\square{black}{(13,9)}
\square{black}{(16,9)}
\square{black}{(17,10)}
\square{black}{(16,11)}
\square{black}{(16,12)}
\square{black}{(15,12)}
\square{black}{(14,12)}
\square{black}{(15,13)}
\foreach \k in {0,...,5}{
\cross{cyan}{(4,-1)++(\k*-1,\k*2)}
}
\foreach \k in {1,...,9}{
\cross{cyan}{(4,-1)++(\k*2,\k*1)}
}
\foreach \k in {1,...,5}{
\cross{cyan}{(22,8)++(\k*-1,\k*2)}
}
\foreach \k in {1,...,8}{
\cross{cyan}{(-1,9)++(\k*2,\k*1)}
}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1,117 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\foreach \k in {0,...,14}{
\cross{cyan}{(\k*-1,\k*2)}
}
\foreach \l in {1,...,14}{
\cross{cyan}{(\l*2,\l)}
}
\foreach \k in {1,...,14}{
\cross{cyan}{(28,14)++(\k*-1,\k*2)}
}
\foreach \l in {1,...,13}{
\cross{cyan}{(-14,28)++(\l*2,\l)}
}
\foreach \k in {1,...,11}{
\cross{red}{(1,3)++(\k*-1,\k*2)}
}
\foreach \l in {1,...,11}{
\cross{red}{(1,3)++(\l*2,\l)}
}
\foreach \k in {1,...,11}{
\cross{red}{(1,3)++(24,12)++(\k*-1,\k*2)}
}
\foreach \l in {1,...,11}{
\cross{red}{(1,3)++(-12,24)++(\l*2,\l)}
}
\cross{cyan}{(1,3)}
\cross{cyan}{(1,3)++(-12,24)}
\cross{cyan}{(1,3)++(24,12)}
\cross{cyan}{(1,3)++(12,36)}
\foreach \k in {0,...,10}{
\cross{black}{(2,6)++(\k*-1,\k*2)}
}
\foreach \l in {1,...,10}{
\cross{black}{(2,6)++(\l*2,\l)}
}
\foreach \k in {1,...,10}{
\cross{black}{(2,6)++(20,10)++(\k*-1,\k*2)}
}
\foreach \l in {1,...,9}{
\cross{black}{(2,6)++(-10,20)++(\l*2,\l)}
}
\foreach \k in {0,...,9}{
\cross{red}{(2,8)++(\k*-1,\k*2)}
}
\foreach \l in {1,...,9}{
\cross{red}{(2,8)++(\l*2,\l)}
}
\foreach \k in {1,...,9}{
\cross{red}{(2,8)++(18,9)++(\k*-1,\k*2)}
}
\foreach \l in {1,...,8}{
\cross{red}{(2,8)++(-9,18)++(\l*2,\l)}
}
\foreach \k in {0,...,7}{
\cross{cyan}{(3,11)++(\k*-1,\k*2)}
}
\foreach \l in {1,...,7}{
\cross{cyan}{(3,11)++(\l*2,\l)}
}
\foreach \k in {1,...,7}{
\cross{cyan}{(3,11)++(14,7)++(\k*-1,\k*2)}
}
\foreach \l in {1,...,6}{
\cross{cyan}{(3,11)++(-7,14)++(\l*2,\l)}
}
\foreach \k in {0,...,4}{
\cross{magenta}{(4,14)++(\k*-1,\k*2)}
}
\foreach \l in {1,...,4}{
\cross{magenta}{(4,14)++(\l*2,\l)}
}
\foreach \k in {1,...,4}{
\cross{magenta}{(4,14)++(10,5)++(\k*-1,\k*2)}
}
\foreach \l in {1,...,4}{
\cross{magenta}{(4,14)++(-5,10)++(\l*2,\l)}
}
\cross{cyan}{(4,14)}
\cross{cyan}{(4,14)++(-5,10)}
\cross{cyan}{(4,14)++(10,5)}
\cross{cyan}{(4,14)++(5,15)}
\foreach \k in {0,...,3}{
\cross{black}{(5,17)++(\k*-1,\k*2)}
}
\foreach \l in {1,...,3}{
\cross{black}{(5,17)++(\l*2,\l)}
}
\foreach \k in {1,...,3}{
\cross{black}{(5,17)++(6,3)++(\k*-1,\k*2)}
}
\foreach \l in {1,...,2}{
\cross{black}{(5,17)++(-3,6)++(\l*2,\l)}
}
\cross{magenta}{(6,19)}
\cross{magenta}{(8,23)}
\cross{magenta}{(4,20)}
\cross{magenta}{(6,24)}
\cross{magenta}{(3,23)}
\cross{magenta}{(9,20)}
\cross{cyan}{(7,21)}
\cross{cyan}{(5,22)}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1 @@
../../libs/shapes.sty

View File

@ -0,0 +1 @@
../libs/Makefile

View File

@ -0,0 +1,12 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\grid56{(-2,-2)}
\cross{cyan}{(0,0)}
\cross{cyan}{(1,2)}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1,12 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\grid65{(-2,-2)}
\cross{cyan}{(0,0)}
\cross{cyan}{(2,1)}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1,12 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\grid74{(-2,-2)}
\cross{cyan}{(0,0)}
\cross{cyan}{(3,0)}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1 @@
../../libs/shapes.sty

View File

@ -0,0 +1 @@
../libs/Makefile

View File

@ -0,0 +1,14 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\square{red}{(1,1)}
\square{red}{(2,1)}
\grid74{(-2,-2)}
\cross{cyan}{(0,0)}
\cross{cyan}{(3,0)}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1,14 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\square{red}{(-1,1)}
\grid77{(-4,-3)}
\cross{cyan}{(-2,-1)}
\cross{cyan}{(0,0)}
\cross{cyan}{(1,2)}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1,16 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\square{red}{(-1,-2)}
\square{red}{(0,-2)}
\square{red}{(1,-2)}
\grid85{(-4,-3)}
\cross{cyan}{(-2,-1)}
\cross{cyan}{(0,0)}
\cross{cyan}{(2,-1)}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1,15 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\grid88{(-4,-4)}
\cross{cyan}{(0,0)}
\cross{magenta}{(2,1)}
\cross{magenta}{(-1,2)}
\cross{magenta}{(-2,-1)}
\cross{magenta}{(1,-2)}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1,15 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\grid88{(-4,-4)}
\cross{cyan}{(0,0)}
\cross{magenta}{(1,2)}
\cross{magenta}{(2,-1)}
\cross{magenta}{(-1,-2)}
\cross{magenta}{(-2,1)}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1,18 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\grid9{10}{(-4,-4)}
\cross{cyan}{(0,0)}
\cross{cyan}{(1,2)}
\cross{magenta}{(2,4)}
\cross{magenta}{(2,-1)}
\cross{magenta}{(3,1)}
\cross{magenta}{(-1,-2)}
\cross{magenta}{(-2,1)}
\cross{magenta}{(-1,3)}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1 @@
../../libs/shapes.sty

25
figs/libs/Makefile Normal file
View File

@ -0,0 +1,25 @@
PROJECTNAME=$(basename $(basename $(wildcard *.tikz.tex)))
LIBS=$(notdir $(wildcard libs/*))
PDFS=$(addsuffix .pdf, $(PROJECTNAME))
all: $(PDFS)
$(PDFS): $(LIBS)
echo $(LIBS)
pdflatex -jobname $(basename $@) -file-line-error $(patsubst %.pdf, %.tikz.tex, $@)
$(LIBS):
ln -fs libs/$@ ./
clean-libs:
rm -f $(LIBS)
clean-aux:
rm -f $(addsuffix .aux, $(PROJECTNAME))
rm -f $(addsuffix .log, $(PROJECTNAME))
clean-tex:
rm -f $(PDFS)
clean: clean-libs clean-aux clean-tex

87
figs/libs/shapes.sty Normal file
View File

@ -0,0 +1,87 @@
% square lattice (width #1, height #2, origin #3, spacing #4)
\def\grid#1#2#3{
\foreach\i in {0,...,#2}{
\draw#3++(0,\i)--++(#1,0);
}
\foreach\i in {0,...,#1}{
\draw#3++(\i,0)--++(0,#2);
}
}
% cross (color #1, position #2)
\def\cross#1#2{
\fill[color=#1]#2++(0.5,0.5)--++(0,1)--++(-1,0)--++(0,-1)--++(-1,0)--++(0,-1)--++(1,0)--++(0,-1)--++(1,0)--++(0,1)--++(1,0)--++(0,1)--++(-1,0);
\begin{scope}
\clip#2++(0.5,0.5)--++(0,1)--++(-1,0)--++(0,-1)--++(-1,0)--++(0,-1)--++(1,0)--++(0,-1)--++(1,0)--++(0,1)--++(1,0)--++(0,1)--++(-1,0);
\grid44{[color=white]#2++(-2,-2)}
\end{scope}
\draw[color=black]#2++(0.5,0.5)--++(0,1)--++(-1,0)--++(0,-1)--++(-1,0)--++(0,-1)--++(1,0)--++(0,-1)--++(1,0)--++(0,1)--++(1,0)--++(0,1)--++(-1,0);
}
% V triomino (color #1, position #2)
\def\Vtriomino#1#2{
\fill[color=#1]#2++(0.5,0.5)--++(0,1)--++(-1,0)--++(0,-2)--++(2,0)--++(0,1)--++(-1,0);
\begin{scope}
\clip#2++(0.5,0.5)--++(0,1)--++(-1,0)--++(0,-2)--++(2,0)--++(0,1)--++(-1,0);
\grid33{[color=white]#2++(-1,-1)}
\end{scope}
\draw[color=black]#2++(0.5,0.5)--++(0,1)--++(-1,0)--++(0,-2)--++(2,0)--++(0,1)--++(-1,0);
}
% T tetromino (color #1, position #2)
\def\Ttetromino#1#2{
\fill[color=#1]#2++(0.5,0.5)--++(0,1)--++(-1,0)--++(0,-3)--++(1,0)--++(0,1)--++(1,0)--++(0,1)--++(-1,0);
\begin{scope}
\clip#2++(0.5,0.5)--++(0,1)--++(-1,0)--++(0,-3)--++(1,0)--++(0,1)--++(1,0)--++(0,1)--++(-1,0);
\grid34{[color=white]#2++(-1,-2)}
\end{scope}
\draw[color=black]#2++(0.5,0.5)--++(0,1)--++(-1,0)--++(0,-3)--++(1,0)--++(0,1)--++(1,0)--++(0,1)--++(-1,0);
}
% L tetromino (color #1, position #2)
\def\Ltetromino#1#2{
\fill[color=#1]#2++(0.5,0.5)--++(0,1)--++(-1,0)--++(0,-3)--++(2,0)--++(0,1)--++(-1,0)--++(0,1);
\begin{scope}
\clip#2++(0.5,0.5)--++(0,1)--++(-1,0)--++(0,-3)--++(2,0)--++(0,1)--++(-1,0)--++(0,1);
\grid34{[color=white]#2++(-1,-2)}
\end{scope}
\draw[color=black]#2++(0.5,0.5)--++(0,1)--++(-1,0)--++(0,-3)--++(2,0)--++(0,1)--++(-1,0)--++(0,1);
}
% P pentomino (color #1, position #2)
\def\Ppentomino#1#2{
\fill[color=#1]#2++(1.5,1.5)--++(-2,0)--++(0,-3)--++(1,0)--++(0,1)--++(1,0)--++(0,2);
\begin{scope}
\clip#2++(1.5,1.5)--++(-2,0)--++(0,-3)--++(1,0)--++(0,1)--++(1,0)--++(0,2);
\grid34{[color=white]#2++(-1,-2)}
\end{scope}
\draw[color=black]#2++(1.5,1.5)--++(-2,0)--++(0,-3)--++(1,0)--++(0,1)--++(1,0)--++(0,2);
}
% 1x1 square (color #1, position #2)
\def\square#1#2{
\fill[color=#1]#2++(-0.5,-0.5)--++(0,1)--++(1,0)--++(0,-1)--cycle;
\draw[color=black]#2++(-0.5,-0.5)--++(0,1)--++(1,0)--++(0,-1)--cycle;
\draw[color=white]#2++(-0.5,0)--++(1,0);
\draw[color=white]#2++(0,-0.5)--++(0,1);
}
% 2x2 square (color #1, position #2)
\def\ttsquare#1#2{
\fill[color=#1]#2++(-1,-1)--++(0,2)--++(2,0)--++(0,-2)--cycle;
\draw[color=black]#2++(-1,-1)--++(0,2)--++(2,0)--++(0,-2)--cycle;
}
\def\ttsquareempty#1{
\draw[color=black]#1++(-1,-1)--++(0,2)--++(2,0)--++(0,-2)--cycle;
}
% diamond (color #1, position #2)
\def\diamond#1#2{
\fill[color=#1]#2++(0,-1)--++(1,1)--++(-1,1)--++(-1,-1)--cycle;
\begin{scope}
\clip#2++(0,-1)--++(1,1)--++(-1,1)--++(-1,-1)--cycle;
\grid22{[color=white]#2++(-1,-1)}
\end{scope}
\draw[color=black]#2++(0,-1)--++(1,1)--++(-1,1)--++(-1,-1)--cycle;
}

1
figs/packings.fig/Makefile Symbolic link
View File

@ -0,0 +1 @@
../libs/Makefile

View File

@ -0,0 +1,14 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\foreach \k in {0,...,3}{
\foreach \l in {0,...,3}{
\cross{cyan}{(-2*\l,\l)++(\k,2*\k)}
}
}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1,14 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\foreach \k in {0,...,3}{
\foreach \l in {0,...,3}{
\cross{cyan}{(-\l,2*\l)++(2*\k,\k)}
}
}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1,14 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\foreach\k in{1,...,4}{
\foreach\l in{1,...,4}{
\diamond{cyan}{(\k+\l,\k-\l)}
}
}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1 @@
../../libs/shapes.sty

View File

@ -0,0 +1,11 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\grid34{(-1,-2)}
\Ltetromino{cyan}{(0,0)}
\end{tikzpicture}
\end{document}

1
figs/shapes.fig/Makefile Symbolic link
View File

@ -0,0 +1 @@
../libs/Makefile

View File

@ -0,0 +1,11 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\grid34{(-1,-2)}
\Ppentomino{cyan}{(0,0)}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1,11 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\grid34{(-1,-2)}
\Ttetromino{cyan}{(0,0)}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1,11 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\grid33{(-1,-1)}
\Vtriomino{cyan}{(0,0)}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1,11 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\grid44{(-2,-2)}
\cross{cyan}{(0,0)}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1,11 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\grid44{(-2,-2)}
\diamond{cyan}{(0,0)}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1,37 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\draw(0,0)--++(2,0);
\draw(120:1)--++(3,0);
\draw(120:2)--++(4,0);
\draw(120:2)++(60:1)--++(3,0);
\draw(120:2)++(60:2)--++(2,0);
\draw(0,0)--++(60:4);
\draw(1,0)--++(60:3);
\draw(2,0)--++(60:2);
\draw(120:1)--++(60:3);
\draw(120:2)--++(60:2);
\draw(0,0)--++(120:2);
\draw(1,0)--++(120:3);
\draw(2,0)--++(120:4);
\draw(2,0)++(60:1)--++(120:3);
\draw(2,0)++(60:2)--++(120:2);
\fill[color=cyan](60:1)--++(0:1)--++(60:1)--++(120:1)--++(180:1)--++(240:1)--++(300:1)--cycle;
\draw[color=white](60:1)--++(60:2);
\draw[color=white](60:1)++(1,0)--++(120:2);
\draw[color=white](60:1)++(120:1)--++(2,0);
\draw(60:1)--++(0:1)--++(60:1)--++(120:1)--++(180:1)--++(240:1)--++(300:1)--cycle;
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1 @@
../../libs/shapes.sty

32
libs/constants.sty Normal file
View File

@ -0,0 +1,32 @@
%%
%% constants package:
%% automatically numbered constants
%%
%% TeX format
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
%% package name
\ProvidesPackage{constants}[2016/11/19]
%% declare new constant
\def\cst#1#2{%
% check whether the constant was defined
\ifcsname cst@#1@#2\endcsname%
#1_{\csname cst@#1@#2\endcsname}%
\else%
% check whether this character has a counter associated to it
\ifcsname thecst@#1@@count\endcsname%
\else%
\newcounter{cst@#1@@count}%
\fi%
% increment counter
\stepcounter{cst@#1@@count}%
\expandafter\xdef\csname cst@#1@#2\endcsname{\csname thecst@#1@@count\endcsname}#1_{\csname thecst@#1@@count\endcsname}%
\fi
}
%% end
\endinput

645
libs/ian.cls Normal file
View File

@ -0,0 +1,645 @@
%%
%% Ian's class file
%%
%% TeX format
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
%% class name
\ProvidesClass{ian}[2017/06/06]
%% boolean to signal that this class is being used
\newif\ifianclass
%% options
% no section numbering in equations
\DeclareOption{section_in_eq}{\sectionsineqtrue}
\DeclareOption{section_in_fig}{\sectionsinfigtrue}
\DeclareOption{section_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}}
\DeclareOption{section_in_all}{\sectionsineqtrue\sectionsinfigtrue\PassOptionsToPackage{section_in_theo}{iantheo}}
\DeclareOption{subsection_in_eq}{\subsectionsineqtrue}
\DeclareOption{subsection_in_fig}{\subsectionsinfigtrue}
\DeclareOption{subsection_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}}
\DeclareOption{subsection_in_all}{\subsectionsineqtrue\subsectionsinfigtrue\PassOptionsToPackage{subsection_in_theo}{iantheo}}
\DeclareOption{no_section_in_eq}{\sectionsineqfalse}
\DeclareOption{no_section_in_fig}{\sectionsinfigfalse}
\DeclareOption{no_section_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}}
\DeclareOption{no_section_in_all}{\sectionsineqfalse\sectionsinfigfalse\PassOptionsToPackage{no_section_in_theo}{iantheo}}
\DeclareOption{no_subsection_in_eq}{\subsectionsineqfalse}
\DeclareOption{no_subsection_in_fig}{\subsectionsinfigfalse}
\DeclareOption{no_subsection_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}}
\DeclareOption{no_subsection_in_all}{\subsectionsineqfalse\subsectionsinfigfalse\PassOptionsToPackage{no_subsection_in_theo}{iantheo}}
% reset point
\DeclareOption{point_reset_at_section}{\PassOptionsToPackage{reset_at_section}{point}}
\DeclareOption{point_no_reset_at_section}{\PassOptionsToPackage{no_reset_at_section}{point}}
\DeclareOption{point_reset_at_theo}{\PassOptionsToPackage{reset_at_theo}{point}}
\DeclareOption{point_no_reset_at_theo}{\PassOptionsToPackage{no_reset_at_theo}{point}}
\def\ian@defaultoptions{
\ExecuteOptions{section_in_all, no_subsection_in_all}
\ProcessOptions
%% required packages
\RequirePackage{iantheo}
\RequirePackage{point}
\RequirePackage{color}
\RequirePackage{marginnote}
\PassOptionsToPackage{hidelinks}{hyperref}
\RequirePackage{hyperref}
}
%% paper dimensions
\setlength\paperheight{297mm}
\setlength\paperwidth{210mm}
%% fonts
\input{size11.clo}
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
%% text dimensions
\hoffset=-50pt
\voffset=-72pt
\textwidth=460pt
\textheight=704pt
%% remove default indentation
\parindent=0pt
%% indent command
\def\indent{\hskip20pt}
%% something is wrong with \thepage, redefine it
\gdef\thepage{\the\c@page}
%% array lines (to use the array environment)
\setlength\arraycolsep{5\p@}
\setlength\arrayrulewidth{.4\p@}
%% correct vertical alignment at the end of a document
\AtEndDocument{
\vfill
\eject
}
%% hyperlinks
% hyperlinkcounter
\newcounter{lncount}
% hyperref anchor
\def\hrefanchor{%
\stepcounter{lncount}%
\hypertarget{ln.\thelncount}{}%
}
%% define a command and write it to aux file
\def\outdef#1#2{%
% define command%
\expandafter\xdef\csname #1\endcsname{#2}%
% hyperlink number%
\expandafter\xdef\csname #1@hl\endcsname{\thelncount}%
% write command to aux%
\immediate\write\@auxout{\noexpand\expandafter\noexpand\gdef\noexpand\csname #1\endcsname{\csname #1\endcsname}}%
\immediate\write\@auxout{\noexpand\expandafter\noexpand\gdef\noexpand\csname #1@hl\endcsname{\thelncount}}%
}
%% can call commands even when they are not defined
\def\safe#1{%
\ifdefined#1%
#1%
\else%
{\color{red}\bf?}%
\fi%
}
%% define a label for the latest tag
%% label defines a command containing the string stored in \tag
\def\deflabel{
\def\label##1{\expandafter\outdef{label@##1}{\safe\tag}}
\def\ref##1{%
% check whether the label is defined (hyperlink runs into errors if this check is omitted)
\ifcsname label@##1@hl\endcsname%
\hyperlink{ln.\csname label@##1@hl\endcsname}{{\color{blue}\safe\csname label@##1\endcsname}}%
\else%
\ifcsname label@##1\endcsname%
{\color{blue}\csname ##1\endcsname}%
\else%
{\bf ??}%
\fi%
\fi%
}
}
%% make a custom link at any given location in the document
\def\makelink#1#2{%
\hrefanchor%
\outdef{label@#1}{#2}%
}
%% section command
% counter
\newcounter{sectioncount}
% space before section
\newlength\secskip
\setlength\secskip{40pt}
% a prefix to put before the section number, e.g. A for appendices
\def\sectionprefix{}
% define some lengths
\newlength\secnumwidth
\newlength\sectitlewidth
\def\section#1{
% reset counters
\stepcounter{sectioncount}
\setcounter{subsectioncount}{0}
\ifsectionsineq
\setcounter{seqcount}0
\fi
\ifsectionsinfig
\setcounter{figcount}0
\fi
% space before section (if not first)
\ifnum\thesectioncount>1
\vskip\secskip
\penalty-1000
\fi
% hyperref anchor
\hrefanchor
% define tag (for \label)
\xdef\tag{\sectionprefix\thesectioncount}
% get widths
\def\@secnum{{\bf\Large\sectionprefix\thesectioncount.\hskip10pt}}
\settowidth\secnumwidth{\@secnum}
\setlength\sectitlewidth\textwidth
\addtolength\sectitlewidth{-\secnumwidth}
% print name
\parbox{\textwidth}{
\@secnum
\parbox[t]{\sectitlewidth}{\Large\bf #1}}
% write to table of contents
\iftoc
% save lncount in aux variable which is written to toc
\immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@sec.\thesectioncount\endcsname{\thelncount}}
\write\tocoutput{\noexpand\tocsection{#1}{\thepage}}
\fi
%space
\par\penalty10000
\bigskip\penalty10000
}
%% subsection
% counter
\newcounter{subsectioncount}
% space before subsection
\newlength\subsecskip
\setlength\subsecskip{30pt}
\def\subsection#1{
% counters
\stepcounter{subsectioncount}
\setcounter{subsubsectioncount}{0}
\ifsubsectionsineq
\setcounter{seqcount}0
\fi
\ifsubsectionsinfig
\setcounter{figcount}0
\fi
% space before subsection (if not first)
\ifnum\thesubsectioncount>1
\vskip\subsecskip
\penalty-500
\fi
% hyperref anchor
\hrefanchor
% define tag (for \label)
\xdef\tag{\sectionprefix\thesectioncount.\thesubsectioncount}
% get widths
\def\@secnum{{\bf\large\hskip.5cm\sectionprefix\thesectioncount.\thesubsectioncount.\hskip5pt}}
\settowidth\secnumwidth{\@secnum}
\setlength\sectitlewidth\textwidth
\addtolength\sectitlewidth{-\secnumwidth}
% print name
\parbox{\textwidth}{
\@secnum
\parbox[t]{\sectitlewidth}{\large\bf #1}}
% write to table of contents
\iftoc
% save lncount in aux variable which is written to toc
\immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@subsec.\thesectioncount.\thesubsectioncount\endcsname{\thelncount}}
\write\tocoutput{\noexpand\tocsubsection{#1}{\thepage}}
\fi
% space
\par\penalty10000
\medskip\penalty10000
}
%% subsubsection
% counter
\newcounter{subsubsectioncount}
% space before subsubsection
\newlength\subsubsecskip
\setlength\subsubsecskip{20pt}
\def\subsubsection#1{
% counters
\stepcounter{subsubsectioncount}
% space before subsubsection (if not first)
\ifnum\thesubsubsectioncount>1
\vskip\subsubsecskip
\penalty-500
\fi
% hyperref anchor
\hrefanchor
% define tag (for \label)
\xdef\tag{\sectionprefix\thesectioncount.\thesubsectioncount.\thesubsubsectioncount}
% get widths
\def\@secnum{{\bf\hskip1.cm\sectionprefix\thesectioncount.\thesubsectioncount.\thesubsubsectioncount.\hskip5pt}}
\settowidth\secnumwidth{\@secnum}
\setlength\sectitlewidth\textwidth
\addtolength\sectitlewidth{-\secnumwidth}
% print name
\parbox{\textwidth}{
\@secnum
\parbox[t]{\sectitlewidth}{\large\bf #1}}
% write to table of contents
\iftoc
% save lncount in aux variable which is written to toc
\immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@subsubsec.\thesectioncount.\thesubsectioncount.\thesubsubsectioncount\endcsname{\thelncount}}
\write\tocoutput{\noexpand\tocsubsubsection{#1}{\thepage}}
\fi
% space
\par\penalty10000
\medskip\penalty10000
}
%% itemize
\newlength\itemizeskip
% left margin for items
\setlength\itemizeskip{20pt}
\newlength\itemizeseparator
% space between the item symbol and the text
\setlength\itemizeseparator{5pt}
% penalty preceding an itemize
\def\itemizepenalty{0}
% counter counting the itemize level
\newcounter{itemizecount}
% item symbol
\def\itemizept#1{
\ifnum#1=1
\textbullet
\else
$\scriptstyle\blacktriangleright$
\fi
}
\newlength\current@itemizeskip
\setlength\current@itemizeskip{0pt}
\def\itemize{
\par\penalty\itemizepenalty\medskip\penalty\itemizepenalty
\addtocounter{itemizecount}{1}
\addtolength\current@itemizeskip{\itemizeskip}
\leftskip\current@itemizeskip
}
\def\enditemize{
\addtocounter{itemizecount}{-1}
\addtolength\current@itemizeskip{-\itemizeskip}
\par\leftskip\current@itemizeskip
\medskip
}
\newlength\itempt@total
\def\item{
\settowidth\itempt@total{\itemizept\theitemizecount}
\addtolength\itempt@total{\itemizeseparator}
\par
\medskip
\hskip-\itempt@total\itemizept\theitemizecount\hskip\itemizeseparator
}
%% enumerate
\newcounter{enumerate@count}
\def\enumerate{
\setcounter{enumerate@count}0
\let\olditem\item
\let\olditemizept\itemizept
\def\item{
% counter
\stepcounter{enumerate@count}
% set header
\def\itemizept{\theenumerate@count.}
% hyperref anchor
\hrefanchor
% define tag (for \label)
\xdef\tag{\theenumerate@count}
\olditem
}
\itemize
}
\def\endenumerate{
\enditemize
\let\item\olditem
\let\itemizept\olditemizept
}
%% equation numbering
% counter
\newcounter{seqcount}
% booleans (write section or subsection in equation number)
\newif\ifsectionsineq
\newif\ifsubsectionsineq
\def\seqcount{
\stepcounter{seqcount}
% the output
\edef\seqformat{\theseqcount}
% add subsection number
\ifsubsectionsineq
\let\tmp\seqformat
\edef\seqformat{\thesubsectioncount.\tmp}
\fi
% add section number
\ifsectionsineq
\let\tmp\seqformat
\edef\seqformat{\sectionprefix\thesectioncount.\tmp}
\fi
% define tag (for \label)
\xdef\tag{\seqformat}
% write number
\marginnote{\hfill(\seqformat)}
}
%% equation environment compatibility
\def\equation{\hrefanchor$$\seqcount}
\def\endequation{$$\@ignoretrue}
%% figures
% counter
\newcounter{figcount}
% booleans (write section or subsection in equation number)
\newif\ifsectionsinfig
\newif\ifsubsectionsinfig
% width of figures
\newlength\figwidth
\setlength\figwidth\textwidth
\addtolength\figwidth{-2.5cm}
% caption
\def\defcaption{
\long\def\caption##1{
\stepcounter{figcount}
% hyperref anchor
\hrefanchor
% the number of the figure
\edef\figformat{\thefigcount}
% add subsection number
\ifsubsectionsinfig
\let\tmp\figformat
\edef\figformat{\thesubsectioncount.\tmp}
\fi
% add section number
\ifsectionsinfig
\let\tmp\figformat
\edef\figformat{\sectionprefix\thesectioncount.\tmp}
\fi
% define tag (for \label)
\xdef\tag{\figformat}
% write
\hfil fig \figformat: \parbox[t]{\figwidth}{\leavevmode\small##1}
% space
\par\bigskip
}
}
%% short caption: centered
\def\captionshort#1{
\stepcounter{figcount}
% hyperref anchor
\hrefanchor
% the number of the figure
\edef\figformat{\thefigcount}
% add section number
\ifsectionsinfig
\let\tmp\figformat
\edef\figformat{\sectionprefix\thesectioncount.\tmp}
\fi
% define tag (for \label)
\xdef\tag{\figformat}
% write
\hfil fig \figformat: {\small#1}
%space
\par\bigskip
}
%% environment
\def\figure{
\par
\vfil\penalty100\vfilneg
\bigskip
}
\def\endfigure{
\par
\vfil\penalty100\vfilneg
\bigskip
}
%% start appendices
\def\appendix{
\vfill
\pagebreak
% counter
\setcounter{sectioncount}0
% prefix
\def\sectionprefix{A}
% write
{\bf \LARGE Appendices}\par\penalty10000\bigskip\penalty10000
% add a mention in the table of contents
\iftoc
\immediate\write\tocoutput{\noexpand\tocappendices}\penalty10000
\fi
%% uncomment for new page for each appendix
%\def\seqskip{\vfill\pagebreak}
}
%% bibliography
% size of header
\newlength\bibheader
\def\thebibliography#1{
\hrefanchor
% add a mention in the table of contents
\iftoc
% save lncount in aux variable which is written to toc
\immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@references\endcsname{\thelncount}}
\write\tocoutput{\noexpand\tocreferences{\thepage}}\penalty10000
\fi
% write
{\bf \LARGE References}\par\penalty10000\bigskip\penalty10000
% width of header
\settowidth\bibheader{[#1]}
\leftskip\bibheader
}
% end environment
\def\endthebibliography{
\par\leftskip0pt
}
%% bibitem command
\def\bibitem[#1]#2{%
\hrefanchor%
\outdef{label@cite#2}{#1}%
\hskip-\bibheader%
\makebox[\bibheader]{\cite{#2}\hfill}%
}
%% cite command (adapted from latex.ltx)
% @tempswa is set to true when there is an optional argument
\newif\@tempswa
\def\cite{%
% check whether there is an optional argument (if there is none, add on empty '[]')
\@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}%
}
% command with optional argument
\def\@citex[#1]#2{\leavevmode%
% initialize loop
\let\@citea\@empty%
% format
\@cite{%
% loop over ',' separated list
\@for\@citeb:=#2\do{%
% text to add at each iteration of the loop (separator between citations)
\@citea\def\@citea{,\ }%
% add entry to citelist
\@writecitation{\@citeb}%
\ref{cite\@citeb}%
}%
}%
% add optional argument text (as an argument to '\@cite')
{#1}%
}
\def\@cite#1#2{%
[#1\if@tempswa , #2\fi]%
}
%% add entry to citelist after checking it has not already been added
\def\@writecitation#1{%
\ifcsname if#1cited\endcsname%
\else%
\expandafter\newif\csname if#1cited\endcsname%
\immediate\write\@auxout{\string\citation{#1}}%
\fi%
}
%% table of contents
% boolean
\newif\iftoc
\def\tableofcontents{
{\bf \large Table of contents:}\par\penalty10000\bigskip\penalty10000
% copy content from file
\IfFileExists{\jobname.toc}{\input{\jobname.toc}}{{\tt error: table of contents missing}}
% open new toc
\newwrite\tocoutput
\immediate\openout\tocoutput=\jobname.toc
\toctrue
}
%% close file
\AtEndDocument{
% close toc
\iftoc
\immediate\closeout\tocoutput
\fi
}
%% fill line with dots
\def\leaderfill{\leaders\hbox to 1em {\hss. \hss}\hfill}
%% same as sectionprefix
\def\tocsectionprefix{}
%% toc formats
\newcounter{tocsectioncount}
\def\tocsection #1#2{
\stepcounter{tocsectioncount}
\setcounter{tocsubsectioncount}{0}
\setcounter{tocsubsubsectioncount}{0}
% write
\smallskip\hyperlink{ln.\csname toc@sec.\thetocsectioncount\endcsname}{{\bf \tocsectionprefix\thetocsectioncount}.\hskip5pt {\color{blue}#1}\leaderfill#2}\par
}
\newcounter{tocsubsectioncount}
\def\tocsubsection #1#2{
\stepcounter{tocsubsectioncount}
\setcounter{tocsubsubsectioncount}{0}
% write
{\hskip10pt\hyperlink{ln.\csname toc@subsec.\thetocsectioncount.\thetocsubsectioncount\endcsname}{{\bf \thetocsubsectioncount}.\hskip5pt {\color{blue}\small #1}\leaderfill#2}}\par
}
\newcounter{tocsubsubsectioncount}
\def\tocsubsubsection #1#2{
\stepcounter{tocsubsubsectioncount}
% write
{\hskip20pt\hyperlink{ln.\csname toc@subsubsec.\thetocsectioncount.\thetocsubsectioncount.\thetocsubsubsectioncount\endcsname}{{\bf \thetocsubsubsectioncount}.\hskip5pt {\color{blue}\small #1}\leaderfill#2}}\par
}
\def\tocappendices{
\medskip
\setcounter{tocsectioncount}0
{\bf Appendices}\par
\smallskip
\def\tocsectionprefix{A}
}
\def\tocreferences#1{
\medskip
{\hyperlink{ln.\csname toc@references\endcsname}{{\color{blue}\bf References}\leaderfill#1}}\par
\smallskip
}
%% definitions that must be loaded at begin document
\let\ian@olddocument\document
\def\document{
\ian@olddocument
\deflabel
\defcaption
}
%% end
\ian@defaultoptions
\endinput

162
libs/iantheo.sty Normal file
View File

@ -0,0 +1,162 @@
%%
%% iantheorem package:
%% Ian's customized theorem command
%%
%% boolean to signal that this package was loaded
\newif\ifiantheo
%% TeX format
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
%% package name
\ProvidesPackage{iantheo}[2016/11/10]
%% options
\newif\ifsectionintheo
\DeclareOption{section_in_theo}{\sectionintheotrue}
\DeclareOption{no_section_in_theo}{\sectionintheofalse}
\newif\ifsubsectionintheo
\DeclareOption{subsection_in_theo}{\subsectionintheotrue}
\DeclareOption{no_subsection_in_theo}{\subsectionintheofalse}
\def\iantheo@defaultoptions{
\ExecuteOptions{section_in_theo, no_subsection_in_theo}
\ProcessOptions
%%% reset at every new section
\ifsectionintheo
\let\iantheo@oldsection\section
\gdef\section{\setcounter{theocount}{0}\iantheo@oldsection}
\fi
%% reset at every new subsection
\ifsubsectionintheo
\let\iantheo@oldsubsection\subsection
\gdef\subsection{\setcounter{theocount}{0}\iantheo@oldsubsection}
\fi
}
%% delimiters
\def\delimtitle#1{
\par%
\leavevmode%
\raise.3em\hbox to\hsize{%
\lower0.3em\hbox{\vrule height0.3em}%
\hrulefill%
\ \lower.3em\hbox{#1}\ %
\hrulefill%
\lower0.3em\hbox{\vrule height0.3em}%
}%
\par\penalty10000%
}
%% callable by ref
\def\delimtitleref#1{
\par%
%
\ifdefined\ianclass%
% hyperref anchor%
\hrefanchor%
% define tag (for \label)%
\xdef\tag{#1}%
\fi%
%
\leavevmode%
\raise.3em\hbox to\hsize{%
\lower0.3em\hbox{\vrule height0.3em}%
\hrulefill%
\ \lower.3em\hbox{\bf #1}\ %
\hrulefill%
\lower0.3em\hbox{\vrule height0.3em}%
}%
\par\penalty10000%
}
%% no title
\def\delim{
\par%
\leavevmode\raise.3em\hbox to\hsize{%
\lower0.3em\hbox{\vrule height0.3em}%
\hrulefill%
\lower0.3em\hbox{\vrule height0.3em}%
}%
\par\penalty10000%
}
%% end delim
\def\enddelim{
\par\penalty10000%
\leavevmode%
\raise.3em\hbox to\hsize{%
\vrule height0.3em\hrulefill\vrule height0.3em%
}%
\par%
}
%% theorem
% counter
\newcounter{theocount}
% booleans (write section or subsection in equation number)
\def\theo#1{
\stepcounter{theocount}
\ifdefined\ianclass
% hyperref anchor
\hrefanchor
\fi
% the number
\def\formattheo{\thetheocount}
% add subsection number
\ifsubsectionintheo
\let\tmp\formattheo
\edef\formattheo{\thesubsectioncount.\tmp}
\fi
% add section number
\ifsectionintheo
\let\tmp\formattheo
\edef\formattheo{\sectionprefix\thesectioncount.\tmp}
\fi
% define tag (for \label)
\xdef\tag{\formattheo}
% write
\delimtitle{\bf #1 \formattheo}
}
\let\endtheo\enddelim
%% theorem headers with name
\def\theoname#1#2{
\theo{#1}\hfil({\it #2})\par\penalty10000\medskip%
}
%% qed symbol
\def\qedsymbol{$\square$}
\def\qed{\penalty10000\hfill\penalty10000\qedsymbol}
%% compatibility with article class
\ifdefined\ianclasstrue
\relax
\else
\def\thesectioncount{\thesection}
\def\thesubsectioncount{\thesubsection}
\def\sectionprefix{}
\fi
%% prevent page breaks after displayed equations
\newcount\prevpostdisplaypenalty
\def\nopagebreakaftereq{
\prevpostdisplaypenalty=\postdisplaypenalty
\postdisplaypenalty=10000
}
%% back to previous value
\def\restorepagebreakaftereq{
\postdisplaypenalty=\prevpostdisplaypenalty
}
%% end
\iantheo@defaultoptions
\endinput

19
libs/largearray.sty Normal file
View File

@ -0,0 +1,19 @@
%%
%% largearray package:
%% Array spanning the entire line
%%
%% TeX format
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
%% package name
\ProvidesPackage{largearray}[2016/11/10]
\RequirePackage{array}
%% array spanning the entire line
\newlength\largearray@width
\setlength\largearray@width\textwidth
\addtolength\largearray@width{-10pt}
\def\largearray{\begin{array}{@{}>{\displaystyle}l@{}}\hphantom{\hspace{\largearray@width}}\\[-.5cm]}
\def\endlargearray{\end{array}}

106
libs/point.sty Normal file
View File

@ -0,0 +1,106 @@
%%
%% Points package:
%% \point commands
%%
%% TeX format
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
%% package name
\ProvidesPackage{point}[2017/06/13]
%% options
\newif\ifresetatsection
\DeclareOption{reset_at_section}{\resetatsectiontrue}
\DeclareOption{no_reset_at_section}{\resetatsectionfalse}
\newif\ifresetatsubsection
\DeclareOption{reset_at_subsection}{\resetatsubsectiontrue}
\DeclareOption{no_reset_at_subsection}{\resetatsubsectionfalse}
\newif\ifresetattheo
\DeclareOption{reset_at_theo}{\resetattheotrue}
\DeclareOption{no_reset_at_theo}{\resetattheofalse}
\def\point@defaultoptions{
\ExecuteOptions{reset_at_section, reset_at_subsection, no_reset_at_theo}
\ProcessOptions
%% reset at every new section
\ifresetatsection
\let\point@oldsection\section
\gdef\section{\resetpointcounter\point@oldsection}
\fi
%% reset at every new subsection
\ifresetatsubsection
\let\point@oldsubsection\subsection
\gdef\subsection{\resetpointcounter\point@oldsubsection}
\fi
%% reset at every new theorem
\ifresetattheo
\ifdefined\iantheotrue
\let\point@oldtheo\theo
\gdef\theo{\resetpointcounter\point@oldtheo}
\fi
\fi
}
%% point
% counter
\newcounter{pointcount}
\def\point{
\stepcounter{pointcount}
\setcounter{subpointcount}{0}
% hyperref anchor (only if the class is 'ian')
\ifdefined\ifianclass
\hrefanchor
% define tag (for \label)
\xdef\tag{\thepointcount}
\fi
% header
\indent{\bf \thepointcount\ - }
}
%% subpoint
% counter
\newcounter{subpointcount}
\def\subpoint{
\stepcounter{subpointcount}
\setcounter{subsubpointcount}0
% hyperref anchor (only if the class is 'ian')
\ifdefined\ifianclass
\hrefanchor
% define tag (for \label)
\xdef\tag{\thepointcount-\thesubpointcount}
\fi
% header
\indent\hskip.5cm{\bf \thepointcount-\thesubpointcount\ - }
}
%% subsubpoint
% counter
\newcounter{subsubpointcount}
\def\subsubpoint{
\stepcounter{subsubpointcount}
% hyperref anchor (only if the class is 'ian')
\ifdefined\ifianclass
\hrefanchor
% define tag (for \label)
\xdef\tag{\thepointcount-\thesubpointcount-\thesubsubpointcount}
\fi
\indent\hskip1cm{\bf \thepointcount-\thesubpointcount-\thesubsubpointcount\ - }
}
%% reset point counters
\def\resetpointcounter{
\setcounter{pointcount}{0}
\setcounter{subpointcount}{0}
\setcounter{subsubpointcount}{0}
}
%% end
\point@defaultoptions
\endinput