From 9c9f888bb4839dee7b34d18181d2cec50dd4b743 Mon Sep 17 00:00:00 2001 From: Ian Jauslin Date: Wed, 12 Feb 2020 22:58:32 -0500 Subject: [PATCH] Initial commit --- Carlen_Jauslin_Lieb_Loss_2020.tex | 294 +++++++++++++ Makefile | 34 ++ README | 31 ++ libs/ian.cls | 673 ++++++++++++++++++++++++++++++ libs/iantheo.sty | 162 +++++++ libs/point.sty | 107 +++++ 6 files changed, 1301 insertions(+) create mode 100644 Carlen_Jauslin_Lieb_Loss_2020.tex create mode 100644 Makefile create mode 100644 README create mode 100644 libs/ian.cls create mode 100644 libs/iantheo.sty create mode 100644 libs/point.sty diff --git a/Carlen_Jauslin_Lieb_Loss_2020.tex b/Carlen_Jauslin_Lieb_Loss_2020.tex new file mode 100644 index 0000000..34fe424 --- /dev/null +++ b/Carlen_Jauslin_Lieb_Loss_2020.tex @@ -0,0 +1,294 @@ +\documentclass[no_section_in_all]{ian} + +\begin{document} + +\hbox{} +\hfil{\bf\LARGE +On the convolution inequality $f\geqslant f\star f$\par +} +\vfill + +\hfil{\bf\large Eric Carlen}\par +\hfil{\it Department of Mathematics, Rutgers University}\par +\hfil{\color{blue}\tt\href{mailto:carlen@rutgers.edu}{carlen@rutgers.edu}}\par +\vskip20pt + +\hfil{\bf\large Ian Jauslin}\par +\hfil{\it Department of Physics, Princeton University}\par +\hfil{\color{blue}\tt\href{mailto:ijauslin@princeton.edu}{ijauslin@princeton.edu}}\par +\vskip20pt + +\hfil{\bf\large Elliott H. Lieb}\par +\hfil{\it Departments of Mathematics and Physics, Princeton University}\par +\hfil{\color{blue}\tt\href{mailto:lieb@princeton.edu}{lieb@princeton.edu}}\par +\vskip20pt + +\hfil{\bf\large Michael Loss}\par +\hfil{\it School of Mathematics, Georgia Institute of Technology}\par +\hfil{\color{blue}\tt\href{mailto:loss@math.gatech.edu}{loss@math.gatech.edu}}\par + +\vfill + + +\hfil {\bf Abstract}\par +\medskip + +We consider the inequality $f \geqslant f\star f$ for real functions in $L^1(\mathbb R^d)$ where $f\star f$ denotes the convolution of $f$ with itself. We show that all such functions $f$ are non-negative, +which is not the case for the same inequality in $L^p$ for any $1 < p \leqslant 2$, for which the convolution is defined. We also show that all solutions in $L^1(\mathbb R^d)$ satisfy $\int_{\mathbb R^d}f(x){\rm d}x \leqslant \textstyle\frac12$. Moreover, if +$\int_{\mathbb R^d}f(x){\rm d}x = \textstyle\frac12$, then $f$ must decay fairly slowly: $\int_{\mathbb R^d}|x| f(x){\rm d}x = \infty$, and this is sharp since for all +$r< 1$, there are solutions with $\int_{\mathbb R^d}f(x){\rm d}x = \textstyle\frac12$ and $\int_{\mathbb R^d}|x|^r f(x){\rm d}x <\infty$. However, if +$\int_{\mathbb R^d}f(x){\rm d}x = : a < \textstyle\frac12$, the decay at infinity can be much more rapid: we show that for all $a<\textstyle\frac12$, there are solutions such that for some $\epsilon>0$, +$\int_{\mathbb R^d}e^{\epsilon|x|}f(x){\rm d}x < \infty$. +\vfill + +\hfil{\footnotesize\copyright\, 2020 by the authors. This paper may be reproduced, in its entirety, for non-commercial purposes.} + +\eject + +\setcounter{page}1 +\pagestyle{plain} + + +\indent Our subject is the set of real, integrable solutions of the inequality +\begin{equation} + f(x)\geqslant f\star f(x) + ,\quad\forall x\in\mathbb R^d\ , + \label{ineq} +\end{equation} +where $f\star f(x)$ denotes the convolution $f\star f(x) = \int_{\mathbb R^d} f(x-y) f(y){\rm d}y$, which by Young's inequality \cite[Theorem 4.2]{LL96} is well defined as an element of +$L^{p/(2-p)}(\mathbb R^d)$ for all $1 \leqslant p\leqslant 2$. Thus, one may consider this inequality in $L^p(\mathbb R^d)$ for all $1 \leqslant p \leqslant 2$, but the case $p=1$ is special: +the solution set of (\ref{ineq}) is restricted in a number of surprising ways. Integrating both sides of (\ref{ineq}), one sees immediately that $\int_{\mathbb R^d} f(x){\rm d}x \leqslant 1$. +We prove that, in fact, all integrable solutions satisfy $\int_{\mathbb R^d} f(x){\rm d}x \leqslant \textstyle\frac12$, and this upper bound is sharp. + + +Perhaps even more surprising, we prove that all integrable solutions of (\ref{ineq}) are non-negative. This is {\em not true} for solutions in $L^p(\mathbb R^d)$, $ 1 < p \leqslant 2$. +For $f\in L^p(\mathbb R^d)$, $1\leqslant p \leqslant 2$, the Fourier transform $\widehat{f}(k) = \int_{\mathbb R^d}e^{-i2\pi k\cdot x} f(x){\rm d}x$ is well defined as an element of $L^{p/(p-1)}(\mathbb R^d)$. If $f$ solves the equation $f = f\star f$, +then $\widehat{f} = \widehat{f}^2$, and hence $\widehat{f}$ is the indicator function of a measurable set. By the Riemann-Lebesgue Theorem, if $f\in L^1(\mathbb R^d)$, then +$\widehat{f}$ is continuous and vanishes at infinity, and the only such indicator function is the indicator function of the empty set. Hence the only integrable solution of +$f = f*f$ is the trivial solution $f= 0$. However, for $1 < p \leqslant 2$, solutions abound: take $d=1$ and define $g$ to be the indicator function of the interval $[-a,a]$. Define +\begin{equation}\label{exam} +f(x) = \int_{\mathbb R} e^{-i2\pi k x} g(k){\rm d}k = \frac{ \sin 2\pi xa}{\pi x}\ , + \end{equation} +which is not integrable, but which belongs to $L^p(\mathbb R)$ for all $p> 1$. By the Fourier Inversion Theorem $\widehat{f} = g$. Taking products, one gets examples in any dimension. + + +To construct a family of solutions to (\ref{ineq}), fix $a,t> 0$, and define $g_{a,t}(k) = a e^{-2\pi |k| t}$. By \cite[Theorem 1.14]{SW71}, +$$ +f_{a,t}(x) = \int_{\mathbb R^d} e^{-i2\pi k x} g_{a,t}(k){\rm d}k = a\Gamma((d+1)/2) \pi^{-(d+1)/2} \frac{t}{(t^2 + x^2)^{(d+1)/2}}\ . +$$ +Since $g_{a,t}^2(k) = g_{a^2,2t}$, $f_{a,t}\star f_{a,t} = f_{a^2,2t}$, Thus, $f_{a,t} \geqslant f_{a,t}\star f_{a,t}$ reduces to +$$ +\frac{t}{(t^2 + x^2)^{(d+1)/2}} \geqslant \frac{2at}{(4t^2 + x^2)^{(d+1)/2}} +$$ +which is satisfied for all $a \leqslant 1/2$. Since $\int_{\mathbb R^d}f_{a,t}(x){\rm d}x =a$, this provides a class of solutions of (\ref{ineq}) that are non-negative and satisfy +\begin{equation}\label{half} +\int_{\mathbb R^d}f(x){\rm d}x \leqslant \frac12\ , +\end{equation} + all of which have fairly slow decay at infinity, so that in every case, +\begin{equation}\label{tail} + \int_{\mathbb R^d}|x|f(x){\rm d}x =\infty \ . + \end{equation} + +Our results show that this class of examples of integrable solutions of (\ref{ineq}) is surprisingly typical of {\em all} integrable solutions: every real integrable solution +$f$ of (\ref{ineq}) is positive, satisfies (\ref{half}), +and if there is equality in (\ref{half}), $f$ also satisfies (\ref{tail}). The positivity of all real solutions of (\ref{ineq}) in $L^1(\mathbb R^d)$ may be considered surprising since it is +false in $L^p(\mathbb R^d)$ for all $p > 1$, as the example (\ref{exam}) shows. We also show that when strict inequality holds in (\ref{half}) for a solution $f$ of (\ref{ineq}), it is possible for +$f$ to have rather fast decay; we construct examples such that $\int_{\mathbb R^d}e^{\epsilon|x|}f(x){\rm d}x < \infty$ for some $\epsilon> 0$. The conjecture that integrable solutions of (\ref{ineq}) +are necessarily positive was motivated by recent work \cite{CJL19} on a partial differential equation involving a quadratic nonlinearity of $f\star f$ type, and the result proved here is the key to +the proof of positivity for solutions of this partial differential equations; see \cite{CJL19}. + + +\theo{Theorem}\label{theo:positivity} +If $f$ is a real valued function in $L^1(\mathbb R^d)$ such that +\begin{equation}\label{uineq} + f(x) - f\star f(x) =: u(x) \geqslant 0 +\end{equation} +for all $x$. Then $\int_{\mathbb R^d} f(x)\ dx\leqslant\frac12$, +and $f$ is given by the convergent series +\begin{equation} +f(x) = \frac{1}{2} \sum_{n=1}^\infty c_n 4^n (\star^n u)(x) +\label{fun} +\end{equation} +where the $c_n\geqslant0$ are the Taylor coefficients in the expansion of $\sqrt{1-x}$ +\begin{equation}\label{3half} + \sqrt{1-x}=1-\sum_{n=1}^\infty c_n x^n + ,\quad + c_n=\frac{(2n-3)!!}{2^nn!} \sim n^{-3/2} +\end{equation} +In particular, $f$ is positive. Moreover, if $u\geqslant 0$ is any integrable function with $\int_{\mathbb R^d}u(x){\rm d}x \leqslant \textstyle\frac14$, then the sum on the right in (\ref{fun}) defines an integrable function $f$ that satisfies (\ref{uineq}). +\endtheo +\bigskip + +\indent\underline{Proof}: Note that $u$ is integrable. Let $a := \int_{\mathbb R^d}f(x){\rm d}x$ and $b := \int_{\mathbb R^d}u(x){\rm d}x \geqslant 0$. Fourier transforming, +(\ref{uineq}) becomes +\begin{equation} \label{ft} +\widehat f(k) = \widehat f(k)^2 +\widehat u(k)\ . +\end{equation} +At $k=0$, $a^2 - a = -b$, so that $\left(a - \textstyle\frac12\right)^2 = \textstyle\frac14 - b$. Thus $0 \leqslant b \leqslant\textstyle\frac14$. Furthermore, since $u \geqslant 0$, +\begin{equation} + |\widehat u(k)|\leqslant\widehat u(0) \leqslant \textstyle\frac14 +\end{equation} +and the first inequality is strict for $k\neq 0$. Hence for $k\neq 0$, $\sqrt{1-4\widehat u(k)} \neq 0$. By the Riemann-Lebesgue Theorem, $\widehat{f}(k)$ and $\widehat{u}(k)$ are both +continuous and vanish at infinity, and hence we must have that +\begin{equation} + \widehat f(k)=\textstyle\frac12-\textstyle\frac12\sqrt{1-4\widehat u(k)} + \label{hatf} +\end{equation} +for all sufficiently large $k$, and in any case $\widehat f(k)= \frac12\pm\frac12\sqrt{1-4\widehat u(k)}$. But by continuity and the fact that $\sqrt{1-4\widehat u(k)} \neq 0$ for any $k\neq 0$, the sign cannot switch. +Hence (\ref{hatf}) is valid for all $k$, including $k=0$, again by continuity. At $k=0$, $a = \textstyle\frac12 - \sqrt{1-4b}$, which proves (\ref{half}). +The fact that $c_n$ as specified in (\ref{3half}) satisfies $c_n \sim n^{-3/2}$ is a simple application of Stirling's formula, and it shows that the power series for $\sqrt{1-z}$ converges absolutely and +uniformly everywhere on the closed unit disc. Since $|4 \widehat u(k)| \leqslant 1$, +${\displaystyle + \sqrt{1-4 \widehat u(k)} = 1 -\sum_{n=1}^\infty c_n (4 \widehat u(k))^n}$. Inverting the Fourier transform, yields (\ref{fun}),and since $\int_{\mathbb R^d} 4^n\star^n u(x){\rm d}x \leqslant 1$, + the convergence of the sum in $L^1(\mathbb R^d)$ follows from the convergence of $\sum_{n=1}^\infty c_n$. The final statement follows from the fact that if $f$ is defined in terms of $u$ in this manner, (\ref{hatf}) is + valid, and then (\ref{ft}) and (\ref{uineq}) are satisfied. +\qed +\bigskip + +\theo{Theorem}\label{theo:decay} +Let $f\in L^1(\mathbb R^d)$ satisfy (\ref{ineq}) and $\int_{\mathbb R^d} f(x)\ dx=\textstyle\frac12$. Then +$\int_{\mathbb R^d}|x| f(x)\ dx=\infty$. +\endtheo +\bigskip + + +\indent\underline{Proof}: If $\int_{\mathbb R^d} f(x)\ dx=\textstyle\frac12$, $\int_{\mathbb R^d} 4u(x)\ dx=1$, then $w(x) = 4u(x)$ is a probability density, and we can write $f(x) = \sum_{n=0}^\infty \star^n w$. Suppose that $|x|f(x)$ is integrable. Then $|x|w(x)$ is integrable. Let $m:= \int_{\mathbb R^d}xw(x){\rm d} x$. Since first moments add under convolution, the trivial inequality $|m||x| \geqslant m\cdot x$ yields +$$|m|\int_{\mathbb R^d} |x| \star^nw(x){\rm d}x \geqslant \int_{\mathbb R^d} m\cdot x \star^nw(x){\rm d}x = n|m|^2\ .$$ + It follows that $\int_{\mathbb R^d} |x| f(x){\rm d}x \geqslant |m|\sum_{n=1}^\infty nc_n = \infty$. Hence $m=0$. + + +Suppose temporarily that in addition, $|x|^2w(x)$ is integrable. Let $\sigma^2$ be the variance of $w$; i.e., $\sigma^2 = \int_{\mathbb R^d}|x|^2w(x){\rm d}x\ .$ +Define the function $\varphi(x) = \min\{1,|x|\}$. Then +$$ +\int_{\mathbb R^d}|x| \star^n w(x){\rm d}x = \int_{\mathbb R^d}|n^{1/2}x| \star^n w(n^{1/2}x)n^{d/2}{\rm d}x \geqslant n^{1/2} \int_{\mathbb R^d}\varphi(x)\star^n w(n^{1/2}x)n^{d/2}{\rm d}x. +$$ +By the Central Limit Theorem, since $\varphi$ is bounded and continuous, +\begin{equation}\label{CLT} +\lim_{n\to\infty} \int_{\mathbb R^d}\varphi(x)\star^n w(n^{1/2}x)n^{d/2}{\rm d}x = \int_{\mathbb R^d}\varphi(x) \gamma(x){\rm d}x =: C > 0 +\end{equation} +where $\gamma(x)$ is a centered Gaussian probability density with variance $\sigma^2$. + +This shows that there is a $\delta> 0$ for all sufficiently large $n$, $\int_{\mathbb R^d}|x| \star^n w(x){\rm d}x \geqslant \sqrt{n}\delta$, and then since $c_n\sim n^{3/2}$, $\sum_{n=1}^\infty c_n \int_{\mathbb R^d}|x| \star^n w(x){\rm d}x= \infty$. + + To remove the hypothesis that $w$ has finite variance, note that if $w$ is a probability density with zero mean and infinite variance, $\star^n w(n^{1/2}x)n^{d/2}$ is ``trying'' to converge to a Gaussian of infinite variance. In particular, one would expect that for all $R>0$, +\begin{equation}\label{CLT2} +\lim_{n\to\infty} \int_{|x| \leqslant R}\star^n w(n^{1/2}x)n^{d/2}{\rm d}x = 0\ , +\end{equation} so that the limit in (\ref{CLT}) has the value $1$. The proof then proceeds as above. The fact that (\ref{CLT2}) is valid is proved in \cite[Corollary 1]{CGR08}. +\qed +\bigskip + +\delimtitle{\bf Remark} +For the convenience of the reader, we sketch, at the end of this paper, the part of of the argument in \cite{CGR08} that proves (\ref{CLT2}), since we know of no reference for this simple statement, and the proof in \cite{CGR08} deals with a more complicated variant of this problem. +\endtheo +\bigskip + +\theo{Theorem} + If $f$ satisfies\-~(\ref{ineq}), and +$\int |x|^2[f(x)-f\star f(x)]\ dx<\infty$, then, for all $0\leqslant p<1$, + \begin{equation} + \int |x|^pf(x)\ dx<\infty. + \end{equation} +\endtheo +\bigskip + +\indent\underline{Proof}: We may suppose that $f$ is not identically $0$. Let $u = f - f\star f$ as above. Let $t := 4\int_{\mathbb R^d}u(x){\rm d}x \leqslant 1$. Then $t> 0$. Define $w := t^{-1}4u$; $w$ is a probability density and +$$ +f(x) = \sum_{n=1}^\infty c_n t^n \star^n w(x)\ . +$$ +By hypothesis, $w$ has a mean $m := \int_{\mathbb R^d} x w(x){\rm d}x$ and variance $\sigma^2 = \int_{\mathbb R^d} |x-m|^2 w(x){\rm d}x < \infty$. Since variance is additive under convolution, +$$ +\int_{\mathbb R^d} |x-m|^2 \star^n w(x){\rm d}x = n\sigma^2\ . +$$ +By H\"older's inequality, for all $0 < p < 2$, +$\int_{\mathbb R^d} |x-m|^p \star^n w(x){\rm d}x \leqslant (n\sigma^2)^{p/2}$. +It follows that for $0 < p < 1$, +$$ +\int_{\mathbb R^d} |x-m|^p f(x){\rm d}x \leqslant (\sigma^2)^{p/2} \sum_{n=1}^\infty n^{p/2} c_n < \infty\ , +$$ +again using the fact that $c_n\sim n^{-3/2}$. +\qed + + + + +Theorem \ref{theo:decay} implies that when $\int f=\frac12$, $f$ cannot decay faster than $|x|^{-(d+1)}$. However, integrable solutions $f$ of (\ref{ineq}) such that $\int_{\mathbb R^d}f(x){\rm d}x < \textstyle\frac12$ +can decay quite rapidly, even having finite exponential moments, as we now show. + + +Consider a non-negative, integrable function $u$, which integrates to $r<\frac14$, and satisfies +\begin{equation} + \int_{\mathbb R^d} u(x)e^{\lambda|x|}{\rm d}x < \infty +\end{equation} +for some $\lambda>0$. +The Laplace transform of $u$ is +$ \widetilde u(p):=\int e^{-px}u(x)\ {\rm d} x$ which is analytic for $|p|<\lambda$, and $\widetilde u(0) < \textstyle\frac14$. +Therefore, there exists $0<\lambda_0\leqslant \lambda$ such that, for all $|p|\leqslant\lambda_0$, + $\widetilde u(p)<\textstyle\frac14$. +By Theorem \ref{theo:positivity}, +${\displaystyle + f(x):=\frac12\sum_{n=1}^\infty 4^nc_n(\star^n u)(x)}$ +is an integrable solution of (\ref{ineq}). For + $|p|\leqslant\lambda_0$, it has a well-defined Laplace transform $ \widetilde f(p)$ given by +\begin{equation} + \widetilde f(p)=\int e^{-px}f(x)\ dx=\frac12(1-\sqrt{1-4\widetilde u(p)}) +\end{equation} +which is analytic for $|p|\leqslant \lambda_0$. +Note that +${\displaystyle e^{s|x|} \leqslant \prod_{j=1}^d e^{|sx_j|} \leqslant \frac{1}{d}\sum_{j=1}^d e^{d|sx_j|} \leqslant \frac{2}{d}\sum_{j=1}^d \cosh(dsx_j)}$. +What has just been shown, yields a $\delta>0$ so that for $|s|< \delta$, $\int_{\mathbb R^d} \cosh(dsx_j)f(x){\rm d}x < \infty$ for each $j$. It follows that for +$0 < s < \delta$, $\int_{\mathbb R^d} e^{s|x|}f(x){\rm d}x < \infty$. +\bigskip + + +\delimtitle{\bf Remark} +One might also consider the inequality $f \leqslant f \star f$ in $L^1(\mathbb R^d)$, but it is simple to construct solutions that have both signs. Consider any radial Gaussian probability density $g$, +Then $g\star g(x) \geqslant g(x)$ for all sufficiently large $|x|$, and taking $f:= ag$ for $a$ sufficiently large, we obtain $f< f\star f$ everywhere. Now on a small neighborhood of the origin, replace the value of +$f$ by $-1$. If the region is taken small enough, the new function $f$ will still satisfy $f < f\star f$ everywhere. +\endtheo +\bigskip + +We close by sketching a proof of (\ref{CLT2}) using the construction in \cite{CGR08}. Let $w$ be a mean zero, infinite variance probability density on $\mathbb R^d$. +Pick $\epsilon>0$, and choose a large value $\sigma$ such that $(2\pi \sigma^2)^{-d/2}R^d|B| < \epsilon/2$, where $|B|$ denotes the volume of the ball. The point of this is that if +$G$ is a centered Gaussian random variable with variance $\sigma^2$, the probability is no more than $\epsilon/2$ that $G$ lies in {\em any} particular translate $B_R+y$ of the ball of radius $R$. + +Let $A \subset \mathbb R^d$ be a bounded set so that $\int_{A}xw(x){\rm d}x = 0$ and $\int_{A}|x|^2w(x){\rm d}x = \sigma^2$. It is then easy to find mutually independent random variables $X$, $Y$ and $\alpha$ such that +$X$ takes values in $A$ and, has zero mean and variance greater than $\sigma^2$, $\alpha$ is a Bernoulli variable with success probability $\int_{A}w(x){\rm d}x$, which we can take arbitrarily close to $1$ by +increasing the size of $A$, and finally such that $\alpha X + (1-\alpha)Y $ has the probability density $w$. Taking independent i.i.d. sequences of such random variables, $w(n^{1/2}x)n^{d/2}$ is the probability density of +${\displaystyle W_n := \frac{1}{\sqrt{n}}\sum_{j=1}^n \alpha_j X_j + \frac{1}{\sqrt{n}} \sum_{j=1}^n(1-\alpha_j)Y_j}$. +We are interested in estimating the expectation of $1_{B_R}(W_n)$. We first take the conditional expectation, given the values of the $\alpha$'s and the $Y$'s. These conditional expectations have the form +${\mathbb E}\left[ 1_{B_R + y}\left( \frac{1}{\sqrt{n}}\sum_{j=1}^n \alpha_j X_j \right)\right]$ +for some translate $B_R +y$ of the unit Ball. Since $A$ is bounded, the $X_j$'s all have the same finite third moment, and now the Berry-Esseen Theorem \cite{B41,E42}, a version of the Central Limit Theorem +with rate information, allows us to control the error in approximating this expectation by +$\mathbb{E}(1_{B_R +y}(G))$ where $G$ is centered Gaussian with variance $\sigma^2$. By the choice of $\sigma$, this is no greater than $\epsilon/2$, independent of $y$. For $n$ large enough, +the remaining errors -- coming from the small probability that $\sum_{n=1}^n \alpha_j$ is significantly less $n$, and the error bound provided by the Berry-Esseen Theorem, are readily absorbed into the remaining +$\epsilon/2$ for large $n$. Thus for all sufficiently large $n$, the integral in (\ref{CLT2}) is no more than $\epsilon$. + + +\vfill +\eject +{\bf Acknowledgements}: + +U.S.~National Science Foundation grants DMS-1764254 (E.A.C.), DMS-1802170 (I.J.) and NSF grant DMS-1856645 (M.P.L) are gratefully acknowledged. +\vskip20pt + +\begin{thebibliography}{WWW99} + +\bibitem[B41]{B41} A. Berry, {\em The Accuracy of the Gaussian Approximation to the Sum of Independent Variates}. Trans. of the A.M.S. {\bf 49} (1941),122-136. + +\bibitem[CGR08]{CGR08} E.A. Carlen, E. Gabetta and E. Regazzini, {\it Probabilistic investigation on explosion of solutions of the Kac equation with infintte initial energy}, J. Appl. Prob. {\bf 45} (2008), 95-106 + +\bibitem[CJL19]{CJL19} E.A. Carlen, I. Jauslin and E.H. Lieb, {Analysis of a simple equation for the ground state energy of the Bose gas}, arXiv preprint arXiv:1912.04987. + +\bibitem[E42]{E42} C.-G. Esseen, {\em A moment inequality with an application to the central limit theorem}. Skand. Aktuarietidskr. {\bf 39} 160-170. + +\bibitem[LL96]{LL96} E.H. Lieb and M. Loss, {\em Analysis}, Graduate Studies in Mathematics {\bf 14}, A.M.S., Providence RI, 1996. + +\bibitem[SW71]{SW71} E. Stein and G. Weiss, {\em Introduction to Fourier analysis on Euclidean spaces}, Princeton University Press, Princeton NJ, 1971. + + + + + +\end{thebibliography} + +\end{document} diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..dba0d1f --- /dev/null +++ b/Makefile @@ -0,0 +1,34 @@ +PROJECTNAME=$(basename $(wildcard *.tex)) +LIBS=$(notdir $(wildcard libs/*)) + +PDFS=$(addsuffix .pdf, $(PROJECTNAME)) +SYNCTEXS=$(addsuffix .synctex.gz, $(PROJECTNAME)) + +all: $(PROJECTNAME) + +$(PROJECTNAME): $(LIBS) + pdflatex -file-line-error $@.tex + pdflatex -file-line-error $@.tex + pdflatex -synctex=1 $@.tex + +$(SYNCTEXS): $(LIBS) + pdflatex -synctex=1 $(patsubst %.synctex.gz, %.tex, $@) + +libs: $(LIBS) + +$(LIBS): + ln -fs libs/$@ ./ + +clean-aux: + rm -f $(addsuffix .aux, $(PROJECTNAME)) + rm -f $(addsuffix .log, $(PROJECTNAME)) + rm -f $(addsuffix .out, $(PROJECTNAME)) + rm -f $(addsuffix .toc, $(PROJECTNAME)) + +clean-libs: + rm -f $(LIBS) + +clean-tex: + rm -f $(PDFS) $(SYNCTEXS) + +clean: clean-aux clean-tex clean-libs diff --git a/README b/README new file mode 100644 index 0000000..e134967 --- /dev/null +++ b/README @@ -0,0 +1,31 @@ +This directory contains the source files to typeset the article. 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 + color + hyperref + latex + marginnote + GNU make + +* Files: + + Carlen_Jauslin_Lieb_Loss_2020.tex: + main LaTeX file + + libs: + custom LaTeX class file + diff --git a/libs/ian.cls b/libs/ian.cls new file mode 100644 index 0000000..aec99ad --- /dev/null +++ b/libs/ian.cls @@ -0,0 +1,673 @@ +%% +%% Ian's class file +%% + +%% TeX format +\NeedsTeXFormat{LaTeX2e}[1995/12/01] + +%% class name +\ProvidesClass{ian}[2017/09/29] + +%% 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} + \RequirePackage{amssymb} + \PassOptionsToPackage{hidelinks}{hyperref} + \RequirePackage{hyperref} +} + +%% paper dimensions +\setlength\paperheight{297mm} +\setlength\paperwidth{210mm} + +%% fonts +\input{size11.clo} +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} + +%% text dimensions +\hoffset=-50pt +\voffset=-72pt +\textwidth=460pt +\textheight=704pt + + +%% remove default indentation +\parindent=0pt +%% indent command +\def\indent{\hskip20pt} + +%% something is wrong with \thepage, redefine it +\gdef\thepage{\the\c@page} + +%% array lines (to use the array environment) +\setlength\arraycolsep{5\p@} +\setlength\arrayrulewidth{.4\p@} + + +%% correct vertical alignment at the end of a document +\AtEndDocument{ + \vfill + \eject +} + + +%% hyperlinks +% hyperlinkcounter +\newcounter{lncount} +% hyperref anchor +\def\hrefanchor{% +\stepcounter{lncount}% +\hypertarget{ln.\thelncount}{}% +} + +%% define a command and write it to aux file +\def\outdef#1#2{% + % define command% + \expandafter\xdef\csname #1\endcsname{#2}% + % hyperlink number% + \expandafter\xdef\csname #1@hl\endcsname{\thelncount}% + % write command to aux% + \immediate\write\@auxout{\noexpand\expandafter\noexpand\gdef\noexpand\csname #1\endcsname{\csname #1\endcsname}}% + \immediate\write\@auxout{\noexpand\expandafter\noexpand\gdef\noexpand\csname #1@hl\endcsname{\thelncount}}% +} + +%% can call commands even when they are not defined +\def\safe#1{% + \ifdefined#1% + #1% + \else% + {\color{red}\bf?}% + \fi% +} + +%% define a label for the latest tag +%% label defines a command containing the string stored in \tag +\def\deflabel{ + \def\label##1{\expandafter\outdef{label@##1}{\safe\tag}} + + \def\ref##1{% + % check whether the label is defined (hyperlink runs into errors if this check is omitted) + \ifcsname label@##1@hl\endcsname% + \hyperlink{ln.\csname label@##1@hl\endcsname}{{\color{blue}\safe\csname label@##1\endcsname}}% + \else% + \ifcsname label@##1\endcsname% + {\color{blue}\csname ##1\endcsname}% + \else% + {\bf ??}% + \fi% + \fi% + } +} + + +%% make a custom link at any given location in the document +\def\makelink#1#2{% + \hrefanchor% + \outdef{label@#1}{#2}% +} + + +%% section command +% counter +\newcounter{sectioncount} +% space before section +\newlength\secskip +\setlength\secskip{40pt} +% a prefix to put before the section number, e.g. A for appendices +\def\sectionprefix{} +% define some lengths +\newlength\secnumwidth +\newlength\sectitlewidth +\def\section#1{ + % reset counters + \stepcounter{sectioncount} + \setcounter{subsectioncount}{0} + \ifsectionsineq + \setcounter{seqcount}0 + \fi + \ifsectionsinfig + \setcounter{figcount}0 + \fi + + % space before section (if not first) + \ifnum\thesectioncount>1 + \vskip\secskip + \penalty-1000 + \fi + + % hyperref anchor + \hrefanchor + % define tag (for \label) + \xdef\tag{\sectionprefix\thesectioncount} + + % get widths + \def\@secnum{{\bf\Large\sectionprefix\thesectioncount.\hskip10pt}} + \settowidth\secnumwidth{\@secnum} + \setlength\sectitlewidth\textwidth + \addtolength\sectitlewidth{-\secnumwidth} + + % print name + \parbox{\textwidth}{ + \@secnum + \parbox[t]{\sectitlewidth}{\Large\bf #1}} + + % write to table of contents + \iftoc + % save lncount in aux variable which is written to toc + \immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@sec.\thesectioncount\endcsname{\thelncount}} + \write\tocoutput{\noexpand\tocsection{#1}{\thepage}} + \fi + + %space + \par\penalty10000 + \bigskip\penalty10000 +} + +%% subsection +% counter +\newcounter{subsectioncount} +% space before subsection +\newlength\subsecskip +\setlength\subsecskip{30pt} +\def\subsection#1{ + % counters + \stepcounter{subsectioncount} + \setcounter{subsubsectioncount}{0} + \ifsubsectionsineq + \setcounter{seqcount}0 + \fi + \ifsubsectionsinfig + \setcounter{figcount}0 + \fi + + % space before subsection (if not first) + \ifnum\thesubsectioncount>1 + \vskip\subsecskip + \penalty-500 + \fi + + % hyperref anchor + \hrefanchor + % define tag (for \label) + \xdef\tag{\sectionprefix\thesectioncount.\thesubsectioncount} + + % get widths + \def\@secnum{{\bf\large\hskip.5cm\sectionprefix\thesectioncount.\thesubsectioncount.\hskip5pt}} + \settowidth\secnumwidth{\@secnum} + \setlength\sectitlewidth\textwidth + \addtolength\sectitlewidth{-\secnumwidth} + % print name + \parbox{\textwidth}{ + \@secnum + \parbox[t]{\sectitlewidth}{\large\bf #1}} + + % write to table of contents + \iftoc + % save lncount in aux variable which is written to toc + \immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@subsec.\thesectioncount.\thesubsectioncount\endcsname{\thelncount}} + \write\tocoutput{\noexpand\tocsubsection{#1}{\thepage}} + \fi + + % space + \par\penalty10000 + \medskip\penalty10000 +} + +%% subsubsection +% counter +\newcounter{subsubsectioncount} +% space before subsubsection +\newlength\subsubsecskip +\setlength\subsubsecskip{20pt} +\def\subsubsection#1{ + % counters + \stepcounter{subsubsectioncount} + + % space before subsubsection (if not first) + \ifnum\thesubsubsectioncount>1 + \vskip\subsubsecskip + \penalty-500 + \fi + + % hyperref anchor + \hrefanchor + % define tag (for \label) + \xdef\tag{\sectionprefix\thesectioncount.\thesubsectioncount.\thesubsubsectioncount} + + % get widths + \def\@secnum{{\bf\hskip1.cm\sectionprefix\thesectioncount.\thesubsectioncount.\thesubsubsectioncount.\hskip5pt}} + \settowidth\secnumwidth{\@secnum} + \setlength\sectitlewidth\textwidth + \addtolength\sectitlewidth{-\secnumwidth} + % print name + \parbox{\textwidth}{ + \@secnum + \parbox[t]{\sectitlewidth}{\large\bf #1}} + + % write to table of contents + \iftoc + % save lncount in aux variable which is written to toc + \immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@subsubsec.\thesectioncount.\thesubsectioncount.\thesubsubsectioncount\endcsname{\thelncount}} + \write\tocoutput{\noexpand\tocsubsubsection{#1}{\thepage}} + \fi + + % space + \par\penalty10000 + \medskip\penalty10000 +} + +%% itemize +\newlength\itemizeskip +% left margin for items +\setlength\itemizeskip{20pt} +\newlength\itemizeseparator +% space between the item symbol and the text +\setlength\itemizeseparator{5pt} +% penalty preceding an itemize +\newcount\itemizepenalty +\itemizepenalty=0 +% counter counting the itemize level +\newcounter{itemizecount} + +% item symbol +\def\itemizept#1{ + \ifnum#1=1 + \textbullet + \else + $\scriptstyle\blacktriangleright$ + \fi +} + + +\newlength\current@itemizeskip +\setlength\current@itemizeskip{0pt} +\def\itemize{% + \par\expandafter\penalty\the\itemizepenalty\medskip\expandafter\penalty\the\itemizepenalty% + \addtocounter{itemizecount}{1}% + \addtolength\current@itemizeskip{\itemizeskip}% + \leftskip\current@itemizeskip% +} +\def\enditemize{% + \addtocounter{itemizecount}{-1}% + \addtolength\current@itemizeskip{-\itemizeskip}% + \par\expandafter\penalty\the\itemizepenalty\leftskip\current@itemizeskip% + \medskip\expandafter\penalty\the\itemizepenalty% +} + +% item, with optional argument to specify the item point +% @itemarg is set to true when there is an optional argument +\newif\if@itemarg +\def\item{% + % check whether there is an optional argument (if there is none, add on empty '[]') + \@ifnextchar [{\@itemargtrue\@itemx}{\@itemargfalse\@itemx[]}% +} +\newlength\itempt@total +\def\@itemx[#1]{ + \if@itemarg + \settowidth\itempt@total{#1} + \else + \settowidth\itempt@total{\itemizept\theitemizecount} + \fi + \addtolength\itempt@total{\itemizeseparator} + \par + \medskip + \if@itemarg + \hskip-\itempt@total#1\hskip\itemizeseparator + \else + \hskip-\itempt@total\itemizept\theitemizecount\hskip\itemizeseparator + \fi +} + +%% prevent page breaks after itemize +\newcount\previtemizepenalty +\def\nopagebreakafteritemize{ + \previtemizepenalty=\itemizepenalty + \itemizepenalty=10000 +} +%% back to previous value +\def\restorepagebreakafteritemize{ + \itemizepenalty=\previtemizepenalty +} + +%% 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 + \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 diff --git a/libs/iantheo.sty b/libs/iantheo.sty new file mode 100644 index 0000000..d33a93d --- /dev/null +++ b/libs/iantheo.sty @@ -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 diff --git a/libs/point.sty b/libs/point.sty new file mode 100644 index 0000000..da06361 --- /dev/null +++ b/libs/point.sty @@ -0,0 +1,107 @@ +%% +%% Points package: +%% \point commands +%% + +%% TeX format +\NeedsTeXFormat{LaTeX2e}[1995/12/01] + +%% package name +\ProvidesPackage{point}[2017/06/13] + +%% options +\newif\ifresetatsection +\DeclareOption{reset_at_section}{\resetatsectiontrue} +\DeclareOption{no_reset_at_section}{\resetatsectionfalse} +\newif\ifresetatsubsection +\DeclareOption{reset_at_subsection}{\resetatsubsectiontrue} +\DeclareOption{no_reset_at_subsection}{\resetatsubsectionfalse} +\newif\ifresetattheo +\DeclareOption{reset_at_theo}{\resetattheotrue} +\DeclareOption{no_reset_at_theo}{\resetattheofalse} + +\def\point@defaultoptions{ + \ExecuteOptions{reset_at_section, reset_at_subsection, no_reset_at_theo} + \ProcessOptions + + %% reset at every new section + \ifresetatsection + \let\point@oldsection\section + \gdef\section{\resetpointcounter\point@oldsection} + \fi + %% reset at every new subsection + \ifresetatsubsection + \let\point@oldsubsection\subsection + \gdef\subsection{\resetpointcounter\point@oldsubsection} + \fi + + %% reset at every new theorem + \ifresetattheo + \ifdefined\iantheotrue + \let\point@oldtheo\theo + \gdef\theo{\resetpointcounter\point@oldtheo} + \fi + \fi +} + + +%% point +% counter +\newcounter{pointcount} +\def\point{ + \stepcounter{pointcount} + \setcounter{subpointcount}{0} + % hyperref anchor (only if the class is 'ian') + \ifdefined\ifianclass + \hrefanchor + % define tag (for \label) + \xdef\tag{\arabic{pointcount}} + \fi + % header + \indent{\bf \arabic{pointcount}\ - } +} + +%% 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{\arabic{pointcount}-\arabic{subpointcount}} + \fi + % header + \indent\hskip.5cm{\bf \arabic{pointcount}-\arabic{subpointcount}\ - } +} + +%% 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{\arabic{pointcount}-\arabic{subpointcount}-\arabic{subsubpointcount}} + \fi + \indent\hskip1cm{\bf +\arabic{pointcount}-\arabic{subpointcount}-\arabic{subsubpointcount}\ - } +} + + +%% reset point counters +\def\resetpointcounter{ + \setcounter{pointcount}{0} + \setcounter{subpointcount}{0} + \setcounter{subsubpointcount}{0} +} + + + +%% end +\point@defaultoptions +\endinput