Initial commit

This commit is contained in:
Ian Jauslin 2017-05-04 19:16:34 +00:00
commit 1b13e14750
35 changed files with 1735 additions and 0 deletions

360
Jauslin_Lebowitz_2017.tex Normal file
View File

@ -0,0 +1,360 @@
\documentclass[notoc]{ian}
\usepackage{amssymb}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
\usepackage{graphicx}
\begin{document}
\hbox{}
\vfill
\hfil{\bf\LARGE
Crystalline ordering and large fugacity expansion\par
\vskip10pt
\hfil for hard core lattice particles
}
\vskip80pt
\hfil{\bf\large Ian Jauslin}\par
\hfil{\it School of Mathematics, Institute for Advanced Study}\par
\hfil{\tt\color{blue}\href{mailto:jauslin@ias.edu}{jauslin@ias.edu}}
\vskip20pt
\hfil{\bf\large Joel L. Lebowitz}\par
\hfil{\it Departments of Mathematics and Physics, Rutgers University}\par
\hfil{\it Simons Center for Systems Biology, Institute for Advanced Study}\par
\hfil {\tt\color{blue}\href{mailto:lebowitz@math.rutgers.edu}{lebowitz@math.rutgers.edu}}
\vskip80pt
\hfil {\bf Abstract}\par
\medskip
Using an extension of Pirogov-Sinai theory we prove phase transitions, corresponding to sublattice orderings, for a general class of hard core lattice particle systems with a finite number of close packed configurations. These include many cases for which such transitions have been proven. The proof also shows that, for these systems, the Gaunt-Fisher expansion of the pressure in powers of the inverse fugacity (aside from an explicit logarithmic term) has a nonzero radius of convergence.
\vskip20pt
\hfil{\it Dedicated to Ben Widom, on the occasion of his 90th birthday.}
\vfill\eject
\setcounter{page}1
\pagestyle{plain}
\section{Introduction}
\indent The study of order-disorder phase transitions for hard core lattice particle (HCLP) systems has a long history (see, to name but a few, \cite{Do58,Ka63,GF65,Ba80,Mc10,RD12,DG13} and references therein). These are purely entropy driven transitions, similar to those observed numerically for hard spheres in the continuum~\-\cite{WJ57,AW57}. Whereas a proof of the transition in the hard sphere model is still lacking, there are several HCLP systems in which phase transitions have been proved.
\indent One example is the hard diamond model on the square lattice (see figure~\-\ref{fig:shapes}{\it a}), which is a particle model on $\mathbb Z^2$ with nearest-neighbor exclusion. The existence of a transition from a low-density disordered state, in which the density of occupied sites is the same on the even and odd sublattices, to a high-density ordered state, in which one of the sublattices is preferentially occupied, was proved by Dobrushin~\-\cite{Do68}, using a Peierls-type construction. This transition had been predicted earlier, using various approximations. In particular, Gaunt and Fisher~\-\cite{GF65} did an extensive study of this model using Pad\'e approximants, obtained from a low- and a high-fugacity expansion for the pressure $p(z)$, to determine the location of a singularity on the positive $z$ axis. They estimated that there is a transition at fugacity $z_t=3.8$ and density $\rho_t=0.37$, which is in good agreement with computer simulations.
\indent Another example is that of hard hexagons on a triangular lattice. Baxter~\-\cite{Ba80,Ba82} obtained, following earlier numerical and approximate work, an exact solution of this system, and found a transition at $z_t=\frac12(5\sqrt5+11)\approx11.09$ and $\rho_t=\frac1{10}(5-\sqrt5)\approx0.28$. There was further work, particularly by Joyce~\-\cite{Jo88}, which elaborated on this solution. Baxter's solution provides a full, albeit implicit, expression for the pressure $p(z)$ in the complex $z$ and $\rho$ planes, implying, in particular, that $p(z)$ is analytic for all $z\geqslant 0$ except at $z_t$. The transition at $z_t$ is of second order, as is expected to be the case for diamonds. For $z>z_t$, this system has 3 ordered phases, corresponding to the 3 different perfect coverings.
\indent Yet another HCLP model for which an order-disorder transition was shown to occur, with only a sketch of a proof~\-\cite{HP74}, is that of hard crosses on the square lattice (see figure~\-\ref{fig:shapes}{\it b}). This model has 10 distinct perfect coverings (see figure~\-\ref{fig:cross_packing}), and is conjectured~\-\cite{EB05} to have a first order phase transition at $z_t\approx39.5$, which jumps from a density $\rho_f\approx0.16$ to $\rho_s\approx0.19$. We shall use this model as an illustration for the type of system to which our analysis applies, and for which we can prove crystalline order at high fugacities, and the convergence of the high-fugacity expansion.
\bigskip
\begin{figure}
\hfil\includegraphics[width=2cm]{diamond.pdf}\ {\footnotesize\it a.}
\hfil\includegraphics[width=2.5cm]{cross.pdf}\ {\footnotesize\it b.}
\medskip
\caption{%
{\it a}. A diamond on the square lattice. This system is equivalent to the nearest-neighbor exclusion model.\par
{\it b}. A cross on the square lattice. This system is equivalent to the third-nearest-neighbor exclusion model.
}
\label{fig:shapes}
\end{figure}
\begin{figure}
\hfil\includegraphics[height=6cm]{cross_packing_r.pdf}
\hfil\includegraphics[height=6cm]{cross_packing_l.pdf}
\medskip
\caption{The perfect coverings of the cross model are obtained by translating these two configurations. For each figure, there are 5 inequivalent translations, thus totalling 10 perfect coverings.}
\label{fig:cross_packing}
\end{figure}
\indent In this paper, we study the high-fugacity expansion, in powers of $y\equiv z^{-1}$, of such systems. This expansion was first considered by Gaunt and Fisher~\-\cite{GF65} specifically for the diamond model, but has been used later for other HCLP systems~\-\cite{Jo88,EB05}. As far as we know, there has been no study of the convergence of this series, though Baxter's explicit solution~\-\cite{Ba80} for the hard hexagon model shows it is so for that solvable model. This is in contrast to the low-fugacity expansion of the pressure $p(z)$ in powers of $z$, which dates back to Ursell~\-\cite{Ur27} and Mayer~\-\cite{Ma37}. It was proven to have a positive radius of convergence, in all dimensions, by Groeneveld~\-\cite{Gr62} for positive pair-potentials and by Ruelle~\-\cite{Ru63} and Penrose~\-\cite{Pe63} for general pair-potentials.
\bigskip
\indent In this note, we sketch a proof that the radius of convergence of the high-fugacity expansion is positive for a large class of HCLP systems in $d\geqslant 2$ dimensions. The details of the proof will be published in a later paper. The proof is based on an extension of Pirogov-Sinai theory~\-\cite{PS75,KP84}, and implies the existence of phase transitions in these models. Unlike the low-fugacity expansion, the positivity of the radius of convergence does not hold for general HCLP systems: there are, indeed, many examples, in 1 and higher dimensions, in which the coefficients in this expansion diverge in the thermodynamic limit.
\vskip20pt
\subsection{Description of the model}\label{sec:model}
\indent It is convenient, for our analysis, to think of these HCLPs as having a finite shape $\omega$ in physical space $\mathbb R^d$, and impose the constraint that, when put on lattice sites $x$ and $y$, the shapes do not overlap (for example, for the nearest-neighbor exclusion on the square lattice, $\omega$ could be a diamond, see figure~\-\ref{fig:shapes}{\it a}). Equivalently, one can think of each particle as occupying a finite collection of lattice sites. Note that the choice of these shapes, or of the lattice points assigned to each particle, is not unique: two different shapes can translate to the same hard core interactions.
\bigskip
\indent Given a $d$-dimensional lattice $\Lambda_\infty$ and a finite subset $\Lambda\subset\Lambda_\infty$, we define the grand-canonical partition function of the system at activity $z>0$ on $\Lambda$, with some specified boundary conditions, as
\begin{equation}
\Xi_\Lambda(z)=\sum_{X\subset\Lambda}z^{|X|}\prod_{x\neq x'\in X}\varphi(x,x')
\label{Xi}
\end{equation}
in which $X$ is a particle configuration in $\Lambda$, $|X|$ is the cardinality of $X$, and, denoting $\omega_x\equiv \{x+y,\ y\in\omega\}$, $\varphi(x,x')\in\{0,1\}$ enforces the hard core repulsion: it is equal to 1 if and only if $\omega_{x}\cap\omega_{x'}=\emptyset$. Note that, due to the hard-core interaction, the number of particles is bounded:
\begin{equation}
|X|\leqslant N_{\mathrm{max}}.
\end{equation}
Our aim, in this note, is to prove that, in certain cases, the finite-volume {\it pressure} of the system, defined as
\begin{equation}
p_\Lambda(z):=\frac1{|\Lambda|}\log \Xi_\Lambda(z)
\label{p}
\end{equation}
where $|\Lambda|$ denotes the number of lattice sites in $\Lambda$, satisfies
\begin{equation}
p(z):=\lim_{\Lambda\to\Lambda_\infty}p_\Lambda=\rho_m\log z+f(y)
\end{equation}
in which $\rho_m$ is the maximum density in $\Lambda$, that is, $\rho_m=\lim_{\Lambda\to\Lambda_\infty}N_{\mathrm{max}}/|\Lambda|$, and $f$ is an analytic function of $y\equiv z^{-1}$ for small values of $y$. The expansion of $f$ in powers of $y$ is called the {\it high-fugacity expansion} of the system. Note that, as is well known, $p(z)\equiv\lim_{\Lambda\to\Lambda_\infty}p_\Lambda(z)$ is independent of the boundary conditions for all $z\geqslant 0$ (see, for instance, \cite{Ru99}).
\subsection{Low-fugacity expansion}\label{sec:low_fugacity}
\indent It is rather straightforward to express the pressure $p_\Lambda$ as a power series in $z$ (which converges for small values of $z$, thus earning the name ``low-fugacity expansion''). Indeed, defining the {\it canonical} partition function
\begin{equation}
Z_\Lambda(k):=\sum_{\displaystyle\mathop{\scriptstyle X\subset\Lambda}_{|X|=k}}\prod_{x\neq x'\in X}\varphi(x,x')
\label{Zk}
\end{equation}
as the number of particle configurations with $k$ particles, (\ref{Xi}) can be rewritten as
\begin{equation}
\Xi_\Lambda(z)=\sum_{k=0}^{N_{\mathrm{max}}} z^kZ_\Lambda(k).
\label{Xi_z}
\end{equation}
Substituting~\-(\ref{p}) into~\-(\ref{Xi_z}), we find that, formally,
\begin{equation}
p_\Lambda=\sum_{k=1}^\infty z^kb_k(\Lambda)
\label{p_z}
\end{equation}
with
\begin{equation}
b_k(\Lambda):=\frac1{|\Lambda|}\sum_{n=1}^k\frac{(-1)^{n+1}}n\sum_{\displaystyle\mathop{\scriptstyle k_1,\cdots,k_n\geqslant 1}_{k_1+\cdots+k_n=k}}Z_\Lambda(k_1)\cdots Z_\Lambda(k_n).
\label{blog}
\end{equation}
As is well known (see, for instance, \cite{Ru99}), there is a remarkable cancellation that eliminates the $\Lambda$ dependence from $b_k(\Lambda)$ when $\Lambda\to\Lambda_\infty$. This is readily seen by writing these coefficients in terms of {\it Mayer graphs}, which implies that $b_j(\Lambda)$ converges to $b_j$ as $\Lambda\to\Lambda_\infty$, independently of the boundary condition. Furthermore, the radius of convergence $R(\Lambda)$ of~\-(\ref{p_z}) converges to $R>0$, which is equal, for positive potentials (like those considered here), to the radius of convergence $R_\infty$ of $\sum_{j=1}^\infty b_jz^j$ \cite{Pe63}.
\subsection{High-fugacity expansion}
\indent The main idea of the high-fugacity expansion, due to Gaunt and Fisher~\-\cite{GF65}, is to perform a {\it low-fugacity} expansion for the {\it holes} of the system. In other words, instead of expressing the pressure $p_\Lambda$ in terms of the number of {\it particle} configurations with $k$ particles, we express it in terms of the number of {\it hole} configurations in the {\it absence} of $k$ particles from perfect covering. To make this idea more precise, let us consider the example of nearest-neighbor exclusion (which corresponds to hard diamonds) on the square lattice.
\bigskip
\indent Assume that $\Lambda$ is a $2n\times 2n$ torus, so that $\Lambda$ can be completely packed with diamonds. Note that, by the invariance of the system under translations, there are two perfect coverings, each of which contains $|\Lambda|/2$ particles. Let
\begin{equation}
Q_\Lambda(k):=Z_\Lambda(\textstyle\frac{|\Lambda|}2-k)
\end{equation}
denote the number of configurations that are {\it missing} $k$ particles, in terms of which
\begin{equation}
\Xi_\Lambda(z)=2z^{\frac12|\Lambda|}\sum_{k=0}^\infty \left(\frac12z^{-k}Q_\Lambda(k)\right)
\label{Xi_hole}
\end{equation}
(we factor the $2$ out, because $Q_\Lambda(0)=2$ and we wish to expand the logarithm in~\-(\ref{p}) around 1). We thus have, formally
\begin{equation}
p_\Lambda=\frac1{|\Lambda|}\log2+\frac12\log z+\sum_{k=1}^\infty y^{k}c_k(\Lambda)
\label{p_y}
\end{equation}
where $y\equiv z^{-1}$ and
\begin{equation}
c_k(\Lambda):=\frac1{|\Lambda|}\sum_{n=1}^k\frac{(-1)^{n+1}}{n2^n}\sum_{\displaystyle\mathop{\scriptstyle k_1,\cdots,k_n\geqslant 1}_{k_1+\cdots+k_n=k}}Q_\Lambda(k_1)\cdots Q_\Lambda(k_n).
\label{clog}
\end{equation}
The first nine terms of this expansion were computed in~\-\cite[table~\-XIII]{GF65} for periodic boundary conditions. They found that, as in the low-fugacity expansion, these nine coefficients $c_k(\Lambda)$ converge to $c_k$ as $\Lambda\to\Lambda_\infty$. However, there is no systematic way of exhibiting the cancellations needed for this convergence to hold for general HCLP systems. In fact there are many simple examples where $c_2(\Lambda)\to\infty$ as $\Lambda\to\Lambda_\infty$. For instance, consider the nearest-neighbor exclusion in 1 dimension (which maps, exactly, to the one-dimensional monomer-dimer model). In the language of this paper, the model is characterized by $\Lambda_\infty=\mathbb Z$, $\omega=(-1,1)\subset\mathbb R$. It is easy to compute, using, for instance, the transfer matrix technique, that the infinite-volume pressure of this model is
\begin{equation}
p=\log\left(\frac{1+\sqrt{1+4z}}2\right)
=\frac12\log z+\log\left(\sqrt{1+\frac1{4z}}+\frac1{2\sqrt z}\right).
\end{equation}
Therefore, $p-\frac12\log z$ (note that $\rho_m=\frac12$) is not an analytic function of $y\equiv z^{-1}$ at $y=0$ (though it is an analytic function of $\sqrt y$). For the $n$-nearest-neighbor exclusion in one dimension, $p-\rho_m\log z$ is analytic in $y^{\frac1n}$. Similar effects occur in higher dimensions as well, for instance in systems exhibiting columnar order at high fugacities~\-\cite{GD07}.
\bigskip
\indent Here, we prove that, for a class of HCLP systems which we call ``non-sliding models'' (which include the three models discussed above, that is, the hard diamond, cross and hexagon models), the function
\begin{equation}
f_\Lambda(y):=p_\Lambda-\rho_m\log z+o(1)
\label{f}
\end{equation}
is analytic at $y=0$ uniformly in $|\Lambda|$, in which $o(1)\to0$ as $\Lambda\to\Lambda_\infty$. That is,
\begin{equation}
f_\Lambda(y)=\sum_{k=1}^\infty y^kc_k(\Lambda)
,\quad
|c_k(\Lambda)|<R^k
,\quad
\lim_{\Lambda\to\Lambda_\infty}c_k(\Lambda)=c_k
\label{goal}
\end{equation}
for some $R>0$, independent of $|\Lambda|$. We thus prove the validity of the Gaunt-Fisher expansion for non-sliding models. Our method of proof further shows that, for such systems, the high-fugacity phases exhibit crystalline order.
\bigskip
\indent A precise definition of the notion of non-sliding will be given below. An example of a {\it sliding} model is the hard $2\times2$ square model on the square lattice: given a perfect covering, whole columns or rows of particles can slide without forming vacancies (see figure~\-\ref{fig:sliding}). On the other hand, hard diamonds do {\it not slide}: the close-packed configurations are rigid. These two models are in the class of $n$-nearest-neighbor exclusion models on $\mathbb Z^2$. In~\-\cite[table~\-II]{NR14} one may find a list of $n$-nearest-neighbor models, up to $n=14$, which specifies which of these models slide (called, in that table, ``Columnar'') and which do not (labeled as ``Sublattice'').
\begin{figure}
\hfil\includegraphics[width=4cm]{sliding.pdf}
\caption{Hard $2\times2$ squares on the square lattice slide: whole columns or rows of particles can be moved without forming vacancies.}
\label{fig:sliding}
\end{figure}
\section{Sketch of the proof}
\indent In this note, we will only give a detailed sketch of the proof. The full details will be published in a later paper.
\bigskip
\indent Ultimately, the reasoning behind~\-(\ref{goal}) is similar to that underpinning the convergence of the Mayer expansion~\-(\ref{p_z}), so let us first discuss the Mayer expansion, and, in particular, focus on the uniform boundedness of $b_k(\Lambda)$ defined in~\-(\ref{blog}). For the sake of simplicity, we will consider periodic boundary conditions, and take $|\Lambda|$ sufficiently larger than $k$. First of all, note that $Z_\Lambda(k)$ defined in~\-(\ref{Zk}) is a polynomial in $|\Lambda|$ of order $k$ with no constant term, thus,
\begin{equation}
\frac1{|\Lambda|}Z_\Lambda(k_1)\cdots Z_\Lambda(k_n)
\end{equation}
is a polynomial in $|\Lambda|$ of order $k-1$. Therefore, in order for $b_k(\Lambda)$ to remain bounded in the $\Lambda\to\Lambda_\infty$ limit for $k>1$, there must be a significant cancellation. For the purpose of illustration, consider
\begin{equation}
b_2(\Lambda)=\frac1{|\Lambda|}\left(Z_\Lambda(2)-\frac12Z_\Lambda(1)^2\right).
\end{equation}
In the 1-particle case, the particle can occupy any site in $\Lambda$, so $Z_\Lambda(1)=|\Lambda|$. In the 2-particle case, the particles must not overlap. We can therefore write $Z_\Lambda(2)$ as the number of unconstrained configurations (excluding the cases in which particles coincide) minus the number of configurations in which the particles overlap. The former is equal to $\frac12|\Lambda|(|\Lambda|-1)$, and the latter is proportional to $|\Lambda|$. The $|\Lambda|^2$ term thus cancels out. This reasoning can be extended to all $b_k(\Lambda)$.
\bigskip
\indent Following~\-\cite{GF65}, we construct the high-fugacity expansion in a similar way, but instead of counting particle configurations, we count hole configurations. To that end, we factor out $z^{\rho_m|\Lambda|}$ from the partition function, as in~\-(\ref{Xi_hole}), thus giving each hole a weight $z^{-\rho_m}$. The most significant difference with the Mayer expansion is that the interaction between holes is not simply a hard-core repulsion, since the sites that are not empty must be covered by particles which, in turn, must satisfy the hard core constraint. In particular, the connected components of the empty space may come in various shapes and sizes, but they are constrained by the fact that the overall empty volume is an integer multiple of the volume of each particle (see figure~\-\ref{fig:hole_example}). This implies that different connected components of the empty volume could, in principle, interact strongly, even if they are arbitrarily far from each other (see figure~\-\ref{fig:hole_example}{\it b}). If that were the case, then the $|\Lambda|^2$ terms in $c_2(\Lambda)$ would not cancel out, and the high-fugacity expansion would be ill-defined in the thermodynamic limit. This phenomenon will be called {\it sliding}.
\bigskip
\begin{figure}
\hfil
\includegraphics[height=6cm]{hole_example_cross.pdf}\hskip-20pt{\footnotesize\it a.}
\hfil
\includegraphics[height=6cm]{hole_example_square.pdf}\ {\footnotesize\it b.}
\medskip
\caption{%
{\it a}. A hole configuration for a system of hard crosses. There is no sliding in this model.
\par
{\it b}. A hole configuration for a system of hard $2\times2$ squares on the square lattice (next-nearest-neighbor exclusion). There is sliding in this model. Note that the central column corresponds to a configuration in the 1-dimensional nearest-neighbor exclusion model, which, as discussed earlier does not have an expansion in $z^{-1}$.
\par
\smallskip
Particles of different colors correspond to different phases: the colored sub-configuration can be extended to different perfect coverings (note that the color assignment is not unique).
}
\label{fig:hole_example}
\end{figure}
\indent In this paper, we will only consider models in which there is {\it no sliding}, a notion which we will now define precisely. First of all, in order to qualify as a non-sliding model, the system must only admit a {\it finite} number of distinct perfect coverings. In addition, whenever different locally close-packed phases coexist, the interface between the phases must contain a number of holes proportional to its length (see figure~\-\ref{fig:interface}). This condition is analogous to the {\it Peierls condition} in the standard Pirogov-Sinai theory~\-\cite{PS75,KP84}. This rules out situations similar to figure~\-\ref{fig:hole_example}{\it b}, in which the interface between the central column and the other two may be arbitrarily long, while having only two holes. More precisely, a model is said to exhibit {\it no sliding} if, for every {\it connected} particle configuration $X\subset\Lambda$ that is {\it not} a subset of a perfect covering of $\Lambda$, and for every configuration $Y\supset X$, there exists at least one empty site {\it neighboring} a particle in $X$ (see figure~\-\ref{fig:interface}). Note that, having fixed $X$, there are many possible connected configurations $Y$ that contain $X$, and we require that {\it every one} of them contain some empty space. The notions of {\it connectedness} and {\it neighbors} are inherited from the lattice structure.
\bigskip
\begin{figure}
\hfil\includegraphics[width=9cm]{interface.pdf}
\caption{An interface between two different phases. The particles are colored according to the phase to which they belong (the coloring is not, in general, unique). There is empty space, in black in the figure, along the entire interface. This follows from the absence of sliding: for every connected collection of particles along the interface, there is empty space nearby.}
\label{fig:interface}
\end{figure}
\indent In the absence of sliding, it is easy to see which holes are correlated. Indeed, consider the connected components of the union of the holes and their neighboring particles (see figure~\-\ref{fig:gaunt_fisher}). Each such component is called a {\it Gaunt-Fisher (GF) configuration}. The space that is not occupied by GF configurations is completely covered by particles, so, since there is no sliding, each of its connected components can be extended to a perfect covering of $\Lambda$. To each such component, we associate an index that specifies to which of the possible perfect coverings the configuration in the component can be extended. The interaction between GF configurations is then rather simple: distinct GF configurations must be disjoint, and each connected component of the complement of each GF configuration must be coverable by particles in a configuration that can be extended to the perfect covering specified by the index of the component. The latter interaction is thus mediated by the indices of the connected components of the complements of the GF configurations. We then completely remove this interaction, as described below.
\bigskip
\begin{figure}
\hfil\includegraphics[height=3.5cm]{gaunt_fisher1.pdf}{\footnotesize\it a}.
\hfil\includegraphics[height=4.5cm]{gaunt_fisher2.pdf}{\footnotesize\it b}.\par\penalty10000
\bigskip
\hfil\includegraphics[height=7cm]{gaunt_fisher3.pdf}{\footnotesize\it c}.
\caption{Example Gaunt-Fisher configurations. The empty space is colored black. Figure~\-{\it b} corresponds to the configuration in figure~\-\ref{fig:hole_example}{\it a}, and figure~\-{\it c} corresponds to that in figure~\-\ref{fig:interface}. The complement of these Gaunt-Fisher configurations can be entirely covered by crosses.}
\label{fig:gaunt_fisher}
\end{figure}
\indent Let us consider only the most external GF configurations, that is those that do not lie inside any other GF configuration. To eliminate their interaction, we fix the boundary condition on $\Lambda$ once and for all, so as to fix the index of the perfect covering on the outside. At this point, the constraint on each GF configuration is that it be compatible with the boundary condition, which is independent of the other GF configurations, thus eliminating the interaction between them. Now, the GF configurations may have holes (see figure~\-\ref{fig:gaunt_fisher}{\it c}), and other configurations may lie inside these holes. These would interact with the GF configurations that contain them. In order to eliminate this interaction, we make use of a technique from Pirogov-Sinai theory~\-\cite{PS75,KP84}. Namely, the partition function in each hole is a partition function on a smaller volume, with the boundary condition imposed by the index of the covering of the hole. Now, in general, the partition function in a hole may depend on the boundary condition (see figure~\-\ref{fig:assymmetry}), but this dependence is weak. Indeed, one can show that the ratio of the partition function with one boundary condition divided by that with another is at most exponential in the size of the {\it boundary} (whereas each partition function is exponential in the size of the {\it bulk}). Thus, at the price of an exponential factor in the size of the GF configuration, called the {\it flipping term}, we can pretend that the partition function in each hole has the same boundary condition as the entire space. At this point, the interaction between GF configuration simply states that they must not overlap. And, since there is no sliding, each GF configuration contains a number of holes which is proportional to its size, thus contributing a factor $z^{-c|\mathrm{size}|}$ to the partition function (from which, we recall, we have factored out $z^{-\rho_m|\Lambda|}$ so that each hole contributes $z^{-\rho_m}$), which outweighs the flipping term.
\bigskip
\begin{figure}
\hfil
\includegraphics[width=6cm]{assymmetry1.pdf}
\hfil
\includegraphics[width=6cm]{assymmetry2.pdf}
\caption{
Two different boundary conditions for the hard cross model. The set $\Lambda$ is outlined by the thick black line. The crosses that are drawn are those mandated by the boundary condition (the boundary condition stipulates that every cross that is in contact with the boundary must be of a specified phase), and the remaining available space in $\Lambda$ is colored gray. The partition function in the case of figure~\-{\it a} is
$$z^{16}(1+4y+10y^2+8y^3+y^4)$$
whereas that in figure~\-{\it b} is
$$z^{16}(1+6y+18y^2+48y^3+43y^4+13y^5+y^6).$$
}
\label{fig:assymmetry}
\end{figure}
\indent We have thus constructed a model of GF configurations, which interact via a purely hard-core potential, and which have a very small effective fugacity. We then use a low-fugacity expansion to express the function $f_\Lambda$ (\ref{f}) as a convergent series, following~\-\cite{KP86}. In addition, the effective fugacity of a GF configuration of volume $|V|$ is equal to the fugacity of the particles inside the configuration divided by $z^{\rho_m|V|}$. Furthermore, since the GF configuration contains empty space, the number of particles in the GF configuration is smaller than $\rho_m|V|$. Finally, since the volume obtained by removing the GF configuration from the lattice can be covered by particles, $\rho_m|V|$ is an integer. Therefore, the fugacity of a GF configuration is an analytic function of $y\equiv z^{-1}$, which implies that $f_\Lambda$ is analytic in $y$, uniformly in $|\Lambda|$.
\section{Concluding remarks}
\point In this paper, we have focused on the pressure $p$ at large $z$. Other thermodynamic quantities can be computed from $p$, or by a computation similar to that of $p$. We recover the average density $\bar\rho$ from the pressure by
\begin{equation}
\bar\rho=z\frac{\partial p}{\partial z}=-y\frac{\partial p}{\partial y}=\rho_m+\sum_{j=1}^\infty kc_ky^k.
\end{equation}
Since the pressure is independent of the boundary condition, it is the same in all phases, which implies that the average density is as well. In order to distinguish between phases, one could consider the local density $\rho(x)$ at $x$, which does depend on the phase. Thus, for the diamonds on the square lattice, at large fugacities, the local density at sites on the even sublattice would be different from that on the odd sublattice: in the even phase, the former would be close to $1$, whereas the latter would be close to $0$. In general, when there are $n$ close-packed phases, there are $n$ sublattices, and, in each phase, the local density at one of the sublattices is close to $1$, while the others are close to $0$. The local density $\rho(x)$ can be expanded in powers of $y$, using similar methods to those described in this paper. Similarly, one can expand higher-order correlation functions, and find that, when the series converges, the truncated correlation functions in a specified phase decay exponentially.
\bigskip
\point Here, we have only considered HCLP systems that have a single shape. A natural extension would be to consider systems in which several types of particles of different shapes can coexist, provided there is a finite number of perfect coverings, and no sliding. In that case, different particles may have different fugacities, for instance, one might set $z_\alpha=\lambda_\alpha z$ and expand in $z^{-1}$. The qualitative behavior of the system might depend on the $\lambda_\alpha$. Further extensions could be to consider more general pair potentials, by, for instance, allowing for smooth interactions, or for more general hard core repulsions, such as the Widom-Rowlinson~\-\cite{WR70} interaction.
\bigskip
\point The methods described here allow, in some cases, to approach the continuum, but not to reach it. For instance, in the cross model, one can make the lattice finer (or, equivalently, the crosses can be made thicker). However, the radius of convergence vanishes in the continuum limit. New ideas are needed to treat such a case.
\vfill
\hfil{\bf Acknowledgements}\par
\medskip
\indent We are grateful to Giovanni Gallavotti and Roman Koteck\'y for enlightening discussions. The work of J.L.L. was supported by AFOSR grant FA9550-16-1-0037 and NSF grant DMR1104501. The work of I.J. was supported by The Giorgio and Elena Petronio Fellowship Fund and The Giorgio and Elena Petronio Fellowship Fund II.
\eject
\begin{thebibliography}{WWW99}
\small
\bibitem[AW57]{AW57}B.J. Alder, T.E. Wainwright - {\it Phase Transition for a Hard Sphere System}, The Journal of Chemical Physics, volume~\-27, issue~\-5, page~\-1208-1209, 1957,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1063/1.1743957}{10.1063/1.1743957}}.\par\medskip
\bibitem[Ba80]{Ba80}R.J. Baxter - {\it Hard hexagons: exact solution}, Journal of Physics A: Mathematical and General, volume~\-13, issue~\-3, page~\-L61-L70, 1980,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1088/0305-4470/13/3/007}{10.1088/0305-4470/13/3/007}}.\par\medskip
\bibitem[Ba82]{Ba82}R.J. Baxter - {\it Exactly solved models in Statistical Mechanics}, Academic Press, 1982.\par\medskip
\bibitem[DG13]{DG13}M. Disertori, A. Giuliani - {\it The nematic phase of a system of long hard rods}, Communications in Mathematical Physics, volume~\-323, page~\-143-175, 2013,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1007/s00220-013-1767-1}{10.1007/s00220-013-1767-1}}, arxiv:{\tt\color{blue}\href{http://arxiv.org/abs/1112.5564}{1112.5564}}.\par\medskip
\bibitem[Do68]{Do68}R.L. Dobrushin - {\it The problem of uniqueness of a Gibbsian random field and the problem of phase transitions}, Functional Analysis and its Applications, volume~\-2, issue~\-4, page~\-302-312 (originally appeared, in russian, in Задача единственности Гиббсовского случайного поля и проблема фазовых переходов, функциональный анализ и его приложения, т.~\-2, вып.~\-4, 44-57), 1968,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1007/BF01075682}{10.1007/BF01075682}}.\par\medskip
\bibitem[Do58]{Do58}C. Domb - {\it Some theoretical aspects of melting}, Il Nuovo Cimento, volume~\-9, supplement~\-1, page~\-9-26, 1958,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1007/BF02824224}{10.1007/BF02824224}}.\par\medskip
\bibitem[EB05]{EB05}E. Eisenberg, A. Baram - {\it A first-order phase transition and a super-cooled fluid in a two-dimensional lattice gas model}, Europhysics Letters, volume~\-71, issue~\-6, page~\-900-905, 2005,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1209/epl/i2005-10166-3}{10.1209/epl/i2005-10166-3}}, arxiv:{\tt\color{blue}\href{http://arxiv.org/abs/cond-mat/0502088}{cond-mat/0502088}}.\par\medskip
\bibitem[GF65]{GF65}D.S. Gaunt, M.E. Fisher - {\it HardSphere Lattice Gases - I: PlaneSquare Lattice}, The Journal of Chemical Physics, volume~\-43, issue~\-8, page~\-2840-2863, 1965,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1063/1.1697217}{10.1063/1.1697217}}.\par\medskip
\bibitem[GD07]{GD07}A. Ghosh, D. Dhar - {\it On the orientational ordering of long rods on a lattice}, Europhysics Letters, volume~\-78, page~\-20003, 2007,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1209/0295-5075/78/20003}{10.1209/0295-5075/78/20003}}, arxiv:{\tt\color{blue}\href{http://arxiv.org/abs/cond-mat/0611361}{cond-mat/0611361}}.\par\medskip
\bibitem[Gr62]{Gr62}J. Groeneveld - {\it Two theorems on classical many-particle systems}, Physics Letters, volume~\-3, issue~\-1, page~\-50-51, 1962,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1016/0031-9163(62)90198-1}{10.1016/0031-9163(62)90198-1}}.\par\medskip
\bibitem[HP74]{HP74}O.J. Heilmann, E. Pr\ae{}stgaard - {\it Phase transition in a lattice gas with third nearest neighbour exclusion on a square lattice}, Journal of Physics A, volume~\-7, issue~\-15, page~\-1913-1917, 1974,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1088/0305-4470/7/15/017}{10.1088/0305-4470/7/15/017}}.\par\medskip
\bibitem[Jo88]{Jo88}G.S. Joyce - {\it On the Hard-Hexagon Model and the Theory of Modular Functions}, Philosophical Transactions of the Royal Society of London A: Mathematical, Physical and Engineering Sciences, volume~\-325, issue~\-1588, page~\-643-702, 1988,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1098/rsta.1988.0077}{10.1098/rsta.1988.0077}}.\par\medskip
\bibitem[Ka63]{Ka63}P.W. Kasteleyn - {\it Dimer statistics and phase transitions}, Journal of Mathematical Physics, volume~\-4, issue~\-2, page~\-287-293, 1963,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1063/1.1703953}{10.1063/1.1703953}}.\par\medskip
\bibitem[KP84]{KP84}R. Koteck\'y, D. Preiss - {\it An inductive approach to the Pirogov-Sinai theory}, Proceedings of the 11th Winter School on Abstract Analysis, Rendiconti del Circolo Matematico di Palermo, Serie~\-II, supplemento~\-3, page~\-161-164, 1984.\par\medskip
\bibitem[KP86]{KP86}R. Koteck\'y, D. Preiss - {\it Cluster expansion for abstract polymer models}, Communications in Mathematical Physics, volume~\-103, issue~\-3, page~\-491-498, 1986,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1007/BF01211762}{10.1007/BF01211762}}.\par\medskip
\bibitem[Ma37]{Ma37}J.E. Mayer - {\it The Statistical Mechanics of Condensing Systems. I}, The Journal of Chemical Physics, volume~\-5, issue~\-67, page~\-67-73, 1937,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1063/1.1749933}{10.1063/1.1749933}}.\par\medskip
\bibitem[Mc10]{Mc10}B.M. McCoy - {\it Advanced Statistical Mechanics}, International Series of Monographs on Physics 146, Oxford University Press, 2010.\par\medskip
\bibitem[NR14]{NR14}T. Nath, R. Rajesh - {\it Multiple phase transitions in extended hard-core lattice gas models in two dimensions}, Physical Review E, volume~\-90, page~\-012120, 2014,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1103/PhysRevE.90.012120}{10.1103/PhysRevE.90.012120}}, arxiv:{\tt\color{blue}\href{http://arxiv.org/abs/1404.6902}{1404.6902}}.\par\medskip
\bibitem[Pe63]{Pe63}O. Penrose - {\it Convergence of Fugacity Expansions for Fluids and Lattice Gases}, Journal of Mathematical Physics, volume~\-4, issue~\-10, page~\-1312-1320, 1963,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1063/1.1703906}{10.1063/1.1703906}}.\par\medskip
\bibitem[PS75]{PS75}S.A. Pirogov, Y.G. Sinai - {\it Phase diagrams of classical lattice systems}, Theoretical and Mathematical Physics, volume~\-25, page~\-1185-1192, 1975,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1007/BF01040127}{10.1007/BF01040127}}.\par\medskip
\bibitem[RD12]{RD12}K. Ramola, D. Dhar - {\it High-activity perturbation expansion for the hard square lattice gas}, Physical Review E, volume~\-86, page~\-031135, 2012,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1103/PhysRevE.86.031135}{10.1103/PhysRevE.86.031135}}, arxiv:{\tt\color{blue}\href{http://arxiv.org/abs/1204.4484}{1204.4484}}.\par\medskip
\bibitem[Ru63]{Ru63}D. Ruelle - {\it Correlation functions of classical gases}, Annals of Physics, volume~\-25, issue~\-1, page~\-109-120, 1963,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1016/0003-4916(63)90336-1}{10.1016/0003-4916(63)90336-1}}.\par\medskip
\bibitem[Ru99]{Ru99}D. Ruelle - {\it Statistical mechanics: rigorous results}, Imperial College Press, World Scientific, (first edition: Benjamin, 1969), 1999.\par\medskip
\bibitem[Ur27]{Ur27}H.D. Ursell - {\it The evaluation of Gibbs' phase-integral for imperfect gases}, Mathematical Proceedings of the Cambridge Philosophical Society, volume~\-23, issue~\-6, page~\-685-697, 1927,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1017/S0305004100011191}{10.1017/S0305004100011191}}.\par\medskip
\bibitem[WR70]{WR70}B. Widom, J.S. Rowlinson - {\it New Model for the Study of LiquidVapor Phase Transitions}, The Journal of Chemical Physics, volume~\-52, page~\-1670-1684, 1970,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1063/1.1673203}{10.1063/1.1673203}}.\par\medskip
\bibitem[WJ57]{WJ57}W.W. Wood, J.D. Jacobson - {\it Preliminary results from a recalculation of the Monte Carlo equation of state of hard spheres}, The Journal of Chemical Physics, volume~\-27, issue~\-5, page~\-1207-1208, 1957,\par\penalty10000
doi:{\tt\color{blue}\href{http://dx.doi.org/10.1063/1.1743956}{10.1063/1.1743956}}.\par\medskip
\end{thebibliography}
\end{document}

40
Makefile Normal file
View File

@ -0,0 +1,40 @@
PROJECTNAME=Jauslin_Lebowitz_2017
LIBS=$(patsubst libs/%, %, $(wildcard libs/*))
FIGS=$(patsubst figs/%, %, $(wildcard figs/*))
all: $(PROJECTNAME)
$(PROJECTNAME): $(LIBS) $(FIGS)
pdflatex -file-line-error $(PROJECTNAME).tex
pdflatex $(PROJECTNAME).tex
pdflatex -synctex=1 $(PROJECTNAME).tex
$(LIBS):
ln -fs libs/$@ ./
$(FIGS):
make -C figs/$@
ln -fs figs/$@/*.pdf ./
clean-aux:
rm -f $(PROJECTNAME).aux
rm -f $(PROJECTNAME).log
rm -f $(PROJECTNAME).out
rm -f $(PROJECTNAME).toc
clean-libs:
rm -f $(LIBS)
clean-tex:
rm -f $(PROJECTNAME).pdf
rm -f $(PROJECTNAME).synctex.gz
clean-figs:
for fig in $(FIGS); do make -C figs/"$$fig" clean; done
clean-figs-aux:
for fig in $(FIGS); do make -C figs/"$$fig" clean-aux; done
clean: clean-aux clean-tex clean-libs clean-figs

44
README Normal file
View File

@ -0,0 +1,44 @@
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
graphics
hyperref
latex
lh
marginnote
pgf
standalone
GNU make
* Files:
Jauslin_Lebowitz_2017.tex:
main LaTeX file
libs:
custom LaTeX class and style files
figs:
source code for the figures

1
figs/assymmetry/Makefile Symbolic link
View File

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

View File

@ -0,0 +1,25 @@
\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;
\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,23 @@
\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;
\cross{green}{(10, 9)}
\cross{green}{( 8,10)}
\cross{green}{( 6,11)}
\cross{green}{( 5, 9)}
\cross{green}{( 2, 8)}
\cross{green}{( 3, 5)}
\cross{green}{( 4, 2)}
\cross{green}{( 7, 3)}
\cross{green}{(10, 4)}
\cross{green}{(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

1
figs/cross_packing/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 \i in {0,...,3}{
\foreach \j in {0,...,3}{
\cross{green}{(-2*\j,\j)++(\i,2*\i)}
}
}
\end{tikzpicture}
\end{document}

View File

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

View File

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

1
figs/gaunt_fisher/Makefile Symbolic link
View File

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

View File

@ -0,0 +1,16 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\cross{cyan}{(4,4)}
\cross{cyan}{(1,5)}
\cross{cyan}{(2,8)}
\cross{cyan}{(5,7)}
\cross{black}{(3,6)}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1,30 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\cross{cyan}{(4,4)}
\cross{cyan}{(3,6)}
\cross{cyan}{(7,3)}
\cross{cyan}{(9,4)}
\cross{cyan}{(10,7)}
\cross{cyan}{(4,9)}
\cross{cyan}{(6,6)}
\cross{cyan}{(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)}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1,53 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\foreach\i in {2,...,4}{
\cross{cyan}{(2*\i,\i)}
\cross{cyan}{(5,15)++(\i,-2*\i)}
}
\foreach\i in {1,...,3}{
\cross{cyan}{(-5,10)++(2*\i,\i)}
}
\cross{cyan}{(3,5)}
\cross{cyan}{(5,9)}
\cross{cyan}{(-1,7)}
\cross{cyan}{(0,9)}
\cross{cyan}{(6,6)}
\cross{cyan}{(1,6)}
\cross{cyan}{(3,10)}
\cross{cyan}{(4,12)}
\cross{cyan}{(1,3)}
\cross{cyan}{(-2,4)}
\cross{cyan}{(-4,8)}
\square{black}{(3,3)}
\square{black}{(2,4)}
\square{black}{(4,4)}
\square{black}{(5,4)}
\square{black}{(5,5)}
\square{black}{(7,5)}
\square{black}{(8,6)}
\square{black}{(7,7)}
\square{black}{(7,8)}
\square{black}{(6,8)}
\square{black}{(6,10)}
\square{black}{(5,11)}
\square{black}{(2,12)}
\square{black}{(2,11)}
\square{black}{(1,11)}
\square{black}{(0,11)}
\square{black}{(1,10)}
\square{black}{(-1,10)}
\square{black}{(-2,10)}
\square{black}{(-2,9)}
\square{black}{(-3,9)}
\square{black}{(-2,8)}
\square{black}{(-1,5)}
\square{black}{(0,5)}
\square{black}{(0,4)}
\end{tikzpicture}
\end{document}

View File

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

1
figs/hole_example/Makefile Symbolic link
View File

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

View File

@ -0,0 +1,36 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\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)}
\cross{green}{(6,6)}
\cross{green}{(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)}
\end{tikzpicture}
\end{document}

View File

@ -0,0 +1,24 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\foreach\i in {0,...,8}{
\ttsquare{teal}{(0,2*\i)}
\ttsquare{teal}{(4,2*\i)}
}
\ttsquare{teal}{(2,0)}
\ttsquare{teal}{(2,16)}
\foreach\i in {1,...,6}{
\ttsquare{green}{(2,2*\i+1)}
}
\square{black}{(1.5,1.5)}
\square{black}{(2.5,1.5)}
\square{black}{(1.5,14.5)}
\square{black}{(2.5,14.5)}
\end{tikzpicture}
\end{document}

View File

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

1
figs/interface/Makefile Symbolic link
View File

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

View File

@ -0,0 +1,51 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\foreach\i in {0,...,5}{
\cross{teal}{(2*\i,\i)}
\cross{teal}{(-\i,2*\i)}
\cross{teal}{(-5,10)++(2*\i,\i)}
\cross{teal}{(5,15)++(\i,-2*\i)}
}
\foreach\i in {0,...,2}{
\foreach\j in {0,...,1}{
\cross{green}{(3,5)++(\i,2*\i)++(-2*\j,\j)}
}
}
\cross{green}{(-1,7)}
\cross{green}{(0,9)}
\cross{green}{(6,6)}
\cross{teal}{(4,12)}
\cross{teal}{(1,3)}
\square{black}{(3,3)}
\square{black}{(2,4)}
\square{black}{(4,4)}
\square{black}{(5,4)}
\square{black}{(5,5)}
\square{black}{(7,5)}
\square{black}{(8,6)}
\square{black}{(7,7)}
\square{black}{(7,8)}
\square{black}{(6,8)}
\square{black}{(6,10)}
\square{black}{(5,11)}
\square{black}{(2,12)}
\square{black}{(2,11)}
\square{black}{(1,11)}
\square{black}{(0,11)}
\square{black}{(1,10)}
\square{black}{(-1,10)}
\square{black}{(-2,10)}
\square{black}{(-2,9)}
\square{black}{(-3,9)}
\square{black}{(-2,8)}
\square{black}{(-1,5)}
\square{black}{(0,5)}
\square{black}{(0,4)}
\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

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

@ -0,0 +1,35 @@
% square lattice (width #1, height #2, origin #3)
\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);
\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);
}
% 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;
}
% 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;
}
% diamond (color #1, position #2)
\def\diamond#1#2{
\fill[color=#1]#2++(0,-1)--++(1,1)--++(-1,1)--++(-1,-1)--cycle;
\draw[color=black]#2++(0,-1)--++(1,1)--++(-1,1)--++(-1,-1)--cycle;
}

1
figs/shapes/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}
\grid55{(-2.5,-2.5)}
\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}

1
figs/shapes/libs/shapes.sty Symbolic link
View File

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

1
figs/sliding/Makefile Symbolic link
View File

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

View File

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

View File

@ -0,0 +1,16 @@
\documentclass{standalone}
\usepackage{tikz}
\usepackage{shapes}
\begin{document}
\begin{tikzpicture}
\clip(-1.01,-1.01)--(7.01,-1.01)--(7.01,5.01)--(-1.01,5.01)--cycle;
\foreach \i in {0,...,3}{
\ttsquare{cyan}{(2*\i,0)}
\ttsquare{cyan}{(2*\i+1,2)}
\ttsquare{cyan}{(2*\i,4)}
}
\ttsquare{cyan}{(-1,2)}
\end{tikzpicture}
\end{document}

633
libs/ian.cls Normal file
View File

@ -0,0 +1,633 @@
%%
%% Ian's class file
%%
%% TeX format
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
%% class name
\ProvidesClass{ian}[2017/05/04]
%% 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}
% item symbol
\def\itemizept{\textbullet}
\newlength\itemizeseparator
% space between the item symbol and the text
\setlength\itemizeseparator{5pt}
% penalty preceding an itemize
\def\itemizepenalty{0}
\newlength\current@itemizeskip
\setlength\current@itemizeskip{0pt}
\def\itemize{
\par\penalty\itemizepenalty\medskip\penalty\itemizepenalty
\addtolength\current@itemizeskip{\itemizeskip}
\leftskip\current@itemizeskip
}
\def\enditemize{
\addtolength\current@itemizeskip{-\itemizeskip}
\par\leftskip\current@itemizeskip
\medskip
}
\newlength\itempt@total
\def\item{
\settowidth\itempt@total{\itemizept}
\addtolength\itempt@total{\itemizeseparator}
\par
\medskip
\hskip-\itempt@total\itemizept\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

98
libs/point.sty Normal file
View File

@ -0,0 +1,98 @@
%%
%% Points package:
%% \point commands
%%
%% TeX format
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
%% package name
\ProvidesPackage{point}[2016/11/10]
%% options
\newif\ifresetatsection
\DeclareOption{reset_at_section}{\resetatsectiontrue}
\DeclareOption{no_reset_at_section}{\resetatsectionfalse}
\newif\ifresetattheo
\DeclareOption{reset_at_theo}{\resetattheotrue}
\DeclareOption{no_reset_at_theo}{\resetattheofalse}
\def\point@defaultoptions{
\ExecuteOptions{reset_at_section, 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 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