From 1a0ba99f6bc0a6c08f78bc3e785b0704a81c28d1 Mon Sep 17 00:00:00 2001 From: Ian Jauslin Date: Thu, 23 Jul 2015 14:55:49 +0000 Subject: Initial commit --- BBlog.sty | 38 +++++ Gallavotti_Jauslin_2015.tex | 173 +++++++++++++++++++ README | 49 ++++++ bibliography.BBlog.tex | 20 +++ header.sty | 11 ++ iansecs.sty | 402 ++++++++++++++++++++++++++++++++++++++++++++ kiss.cls | 42 +++++ toolbox.sty | 41 +++++ 8 files changed, 776 insertions(+) create mode 100644 BBlog.sty create mode 100644 Gallavotti_Jauslin_2015.tex create mode 100644 README create mode 100644 bibliography.BBlog.tex create mode 100644 header.sty create mode 100644 iansecs.sty create mode 100644 kiss.cls create mode 100644 toolbox.sty diff --git a/BBlog.sty b/BBlog.sty new file mode 100644 index 0000000..56f542b --- /dev/null +++ b/BBlog.sty @@ -0,0 +1,38 @@ +%% +%% BBlog bibliography related commands +%% + +%% length used to display the bibliography +\newlength{\rw} +\setlength{\rw}{1.5cm} + +%% read header +\IfFileExists{header.BBlog.tex}{\input{header.BBlog}}{} + +%% cite a reference +\def\cite#1{% +\ref{cite#1}% +%% add entry to citelist after checking it has not already been added +\ifcsname if#1cited\endcsname% +\expandafter\if\csname if#1cited\endcsname% +\else% +\csname if#1citedtrue\endcsname% +\immediate\write\@auxout{\noexpand\BBlogcite{#1}}% +\fi% +\else% +\expandafter\newif\csname if#1cited\endcsname% +\csname if#1citedtrue\endcsname% +\immediate\write\@auxout{\noexpand\BBlogcite{#1}}% +\fi% +} +%% an empty definition for the aux file +\def\BBlogcite#1{} + +%% display the bibliography +\long\def\BBlography{ + \newlength{\colw} + \setlength{\colw}{\textwidth} + \addtolength{\colw}{-\rw} + \IfFileExists{bibliography.BBlog.tex}{ + \input{bibliography.BBlog}}{{\tt error: missing BBlog bibliography file}} +} diff --git a/Gallavotti_Jauslin_2015.tex b/Gallavotti_Jauslin_2015.tex new file mode 100644 index 0000000..6c82ced --- /dev/null +++ b/Gallavotti_Jauslin_2015.tex @@ -0,0 +1,173 @@ +\documentclass{kiss} +% load packages +\usepackage{header} +% bibliography commands +\usepackage{BBlog} +% miscellaneous commands +\usepackage{toolbox} +% main style file +\usepackage{iansecs} + +\begin{document} + +\bf\Large +\hfil Kondo effect in the hierarchical $s-d$ model +\normalsize +\vskip20pt + +\hfil{Giovanni Gallavotti, Ian Jauslin} +\vskip20pt +\rm + +\hfil2015\par +\hugeskip + +\leftskip20pt +\rightskip20pt +\small +The $s-d$ model describes a chain of spin-1/2 electrons interacting magnetically with a two-level impurity. It was introduced to study the Kondo effect, in which the magnetic susceptibility of the impurity remains finite in the 0-temperature limit as long as the interaction of the impurity with the electrons is anti-ferromagnetic. A variant of this model was introduced by Andrei, which he proved was exactly solvable via Bethe Ansatz. A hierarchical version of Andrei's model was studied by Benfatto and the authors. In the present letter, that discussion is extended to a hierarchical version of the $s-d$ model. The resulting analysis is very similar to the hierarchical Andrei model, though the result is slightly simpler.\par +\leftskip0pt +\rightskip0pt +\normalsize + +\hugeskip + +\indent The $s-d$ model was introduced by Anderson [\cite{andSO}] and used by Kondo [\cite{konSF}] to study what would subsequently be called the {\it Kondo effect}. It describes a chain of electrons interacting with a fixed spin-1/2 magnetic impurity. One of the manifestations of the effect is that when the coupling is anti-ferrmoagnetic, the magnetic susceptibility of the impurity remains finite in the 0-temperature limit, whereas it diverges for ferromagnetic and for vanishing interactions.\par + +\indent A modified version of the $s-d$ model was introduced by Andrei [\cite{andEZ}], which was shown to be exactly solvable by Bethe Ansatz. In [\cite{bgjOFi}], a hierarchical version of Andrei's model was introduced and shown to exhibit a Kondo effect. In the present letter, we show how the argument can be adapted to the $s-d$ model.\par + +\indent We will show that in the hierarchical $s-d$ model, the computation of the susceptibility reduces to iterating an {\it explicit} map relating 6 {\it running coupling constants} (rccs), and that this map can be obtained by restricting the flow equation for the hierarchical Andrei model [\cite{bgjOFi}] to one of its invariant manifolds. The physics of both models are therefore very closely related, as had already been argued in [\cite{bgjOFi}]. This is particularly noteworthy since, at 0-field, the flow in the hierarchical Andrei model is relevant, whereas it is marginal in the hierarchical $s-d$ model, which shows that the relevant direction carries little to no physical significance.\par +\bigskip + +\indent The $s-d$ model [\cite{konSF}] represents a chain of non-interacting spin-1/2 fermions, called {\it electrons}, which interact with an isolated spin-1/2 {\it impurity} located at site 0. The Hilbert space of the system is $\mathcal F_L\otimes\mathbb C^2$ in which $\mathcal F_L$ is the Fock space of a length-$L$ chain of spin-1/2 fermions (the electrons) and $\mathbb C^2$ is the state space for the two-level impurity. The Hamiltonian, in the presence of a magnetic field of amplitude $h$ in the direction $\bm\omega\equiv(\bm\omega_1,\bm\omega_2,\bm\omega_3)$, is +\begin{equation}\begin{array}{r@{\ }>{\displaystyle}l} +H_K=&H_0+V_0+V_h=:H_0+V\\[0.3cm] +H_0=&\sum_{\alpha\in\{\uparrow,\downarrow\}}\sum_{x=-{L}/2}^{{L}/2-1} c^+_\alpha(x)\,\left(-\frac{\Delta}2-1\right)\,c^-_\alpha(x)\\[0.5cm] +V_0=&-\lambda_0\sum_{j=1,2,3\atop\alpha_1,\alpha_2} c^+_{\alpha_1}(0)\sigma^j_{\alpha_1,\alpha_2}c^-_{\alpha_2}(0)\, \tau^j\\[0.5cm] +V_h=&-h \,\sum_{j=1,2,3}\bm\omega_j \tau^j +\end{array}\label{eqhamdef}\end{equation} +where $\lambda_0$ is the interaction strength, $\Delta$ is the discrete Laplacian $c_\alpha^\pm(x),\,\alpha=\uparrow,\downarrow$ are creation and annihilation operators acting on {\it electrons}, and $\sigma^j=\tau^j,\,j=1,2,3$, are Pauli matrices. The operators $\tau^j$ act on the {\it impurity}. The boundary conditions are taken to be periodic.\par + +\indent In the {\it Andrei model} [\cite{andEZ}], the impurity is represented by a fermion instead of a two-level system, that is the Hilbert space is replaced by $\mathcal F_L\otimes\mathcal F_1$, and the Hamiltonian is defined by replacing $\tau^j$ in~(\ref{eqhamdef}) by $d^+\tau^jd^-$ in which $d_\alpha^\pm(x),\,\alpha=\uparrow,\downarrow$ are creation and annihilation operators acting on the impurity.\par +\bigskip + +\indent The partition function $Z={\rm Tr}\, e^{-\beta H_K}$ can be expressed formally as a functional integral: +\begin{equation} +Z=\mathrm{Tr}\int P(d\psi)\, \sum_{n=0}^\infty(-1)^n\int_{0:= \eta +\label{eqprop}\end{equation} +for $m\in\{0,-1,\cdots,$ $-N_\beta\}$, $\Delta\in\mathcal Q_m$, $\eta\in\{-,+\}$, $\alpha\in\{\uparrow,\downarrow\}$. The propagator of any other pair of fields is set to 0.\par + +\indent Finally, we define +\begin{equation} +\psi^\pm_\alpha(t):= \sum_{m=0}^{-N_\beta} 2^{\frac{m}2}\psi_\alpha^{[m]\pm}(\Delta^{[m+1]}(t)). +\label{eqfielddcmp}\end{equation} + +\indent The partition function for the hierarchical $s-d$ model is +\begin{equation} +Z=\mathrm{Tr}\left< \sum_{n=0}^\infty(-1)^n\int_{0 +\label{eqhierpartfn}\end{equation} +in which the $\psi^\pm_\alpha(0,t)$ in $\mathcal V(t)$ have been replaced by the $\psi_\alpha^\pm(t)$ defined in~(\ref{eqfielddcmp}): +\begin{equation} +\mathcal V(t):=-\lambda_0\sum_{j=1,2,3\atop\alpha_1,\alpha_2} \psi^+_{\alpha_1}(t)\sigma^j_{\alpha_1,\alpha_2}\psi^-_{\alpha_2}(t)\, \tau^j -h \,\sum_{j=1,2,3}\bm\omega_j \tau^j. +\label{eqhierpot}\end{equation} +This concludes the definition of the hierarchical $s-d$ model.\par +\bigskip + + +\indent We will now show how to compute the partition function~(\ref{eqhierpartfn}) using a renormalization group iteration. We first rewrite +\begin{equation} +\sum_{n=0}^\infty(-1)^n\int_{0{\displaystyle}l} +C=&\cosh(\tilde h),\quad \ell_0^{[0]}=\frac1C\frac{\lambda_0}{\tilde h}\sinh(\tilde h),\quad +\ell_1^{[0]}=\frac1C\frac{\lambda_0^2}{12\tilde h}(\tilde h\cosh(\tilde h)+2\sinh(\tilde h))\\[0.3cm] +\ell_4^{[0]}=&\frac1C\lambda_0\sinh(\tilde h),\quad \ell_5^{[0]}=\frac1C\sinh(\tilde h),\quad +\ell_6^{[0]}=\frac1C\frac{\lambda_0}{\tilde h}(\tilde h\cosh(\tilde h)-\sinh(\tilde h))\\[0.3cm] +\ell_7^{[0]}=&\frac1C\frac{\lambda_0^2}{12\tilde h^2}(\tilde h^2\sinh(\tilde h)+2\tilde h\cosh(\tilde h)-2\sinh(\tilde h)) +\end{array}\label{eqinitcd}\end{equation} +in which $\tilde h:=h/2$.\par + +\indent By a straightforward induction, we find that the partition function~(\ref{eqhierpartfn}) can be computed by defining +\begin{equation} +C^{[m]}\mathcal W^{[m-1]}(\Delta^{[m]}):=\left<\prod_\eta\left(\mathcal W^{[m]}(\Delta^{[m]}_\eta)\right)\right>_m +\label{eqindW}\end{equation} +in which $\left<\cdot\right>_m$ denotes the average over $\psi^{[m]}$, $C^{[m]}>0$ and +\begin{equation} +\mathcal W^{[m-1]}(\Delta^{[m]})=1+\sum_p\ell_p^{[m]}O_p^{[\le m]}(\Delta^{[m]}) +\label{eqexprW}\end{equation} +in terms of which +\begin{equation} +Z=C^{2|\mathcal Q_0|}\prod_{m=-N(\beta)+1}^0(C^{[m]})^{|\mathcal Q_{m-1}|} +\label{eqZind}\end{equation} +in which $|\mathcal Q_m|=2^{N(\beta)-|m|}$ is the cardinality of $\mathcal Q_m$. In addition, similarly to [\cite{bgjOFi}], the map relating $\ell_p^{[m]}$ to $\ell_p^{[m-1]}$ and $C^{[m]}$ can be computed explicitly from~(\ref{eqindW}): +\begin{equation}\begin{array}{r@{\ }>{\displaystyle}l} +C^{[m]} =& 1 +\frac{3}{2}\ell_{0}^2 +\ell_{0}\ell_{6} +9\ell_{1}^2 +\frac{\ell_{4}^2}{2} +\frac{\ell_{5}^2}{4} +\frac{\ell_{6}^2}{2} +9\ell_{7}^2 \\[0.3cm] +\ell^{[m-1]}_{0} =& \frac1C\left(\ell_{0} -\ell_{0}^2 +3\ell_{0}\ell_{1} -\ell_{0}\ell_{6} \right)\\[0.3cm] +\ell^{[m-1]}_{1} =& \frac1C\left(\frac{\ell_{1}}{2} +\frac{\ell_{0}^2}{8} +\frac{\ell_{0}\ell_{6}}{12} +\frac{\ell_{4}^2}{24} +\frac{\ell_{5}\ell_{7}}{4} +\frac{\ell_{6}^2}{24} \right)\\[0.3cm] +\ell^{[m-1]}_{4} =& \frac1C\left(\ell_{4} +\frac{\ell_{0}\ell_{5}}{2} +3\ell_{0}\ell_{7} +3\ell_{1}\ell_{4} +\frac{\ell_{5}\ell_{6}}{2} +3\ell_{6}\ell_{7} \right)\\[0.3cm] +\ell^{[m-1]}_{5} =& \frac1C\left(2\ell_{5} +2\ell_{0}\ell_{4} +36\ell_{1}\ell_{7} +2\ell_{4}\ell_{6} \right)\\[0.3cm] +\ell^{[m-1]}_{6} =& \frac1C\left(\ell_{6} +\ell_{0}\ell_{6} +3\ell_{1}\ell_{6} +\frac{\ell_{4}\ell_{5}}{2} +3\ell_{4}\ell_{7} \right)\\[0.3cm] +\ell^{[m-1]}_{7} =& \frac1C\left(\frac{\ell_{7}}{2} +\frac{\ell_{0}\ell_{4}}{12} +\frac{\ell_{1}\ell_{5}}{4} +\frac{\ell_{4}\ell_{6}}{12} \right) +\end{array}\label{eqbetafun}\end{equation} +in which the $^{[m]}$ have been dropped from the right hand side.\par +\bigskip + + +\indent The flow equation~(\ref{eqbetafun}) can be recovered from that of the hierarchical Andrei model studied in [\cite{bgjOFi}] (see in particular [\cite{bgjOFi}, (C1)] by restricting the flow to the invariant submanifold defined by \begin{equation} \ell_2^{[m]}=\frac13,\quad \ell_3^{[m]}=\frac16\ell_1^{[m]},\quad \ell_8^{[m]}=\frac16\ell_4^{[m]}. \label{e18}\end{equation} This is of particular interest since $\ell_2^{[m]}$ is a relevant coupling and the fact that it plays no role in the $s-d$ model indicates that it has little to no physical relevance.\par + +\indent The qualitative behavior of the flow is therefore the same as that described in [\cite{bgjOFi}] for the hierarchical Andrei model. In particular the susceptibility, which can be computed by deriving $-\beta^{-1}\log Z$ with respect to $h$, remains finite in the 0-temperature limit as long as $\lambda_0<0$, that is as long as the interaction is anti-ferromagnetic.\par +\hugeskip + +{\bf Acknowledgements}: We are grateful to G.~Benfatto for many enlightening discussions on the $s-d$ and Andrei's models. + +\hugeskip + +\small +\BBlography + +\vfill +\eject + +\end{document} diff --git a/README b/README new file mode 100644 index 0000000..50e5582 --- /dev/null +++ b/README @@ -0,0 +1,49 @@ +* Typeset + +In order to typeset the LaTeX document, run + pdflatex Gallavotti_Jauslin_2015.tex + pdflatex Gallavotti_Jauslin_2015.tex + + +* Files + + Gallavotti_Jauslin_2015.tex : + body of the paper. + + bibliography.BBlog.tex : + list of references. + + BBlog.sty : + bibliography related commands. + + header.sty : + list of packages. + + iansecs.sty : + main style file. + + kiss.cls : + barebones class file + + toolbox.sty : + collection of useful commands. + + +* Coding style + +In the body of the paper, an effort has been made to keep the LaTeX code +'standard', avoiding self-defined commands whenever possible, and sticking to +TeX and basic LaTeX commands. In some instances however, such an approach would +have been too restrictive, and commands defined in the style files listed above +were used. + +Many of the commands defined in 'iansecs.sty' are drop-in replacements for +standard LaTeX commands, though some functionality may be lost. + + +* Bibliography + +The bibliography was generated by BBlog, which produced the +bibliography.BBlog.tex file. All of the required code to adequately typeset +the reference list and define the commands used to cite them are contained in +that file. diff --git a/bibliography.BBlog.tex b/bibliography.BBlog.tex new file mode 100644 index 0000000..67a19e0 --- /dev/null +++ b/bibliography.BBlog.tex @@ -0,0 +1,20 @@ +\hrefanchor +\outdef{citeandSO}{And61} +\hbox{\parbox[t]{\rw}{[\cite{andSO}]}\parbox[t]{\colw}{P.~Anderson - {\it Localized magnetic states in metals}, Physical Review, Vol.~124, n.~1, p.~41-53, 1961.}}\par +\bigskip + +\hrefanchor +\outdef{citeandEZ}{And80} +\hbox{\parbox[t]{\rw}{[\cite{andEZ}]}\parbox[t]{\colw}{N.~Andrei - {\it Diagonalization of the Kondo Hamiltonian}, Physical Review Letters, Vol.~45, n.~5, 1980.}}\par +\bigskip + +\hrefanchor +\outdef{citebgjOFi}{BGJ15} +\hbox{\parbox[t]{\rw}{[\cite{bgjOFi}]}\parbox[t]{\colw}{G.~Benfatto, G.~Gallavotti, I.~Jauslin - {\it Kondo effect in a Fermionic hierarchical model}, arXiv 1506.04381, 2015.}}\par +\bigskip + +\hrefanchor +\outdef{citekonSF}{Kon64} +\hbox{\parbox[t]{\rw}{[\cite{konSF}]}\parbox[t]{\colw}{J.~Kondo - {\it Resistance minimum in dilute magnetic alloys}, Progress of Theoretical Physics, Vol.~32, n.~1, 1964.}}\par +\bigskip + diff --git a/header.sty b/header.sty new file mode 100644 index 0000000..b8492a9 --- /dev/null +++ b/header.sty @@ -0,0 +1,11 @@ +%% +%% Load packages +%% + +\usepackage{color} +\usepackage[hidelinks]{hyperref} +\usepackage{amsfonts} +\usepackage{bm} +\usepackage{array} +\usepackage{etoolbox} + diff --git a/iansecs.sty b/iansecs.sty new file mode 100644 index 0000000..ee6ab04 --- /dev/null +++ b/iansecs.sty @@ -0,0 +1,402 @@ +%% +%% This file contains the main style commands +%% +%% Some options can be set by changing the \loaddefaults command +%% + +\usepackage{color} +\usepackage{marginnote} + +\def\loaddefaults{ + \sectionsfalse + \subseqcountfalse + \def\seqskip{\vskip1.5cm} + \def\subseqskip{\vskip1cm} + \resetpointattheofalse + \parindent=0pt + \def\indent{\hskip20pt} +} + +% false if there are no sections +\newif\ifsections +% true if equation numbers should include the subsection number +\newif\ifsubseqcount +% true if there is a table of contents +\newif\iftoc +% true if point counting should reset at each theorem +\newif\ifresetpointattheo + +% a prefix to put before the section number, e.g. A for appendices +\def\sectionprefix{} + +\loaddefaults + +%% style for the equation number +\def\eqnumstyle{} + +%% 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}}% +} + + +%% define a label for the latest tag +%% label defines a command containing the string stored in \tag +\AtBeginDocument{ + \def\label#1{\expandafter\outdef{#1}{\safe\tag}} + +\def\ref#1{% +% check whether the label is defined (hyperlink runs into errors if this check is ommitted) +\ifcsname #1@hl\endcsname% +\hyperlink{ln.\csname #1@hl\endcsname}{\safe\csname #1\endcsname}% +\else% +\ifcsname #1\endcsname% +\csname #1\endcsname% +\else% +{\bf ??}% +\fi% +\fi% +} +} + +%% counters +\newcounter{sectioncount} +\newcounter{subsectioncount} +\newcounter{pointcount} +\newcounter{subpointcount} +\newcounter{subsubpointcount} +\newcounter{seqcount} +\newcounter{figcount} +\newcounter{Theocount} +\newcounter{tocsectioncount} +\newcounter{tocsubsectioncount} + +%% section command +\newlength\secnumwidth +\newlength\sectitlewidth +\def\section#1{% +% reset counters +\stepcounter{sectioncount}% +\setcounter{subsectioncount}{0}% +\setcounter{pointcount}{0}% +\setcounter{subpointcount}{0}% +\setcounter{subsubpointcount}{0}% +\setcounter{figcount}{0}% +\setcounter{Theocount}{0}% +\setcounter{seqcount}{0}% +% space before section (if not first) +\ifnum\thesectioncount>1% +\seqskip% +\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% +\par\penalty10000% +\bigskip\penalty10000% +} + +%% subsection +\def\subsection#1{ +% counters +\stepcounter{subsectioncount}% +\setcounter{pointcount}{0}% +\setcounter{subpointcount}{0}% +\setcounter{subsubpointcount}{0}% +\ifsubseqcount% +\setcounter{seqcount}0% +\fi% +% space before subsection (if not first) +\ifnum\thesubsectioncount>1% +\subseqskip% +\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% +\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} + +\newlength\current@itemizeskip +\setlength\current@itemizeskip{0pt} +\def\itemize{ + \par\medskip + \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 +} + +%% points +\def\point{ + \stepcounter{pointcount} + \setcounter{subpointcount}{0} + % hyperref anchor + \hrefanchor + \indent{\bf \thepointcount\ - } + % define tag (for \label) + \xdef\tag{\thepointcount} +} +\def\subpoint{ + \stepcounter{subpointcount} + \setcounter{subsubpointcount}0 + % hyperref anchor + \hrefanchor + \indent\hskip.5cm{\bf \thepointcount-\thesubpointcount\ - } + % define tag (for \label) + \xdef\tag{\thepointcount-\thesubpointcount} +} +\def\subsubpoint{ + \stepcounter{subsubpointcount} + % hyperref anchor + \hrefanchor + \indent\hskip1cm{\bf \thepointcount-\thesubpointcount-\thesubsubpointcount\ - } + % define tag (for \label) + \xdef\tag{\thepointcount-\thesubpointcount-\thesubsubpointcount} +} +% reset points +\def\resetpointcounter{ + \setcounter{pointcount}{0} + \setcounter{subpointcount}{0} + \setcounter{subsubpointcount}{0} +} + +%% equation numbering +\def\seqcount{ + \stepcounter{seqcount} + % the output + \edef\seqformat{\theseqcount} + % add subsection number + \ifsubseqcount + \let\tmp\seqformat + \edef\seqformat{\thesubsectioncount.\tmp} + \fi + % add section number + \ifsections + \let\tmp\seqformat + \edef\seqformat{\sectionprefix\thesectioncount.\tmp} + \fi + % define tag (for \label) + \xdef\tag{\seqformat} + % write number + \marginnote{\eqnumstyle\hfill(\seqformat)} +} +%% equation environment compatibility +\def\equation{\hrefanchor$$\seqcount} +\def\endequation{$$\@ignoretrue} + +%% figures +\newlength\figwidth +\setlength\figwidth\textwidth +\addtolength\figwidth{-2.5cm} + +\def\figcount#1{% +\stepcounter{figcount}% +% hyperref anchor +\hrefanchor% +% the number of the figure +\edef\figformat{\thefigcount}% +% add section number +\ifsections% +\let\tmp\figformat% +\edef\figformat{\sectionprefix\thesectioncount.\tmp}% +\fi% +% define tag (for \label) +\xdef\tag{\figformat}% +% write +\hfil fig \figformat: \parbox[t]{\figwidth}{\small#1}% +\par\bigskip% +} + +%% environment +\def\figure{ + \par\penalty-500 +} +\def\endfigure{ + \par\penalty-1000 +} +\let\caption\figcount + +%% 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} +\def\delim{\par\leavevmode\raise.3em\hbox to\hsize{\vrule height0.3em\hrulefill\vrule height0.3em}\par\penalty10000} +\def\enddelim{\par\penalty10000\leavevmode\raise.3em\hbox to\hsize{\vrule height0.3em\hrulefill\vrule height0.3em}\par} + +%% theorem headers +\def\theo#1{ + \stepcounter{Theocount} + % reset points + \ifresetpointattheo\resetpointcounter\fi + % hyperref anchor + \hrefanchor + % the number + \def\formattheo{\theTheocount} + % add section number + \ifsections + \let\tmp\formattheo + \edef\formattheo{\sectionprefix\thesectioncount.\tmp} + \fi + % define tag (for \label) + \xdef\tag{\formattheo} + % write + \delimtitle{\bf #1 \formattheo} +} +\let\endtheo\enddelim + +%% 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} +} + +%% start references +\def\references{% +\hrefanchor% +% write +{\bf \LARGE References}\par\penalty10000\bigskip\penalty10000% +% 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% +} + + +%% table of contents +\newif\iftocopen +\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 +\def\tocsection #1#2{ + \stepcounter{tocsectioncount} + \setcounter{tocsubsectioncount}{0} + % write + \smallskip\hyperlink{ln.\csname toc@sec.\thetocsectioncount\endcsname}{{\bf \tocsectionprefix\thetocsectioncount}.\hskip5pt #1\leaderfill#2}\par +} +\def\tocsubsection #1#2{ + \stepcounter{tocsubsectioncount} + % write + {\hskip10pt\hyperlink{ln.\csname toc@subsec.\thetocsectioncount.\thetocsubsectioncount\endcsname}{{\bf \thetocsubsectioncount}.\hskip5pt {\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}{{\bf References}\leaderfill#1}}\par + \smallskip +} diff --git a/kiss.cls b/kiss.cls new file mode 100644 index 0000000..51d36b8 --- /dev/null +++ b/kiss.cls @@ -0,0 +1,42 @@ +%% +%% Barebones class declaration +%% + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{kiss} + +\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} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} + +%% something is wrong with \thepage, redefine it +\gdef\thepage{\the\c@page} + +%% default offsets: 1in, correct with \hoffset and \voffset +\hoffset=-50pt +\voffset=-72pt +%% horizontal margins +%\oddsidemargin=31pt +%\evensidemargin=31pt +%% vertical margin +%\topmargin=20pt +%% body size +\textwidth=460pt +\textheight=704pt +%% header size and margin +%\headheight=12pt +%\headsep=25pt +%% footer size +%\footskip=30pt +%% margin size and margin +\marginparwidth=35pt +%\marginparsep=10pt diff --git a/toolbox.sty b/toolbox.sty new file mode 100644 index 0000000..620ed50 --- /dev/null +++ b/toolbox.sty @@ -0,0 +1,41 @@ +%% +%% A collection of useful commands +%% + +%% can call commands even when they are not defined +\def\safe#1{% +\ifdefined#1% +#1% +\else% +{\color{red}\bf?}% +\fi% +} + + +%% larger skip +\newskip\hugeskipamount + \hugeskipamount=24pt plus8pt minus8pt +\def\hugeskip{\vskip\hugeskipamount} + + +%% penalty before large blocks +\def\preblock{ + \penalty-500 +} + +%% listparpenalty prevents page breaks before lists +\newcount\prevparpenalty +\def\listparpenalty{ + \prevparpenalty=\@beginparpenalty + \@beginparpenalty=10000 +} +%% back to previous value +\def\unlistparpenalty{ + \@beginparpenalty=\prevparpenalty +} + + +%% array spanning the entire line +\def\largearray{\begin{array}{@{}>{\displaystyle}l@{}}\hphantom{\hspace{\textwidth}}\\[-.5cm]} +\def\endlargearray{\end{array}} + -- cgit v1.2.3-54-g00ecf