recompile slides (JdS 2014)
authorBenjamin Auder <benjamin.a@mailoo.org>
Wed, 4 Feb 2015 16:26:32 +0000 (17:26 +0100)
committerBenjamin Auder <benjamin.a@mailoo.org>
Wed, 4 Feb 2015 16:26:32 +0000 (17:26 +0100)
.gitignore
latex/slides/201402-JClust.pdf
latex/slides/bbold.sty [new file with mode: 0644]
latex/slides/dashundergaps.sty [new file with mode: 0644]
latex/slides/dsfont.sty [new file with mode: 0644]
latex/slides/framed.sty [new file with mode: 0644]
latex/slides/slides.pdf [new file with mode: 0644]
latex/slides/slides.tex
latex/slides/wrapfig.sty [new file with mode: 0644]

index 9baa2c6..112c581 100644 (file)
@@ -1,2 +1,9 @@
 /code/build/*
 /code/data/src/
+
+*.aux
+*.log
+*.nav
+*.snm
+*.toc
+*.out
index cd64e26..165bbb0 100644 (file)
Binary files a/latex/slides/201402-JClust.pdf and b/latex/slides/201402-JClust.pdf differ
diff --git a/latex/slides/bbold.sty b/latex/slides/bbold.sty
new file mode 100644 (file)
index 0000000..2539fdd
--- /dev/null
@@ -0,0 +1,45 @@
+%%
+%% This is file `bbold.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% bbold.dtx  (with options: `package')
+%% 
+%% IMPORTANT NOTICE:
+%% 
+%% For the copyright see the source file.
+%% 
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from bbold.sty.
+%% 
+%% For distribution of the original source see the terms
+%% for copying and modification in the file bbold.dtx.
+%% 
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+%% \CharacterTable
+%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%%   Digits        \0\1\2\3\4\5\6\7\8\9
+%%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%%   Dollar        \$     Percent       \%     Ampersand     \&
+%%   Acute accent  \'     Left paren    \(     Right paren   \)
+%%   Asterisk      \*     Plus          \+     Comma         \,
+%%   Minus         \-     Point         \.     Solidus       \/
+%%   Colon         \:     Semicolon     \;     Less than     \<
+%%   Equals        \=     Greater than  \>     Question mark \?
+%%   Commercial at \@     Left bracket  \[     Backslash     \\
+%%   Right bracket \]     Circumflex    \^     Underscore    \_
+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%%   Right brace   \}     Tilde         \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{bbold}[1994/04/06 Bbold symbol package]
+\newcommand{\bbfamily}{\fontencoding{U}\fontfamily{bbold}\selectfont}
+\newcommand{\textbb}[1]{{\bbfamily#1}}
+\DeclareMathAlphabet{\mathbb}{U}{bbold}{m}{n}
+\endinput
+%%
+%% End of file `bbold.sty'.
diff --git a/latex/slides/dashundergaps.sty b/latex/slides/dashundergaps.sty
new file mode 100644 (file)
index 0000000..fb6e197
--- /dev/null
@@ -0,0 +1,78 @@
+%% This is file `dashundergaps.sty' v1.2 by Merciadri Luca.
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{dashundergaps}[2010/01/20 Dashing and underlining (phantom) text]
+\PackageInfo{dashundergaps}{This is DashUnderGaps by Merciadri Luca.}
+
+\RequirePackage{ifthen}[1994/06/01]
+\PassOptionsToPackage{normalem}{ulem}
+\RequirePackage{ulem}
+\newboolean{dot} % false at start
+\newboolean{dash} % false at start
+
+
+\DeclareOption{dash}{%
+\typeout{Dashing mode activated!}
+\setboolean{dash}{true}
+\providecommand{\dashuline}{\bgroup
+\ifdim\ULdepth=\maxdimen
+\settodepth\ULdepth{(j}\advance\ULdepth.4pt\fi
+\markoverwith{\kern.15em
+\vtop{\kern\ULdepth \hrule width .3em}%
+\kern.15em}\ULon}
+}
+
+
+\DeclareOption{dot}{%
+\typeout{Dotting mode activated!}
+\setboolean{dot}{true}
+\providecommand{\dotuline}{\bgroup
+\ifdim\ULdepth=\maxdimen
+\settodepth\ULdepth{(j}\advance\ULdepth.4pt\fi
+\markoverwith{\begingroup
+\advance\ULdepth0.08ex
+\lower\ULdepth\hbox{\kern.15em .\kern.1em}%
+\endgroup}\ULon}
+}
+
+
+\DeclareOption{phantomtext}{%
+\typeout{Phantom mode activated! All the gaps will be filled.}
+\newboolean{teachernotes} % false at start
+\newcounter{nb-gaps}
+\setcounter{nb-gaps}{1}
+\newcounter{nth-gaps}
+\setcounter{nth-gaps}{1}
+
+\def\phantom@putbox{\ifx\UL@start\@empty \else % not inner
+  \vrule\@width\z@ \LA@penalty\@M
+  {\UL@skip\wd\UL@box \UL@leaders \kern-\UL@skip}%
+  \hbox to\wd\UL@box{}\fi}%
+
+\providecommand{\gap}[1]{%
+\bgroup
+\let\UL@putbox=\phantom@putbox
+\ifthenelse{\boolean{teachernotes}}
+{\textbf{#1} (\arabic{nth-gaps})}
+{\ifthenelse{\boolean{dash} \AND \boolean{dot}}{\uline{#1}(\arabic{nth-gaps})}{\ifthenelse{\boolean{dash}}{\dashuline{#1} (\arabic{nth-gaps})}{\ifthenelse{\boolean{dot}}{\dotuline{#1} (\arabic{nth-gaps})}{\uline{#1} (\arabic{nth-gaps})}}}
+}
+\addtocounter{nb-gaps}{1}
+\addtocounter{nth-gaps}{1}
+\egroup
+}}
+
+
+\DeclareOption{teachernotes}{%
+\typeout{Phantom mode deactivated! All the gaps will be filled with their content.}
+\setboolean{teachernotes}{true}
+}
+
+
+\DeclareOption{displaynbgaps}{%
+\typeout{Gaps counting mode activated!}
+\addtocounter{nb-gaps}{-1}
+\AtEndDocument{\vfill \centering \bfseries GAPS: \arabic{nb-gaps}.}
+}
+
+\ProcessOptions\relax
+
diff --git a/latex/slides/dsfont.sty b/latex/slides/dsfont.sty
new file mode 100644 (file)
index 0000000..8be0422
--- /dev/null
@@ -0,0 +1,9 @@
+\ProvidesPackage{dsfont}
+  [1995/08/01 v0.1 Double stroke roman fonts]
+
+\def\ds@whichfont{dsrom}
+\DeclareOption{sans}{\def\ds@whichfont{dsss}}
+\ProcessOptions\relax
+
+\DeclareMathAlphabet{\mathds}{U}{\ds@whichfont}{m}{n}
+\endinput
diff --git a/latex/slides/framed.sty b/latex/slides/framed.sty
new file mode 100644 (file)
index 0000000..b044e96
--- /dev/null
@@ -0,0 +1,548 @@
+% framed.sty   v 0.96    2011/10/22
+% Copyright (C) 1992-2011 by Donald Arseneau  (asnd@triumf.ca)
+% These macros may be freely transmitted, reproduced, or modified
+% for any purpose provided that this notice is left intact.
+% 
+%====================== Begin Instructions =======================
+%
+%                       framed.sty
+%                       ~~~~~~~~~~
+% Create framed, shaded, or differently highlighted regions that can 
+% break across pages.  The environments defined are 
+%   framed     - ordinary frame box (\fbox) with edge at margin
+%   oframed    - framed with open top/bottom at page breaks
+%   shaded     - shaded background (\colorbox) bleeding into margin
+%   shaded*    - shaded background (\colorbox) with edge at margin
+%   snugshade  - shaded with tight fit around text (esp. in lists)
+%   snugshade* - like snugshade with shading edge at margin
+%   leftbar    - thick vertical line in left margin
+% 
+% to be used like
+% \begin{framed}
+%  copious text
+% \end{framed}
+%
+% But the more general purpose of this package is to facilitate the
+% definition of new environments that take multi-line material,
+% wrap it with some non-breakable formatting (some kind of box or
+% decoration) and allow page breaks in the material.  Such environments
+% are defined to declare (or use) \FrameCommand for applying the boxy 
+% decoration, and \MakeFramed{settings} ... \endMakeFramed wrapped
+% around the main text argument (environment body).
+%
+% The "framed" environment uses "\fbox", by default, as its "\FrameCommand"
+% with the additional settings "\fboxrule=\FrameRule" and "\fboxsep=\FrameSep".
+% You can change these lengths (using "\setlength") and you can change 
+% the definition of "\FrameCommand" to use much fancier boxes.  
+%
+% In fact, the "shaded" environment just redefines \FrameCommand to be
+% "\colorbox{shadecolor}" (and you have to define the color `"shadecolor"':
+% "\definecolor{shadecolor}...").
+%
+% Although the intention is for other packages to define the varieties
+% of decoration, a command "\OpenFbox" is defined for frames with open 
+% tops or bottoms, and used for the "oframed" environment.  This facility
+% is based on a more complex and capable command "\CustomFBox" which can
+% be used for a wider range of frame styles.  One such style of a title-bar
+% frame with continuation marks is provided as an example.  It is used by
+% the "titled-frame" environment.  To make use of "titled-frame" in your
+% document, or the "\TitleBarFrame" command in your own environment
+% definitions, you must define the colors TFFrameColor (for the frame)
+% and a contrasting TFTitleColor (for the title text).
+%
+% A page break is allowed, and even encouraged, before the framed
+% environment.  If you want to attach some text (a box title) to the
+% frame, then the text should be inserted by \FrameCommand so it cannot
+% be separated from the body.
+%
+% The contents of the framed regions are restricted: 
+% Floats, footnotes, marginpars and head-line entries will be lost.
+% (Some of these may be handled in a later version.)
+% This package will not work with the page breaking of multicol.sty,
+% or other systems that perform column-balancing.
+%
+% The MakeFramed environment does the work.  Its `settings' argument
+% should contain any adjustments to the text width (via a setting of
+% "\hsize"). Here, the parameter "\width" gives the measured extra width
+% added by the frame, so a common setting is "\advance\hsize-\width"
+% which reduces the width of the text just enough that the outer edge
+% of the frame aligns with the margins.  The `settings' should also
+% include a `restore' command -- "\@parboxrestore" or "\FrameRestore"
+% or something similar; for instance, the snugshade environment uses
+% settings to eliminate list indents and vertical space, but uses
+% "\hspace" in "\FrameCommand" to reproduce the list margin ouside the
+% shading.
+%
+% There are actually four variants of "\FrameCommand" to allow different
+% formatting for each part of an environment broken over pages.  Unbroken
+% text is adorned by "\FrameCommand", whereas split text first uses 
+% "\FirstFrameCommand", possibly followed by "\MidFrameCommand", and
+% finishing with "\LastFrameCommand".  The default definitions for 
+% these three just invokes "\FrameCommand", so that all portions are
+% framed the same way.  See the oframe environment for use of distinct
+% First/Mid/Last frames.
+%
+% Expert commands:
+% \MakeFramed, \endMakeFramed: the "MakeFramed" environment
+% \FrameCommand: command to draw the frame around its argument
+% \FirstFrameCommand: the frame for the first part of a split environment
+% \LastFrameCommand: for the last portion
+% \MidFrameCommand: for any intermediate segments
+% \FrameRestore: restore some text settings, but fewer than \@parboxrestore
+% \FrameRule: length register; \fboxrule for default "framed".
+% \FrameSep: length register; \fboxsep for default "framed".
+% \FrameHeightAdjust: macro; height of frame above baseline at top of page
+% \OuterFrameSep: vertical space before and after the framed env. Defaults to "\topsep"
+%
+% This is still a `pre-production' version because I can think of many
+% features/improvements that should be made.  Also, a detailed manual needs
+% to be written.  Nevertheless, starting with version 0.5 it should be bug-free.
+%
+% ToDo: 
+% Test more varieties of list 
+% Improve and correct documentation
+% Propagation of \marks
+% Handle footnotes (how??) floats (?) and marginpars.
+% Stretchability modification.
+% Make inner contents height/depth influence placement.
+%======================== End Instructions ========================
+
+\ProvidesPackage{framed}[2011/10/22 v 0.96: 
+   framed or shaded text with page breaks]
+
+\newenvironment{framed}% using default \FrameCommand
+  {\MakeFramed {\advance\hsize-\width \FrameRestore}}%
+  {\endMakeFramed}
+
+\newenvironment{shaded}{%
+  \def\FrameCommand{\fboxsep=\FrameSep \colorbox{shadecolor}}%
+  \MakeFramed {\FrameRestore}}%
+ {\endMakeFramed}
+
+\newenvironment{shaded*}{%
+  \def\FrameCommand{\fboxsep=\FrameSep \colorbox{shadecolor}}%
+  \MakeFramed {\advance\hsize-\width \FrameRestore}}%
+ {\endMakeFramed}
+
+\newenvironment{leftbar}{%
+  \def\FrameCommand{\vrule width 3pt \hspace{10pt}}%
+  \MakeFramed {\advance\hsize-\width \FrameRestore}}%
+ {\endMakeFramed}
+
+% snugshde:  Shaded environment that 
+%  -- uses the default \fboxsep instead of \FrameSep
+%  -- leaves the text indent unchanged (shading bleeds out)
+%  -- eliminates possible internal \topsep glue (\@setminipage)
+%  -- shrinks inside the margins for lists
+%  An \item label will tend to hang outside the shading, thanks to
+%  the small \fboxsep.
+
+\newenvironment{snugshade}{%
+  \def\FrameCommand##1{\hskip\@totalleftmargin \hskip-\fboxsep
+  \colorbox{shadecolor}{##1}\hskip-\fboxsep
+      % There is no \@totalrightmargin, so:
+      \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}%
+  \MakeFramed {\advance\hsize-\width 
+    \@totalleftmargin\z@ \linewidth\hsize
+    \@setminipage}%
+ }{\par\unskip\@minipagefalse\endMakeFramed}
+
+\newenvironment{snugshade*}{%
+  \def\FrameCommand##1{\hskip\@totalleftmargin 
+  \colorbox{shadecolor}{##1}%
+      % There is no \@totalrightmargin, so:
+      \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}%
+  \MakeFramed {\advance\hsize-\width 
+    \@totalleftmargin\z@ \linewidth\hsize
+    \advance\labelsep\fboxsep
+    \@setminipage}%
+ }{\par\unskip\@minipagefalse\endMakeFramed}
+
+\newenvironment{oframed}{% open (top or bottom) framed
+  \def\FrameCommand{\OpenFBox\FrameRule\FrameRule}%
+  \def\FirstFrameCommand{\OpenFBox\FrameRule\z@}%
+  \def\MidFrameCommand{\OpenFBox\z@\z@}%
+  \def\LastFrameCommand{\OpenFBox\z@\FrameRule}%
+  \MakeFramed {\advance\hsize-\width \FrameRestore}%
+  }{\endMakeFramed}
+
+% A simplified entry to \CustomFBox with two customized parameters:
+% the thicknesses of the top and bottom rules.  Perhaps we want to
+% use less \fboxsep on the open edges?
+
+\def\OpenFBox#1#2{\fboxsep\FrameSep
+   \CustomFBox{}{}{#1}{#2}\FrameRule\FrameRule}
+
+% \CustomFBox is like an amalgamation of \fbox and \@frameb@x,
+% so it can be used by an alternate to \fbox or \fcolorbox, but
+% it has more parameters for various customizations.
+% Parameter #1 is inserted (in vmode) right after the top rule 
+% (useful for a title or assignments), and #2 is similar, but
+% inserted right above the bottom rule.
+% The thicknesses of the top, bottom, left, and right rules are
+% given as parameters #3,#4,#5,#6 respectively.  They should be
+% \fboxrule or \z@ (or some other thickness).
+% The text argument is #7.
+% An instance of this can be used for the frame of \fcolorbox by
+% locally defining \fbox before \fcolorbox; e.g.,
+% \def\fbox{\CustomFBox{}{}\z@\z@\fboxrule\fboxrule}\fcolorbox
+%
+% Do we need to use different \fboxsep on different sides too?
+%
+\long\def\CustomFBox#1#2#3#4#5#6#7{%
+  \leavevmode\begingroup
+  \setbox\@tempboxa\hbox{%
+    \color@begingroup
+      \kern\fboxsep{#7}\kern\fboxsep
+    \color@endgroup}%
+  \hbox{%
+    % Here we calculate and shift for the depth.  Done in
+    % a group because one of the arguments might be \@tempdima
+    % (we could use \dimexpr instead without grouping).
+    \begingroup
+      \@tempdima#4\relax
+      \advance\@tempdima\fboxsep
+      \advance\@tempdima\dp\@tempboxa
+    \expandafter\endgroup\expandafter
+    \lower\the\@tempdima\hbox{%
+      \vbox{%
+        \hrule\@height#3\relax
+        #1%
+        \hbox{%
+          \vrule\@width#5\relax
+          \vbox{%
+            \vskip\fboxsep % maybe these should be parameters too
+            \copy\@tempboxa
+            \vskip\fboxsep}%
+          \vrule\@width#6\relax}%
+        #2%
+        \hrule\@height#4\relax}%
+    }%
+  }%
+  \endgroup
+}
+
+
+% A particular type of titled frame with continuation marks.  
+% Parameter #1 is the title, repeated on each page.
+\newenvironment{titled-frame}[1]{%
+  \def\FrameCommand{\fboxsep8pt\fboxrule2pt
+     \TitleBarFrame{\textbf{#1}}}%
+  \def\FirstFrameCommand{\fboxsep8pt\fboxrule2pt
+     \TitleBarFrame[$\blacktriangleright$]{\textbf{#1}}}%
+  \def\MidFrameCommand{\fboxsep8pt\fboxrule2pt
+     \TitleBarFrame[$\blacktriangleright$]{\textbf{#1\ (cont)}}}%
+  \def\LastFrameCommand{\fboxsep8pt\fboxrule2pt
+     \TitleBarFrame{\textbf{#1\ (cont)}}}%
+  \MakeFramed{\advance\hsize-20pt \FrameRestore}}%
+%  note: 8 + 2 + 8 + 2 = 20.  Don't use \width because the frame title
+%  could interfere with the width measurement.
+ {\endMakeFramed}
+
+% \TitleBarFrame[marker]{title}{contents}
+% Frame with a label at top, optional continuation marker at bottom right.
+% Frame color is TFFrameColor and title color is a contrasting TFTitleColor; 
+% both need to be defined before use.  The frame itself use \fboxrule and
+% \fboxsep.  If the title is omitted entirely, the title bar is omitted
+% (use a blank space to force a blank title bar).
+% 
+\newcommand\TitleBarFrame[3][]{\begingroup
+  \ifx\delimiter#1\delimiter
+    \let\TF@conlab\@empty
+  \else
+    \def\TF@conlab{% continuation label
+     \nointerlineskip
+     \smash{\rlap{\kern\wd\@tempboxa\kern\fboxrule\kern\fboxsep #1}}}%
+  \fi
+  \let\TF@savecolor\current@color
+  \textcolor{TFFrameColor}{%
+  \CustomFBox
+    {\TF@Title{#2}}{\TF@conlab}%
+    \fboxrule\fboxrule\fboxrule\fboxrule
+    {\let\current@color\TF@savecolor\set@color #3}%
+  }\endgroup
+}
+
+% The title bar for \TitleBarFrame
+\newcommand\TF@Title[1]{%
+  \ifx\delimiter#1\delimiter\else
+  \kern-0.04pt\relax
+  \begingroup
+  \setbox\@tempboxa\vbox{%
+   \kern0.8ex
+   \hbox{\kern\fboxsep\textcolor{TFTitleColor}{#1}\vphantom{Tj)}}%
+   \kern0.8ex}%
+  \hrule\@height\ht\@tempboxa
+  \kern-\ht\@tempboxa
+  \box\@tempboxa
+  \endgroup
+  \nointerlineskip 
+  \kern-0.04pt\relax
+  \fi
+}
+
+\chardef\FrameRestore=\catcode`\| % for debug
+\catcode`\|=\catcode`\% % (debug: insert space after backslash)
+
+\newlength\OuterFrameSep \OuterFrameSep=\maxdimen \relax
+
+\def\MakeFramed#1{\par
+ % apply default \OuterFrameSep = \topsep
+ \ifdim\OuterFrameSep=\maxdimen \OuterFrameSep\topsep \fi
+ % measure added width and height; call result \width and \height
+ \fb@sizeofframe\FrameCommand
+ \let\width\fb@frw \let\height\fb@frh
+ % insert pre-penalties and skips
+ \begingroup
+ \skip@\lastskip
+ \if@nobreak\else 
+    \penalty9999 % updates \page parameters
+    \ifdim\pagefilstretch=\z@ \ifdim\pagefillstretch=\z@
+       % not infinitely stretchable, so encourage a page break here
+       \edef\@tempa{\the\skip@}%
+       \ifx\@tempa\zero@glue \penalty-30
+       \else \vskip-\skip@ \penalty-30 \vskip\skip@
+    \fi\fi\fi
+    \penalty\z@
+    % Give a stretchy breakpoint that will always be taken in preference
+    % to the \penalty 9999 used to update page parameters.  The cube root
+    % of 10000/100 indicates a multiplier of 0.21545, but the maximum 
+    % calculated badness is really 8192, not 10000, so the multiplier
+    % is 0.2301. 
+    \advance\skip@ \z@ plus-.5\baselineskip
+    \advance\skip@ \z@ plus-.231\height
+    \advance\skip@ \z@ plus-.231\skip@
+    \advance\skip@ \z@ plus-.231\OuterFrameSep
+    \vskip-\skip@ \penalty 1800 \vskip\skip@
+ \fi
+ \addvspace{\OuterFrameSep}%
+ \endgroup
+ % clear out pending page break
+ \penalty\@M \vskip 2\baselineskip \vskip\height
+ \penalty9999 \vskip -2\baselineskip \vskip-\height
+ \penalty9999 % updates \pagetotal
+|\message{After clearout, \pagetotal=\the\pagetotal, \pagegoal=\the\pagegoal. }%
+ \fb@adjheight 
+ \setbox\@tempboxa\vbox\bgroup
+   #1% Modifications to \hsize (can use \width and \height)
+   \textwidth\hsize \columnwidth\hsize
+}
+
+\def\endMakeFramed{\par
+     \kern\z@
+     \hrule\@width\hsize\@height\z@ % possibly bad
+     \penalty-100 % (\hrule moves depth into height)
+ \egroup
+%%%   {\showoutput\showbox\@tempboxa}%
+ \begingroup 
+   \fb@put@frame\FrameCommand\FirstFrameCommand
+ \endgroup
+ \@minipagefalse % In case it was set and not cleared
+}
+
+% \fb@put@frame takes the contents of \@tempboxa and puts all, or a piece,
+% of it on the page with a frame (\FrameCommand, \FirstFrameCommand,
+% \MidFrameCommand, or \LastFrameCommand).  It recurses until all of 
+% \@tempboxa has been used up. (\@tempboxa must have zero depth.)
+% #1 = attempted framing command, if no split
+% #2 = framing command if split
+% First iteration: Try to fit with \FrameCommand. If it does not fit,
+% split for \FirstFrameCommand.
+% Later iteration: Try to fit with \LastFrameCommand. If it does not
+% fit, split for \MidFrameCommand.
+\def\fb@put@frame#1#2{\relax
+ \ifdim\pagegoal=\maxdimen \pagegoal\vsize \fi
+|   \message{=============== Entering putframe ====================^^J
+|     \pagegoal=\the\pagegoal,  \pagetotal=\the\pagetotal. }%
+ \ifinner
+   \fb@putboxa#1%
+   \fb@afterframe
+ \else
+  \dimen@\pagegoal \advance\dimen@-\pagetotal % natural space left on page
+  \ifdim\dimen@<2\baselineskip % Too little room on page
+|   \message{Page has only \the\dimen@\space room left; eject. }%
+    \eject \fb@adjheight \fb@put@frame#1#2%
+  \else % there's appreciable room left on the page
+     \fb@sizeofframe#1%
+|    \message{\string\pagetotal=\the\pagetotal,
+|        \string\pagegoal=\the\pagegoal,
+|        \string\pagestretch=\the\pagestretch,
+|        \string\pageshrink=\the\pageshrink,
+|        \string\fb@frh=\the\fb@frh. \space}
+|    \message{^^JBox of size \the\ht\@tempboxa\space}%
+     \begingroup % temporarily set \dimen@ to be...
+     \advance\dimen@.8\pageshrink  % maximum space available on page
+     \advance\dimen@-\fb@frh\relax % max space available for frame's contents
+%%% LOOKS SUBTRACTED AND ADDED, SO DOUBLE ACCOUNTING!
+     \expandafter\endgroup
+     % expand \ifdim, then restore \dimen@ to real room left on page
+     \ifdim\dimen@>\ht\@tempboxa % whole box does fit
+|       \message{fits in \the\dimen@. }%
+        % ToDo: Change this to use vsplit anyway to capture the marks
+        % MERGE THIS WITH THE else CLAUSE!!!
+        \fb@putboxa#1%
+        \fb@afterframe
+     \else % box must be split
+|       \message{must be split to fit in \the\dimen@. }%
+        % update frame measurement to use \FirstFrameCommand or \MidFrameCommand
+        \fb@sizeofframe#2%
+        \setbox\@tempboxa\vbox{% simulate frame and flexiblity of the page:
+           \vskip \fb@frh \@plus\pagestretch \@minus.8\pageshrink
+           \kern137sp\kern-137sp\penalty-30
+           \unvbox\@tempboxa}%
+        \edef\fb@resto@set{\boxmaxdepth\the\boxmaxdepth 
+                           \splittopskip\the\splittopskip}%
+        \boxmaxdepth\z@ \splittopskip\z@
+|       \message{^^JPadded box of size \the\ht\@tempboxa\space split to \the\dimen@}%
+        % Split box here
+        \setbox\tw@\vsplit\@tempboxa to\dimen@
+|       \toks99\expandafter{\splitfirstmark}%
+|       \toks98\expandafter{\splitbotmark}%
+|       \message{Marks are: \the\toks99, \the\toks98. }%
+        \setbox\tw@\vbox{\unvbox\tw@}% natural-sized
+|       \message{Natural height of split box is \the\ht\tw@, leaving 
+|          \the\ht\@tempboxa\space remainder. }%
+        % If the split-to size > (\vsize-\topskip), then set box to full size.
+        \begingroup
+        \advance\dimen@\topskip
+        \expandafter\endgroup
+        \ifdim\dimen@>\pagegoal
+|         \message{Frame is big -- Use up the full column. }%
+          \dimen@ii\pagegoal
+          \advance\dimen@ii -\topskip
+          \advance\dimen@ii \FrameHeightAdjust\relax
+        \else  % suspect this is implemented incorrectly:
+          % If the split-to size > feasible room_on_page, rebox it smaller.
+          \advance\dimen@.8\pageshrink
+          \ifdim\ht\tw@>\dimen@
+|           \message{Box too tall; rebox it to \the\dimen@. }%
+            \dimen@ii\dimen@
+          \else % use natural size
+            \dimen@ii\ht\tw@
+          \fi
+        \fi
+        % Re-box contents to desired size \dimen@ii
+        \advance\dimen@ii -\fb@frh
+        \setbox\tw@\vbox to\dimen@ii \bgroup
+        % remove simulated frame and page flexibility:
+        \vskip -\fb@frh \@plus-\pagestretch \@minus-.8\pageshrink
+        \unvbox\tw@ \unpenalty\unpenalty
+        \ifdim\lastkern=-137sp % whole box went to next page
+|          \message{box split at beginning! }%
+           % need work here???
+           \egroup \fb@resto@set \eject % (\vskip for frame size was discarded) 
+           \fb@adjheight
+           \fb@put@frame#1#2% INSERTED ???
+        \else % Got material split off at the head
+           \egroup \fb@resto@set
+           \ifvoid\@tempboxa % it all fit after all
+|             \message{box split at end! }%
+              \setbox\@tempboxa\box\tw@
+              \fb@putboxa#1%
+              \fb@afterframe
+           \else % it really did split
+|             \message{box split as expected. Its reboxed height is \the\ht\tw@. }%
+              \ifdim\wd\tw@>\z@
+                \wd\tw@\wd\@tempboxa
+                \centerline{#2{\box\tw@}}%  ??? \centerline bad idea
+              \else
+|               \message{Zero width means likely blank. Don't frame it (guess)}%
+                \box\tw@
+              \fi
+              \hrule \@height\z@ \@width\hsize
+              \eject
+              \fb@adjheight
+              \fb@put@frame\LastFrameCommand\MidFrameCommand
+  \fi\fi\fi\fi\fi
+}
+
+\def\fb@putboxa#1{%
+  \ifvoid\@tempboxa
+    \PackageWarning{framed}{Boxa is void -- discard it. }%
+  \else
+|   \message{Frame and place boxa. }%
+|   %{\showoutput\showbox\@tempboxa}%
+    \centerline{#1{\box\@tempboxa}}%
+  \fi
+}
+
+\def\fb@afterframe{%
+    \nointerlineskip \null %{\showoutput \showlists}
+    \penalty-30 \vskip\OuterFrameSep \relax
+}
+
+% measure width and height added by frame (#1 = frame command)
+% call results \fb@frw and \fb@frh
+% todo: a mechanism to handle wide frame titles 
+\newdimen\fb@frw
+\newdimen\fb@frh
+\def\fb@sizeofframe#1{\begingroup
+ \setbox\z@\vbox{\vskip-5in \hbox{\hskip-5in 
+   #1{\hbox{\vrule \@height 4.7in \@depth.3in \@width 5in}}}%
+   \vskip\z@skip}%
+|  \message{Measuring frame addition for \string#1 in \@currenvir\space 
+|    gives ht \the\ht\z@\space and wd \the\wd\z@. }%
+|  %{\showoutput\showbox\z@}%
+ \global\fb@frw\wd\z@ \global\fb@frh\ht\z@
+ \endgroup
+}
+
+\def\fb@adjheight{%
+  \vbox to\FrameHeightAdjust{}% get proper baseline skip from above.
+  \penalty\@M \nointerlineskip
+  \vskip-\FrameHeightAdjust
+  \penalty\@M} % useful for tops of pages
+
+\edef\zero@glue{\the\z@skip}
+
+\catcode`\|=\FrameRestore
+
+% Provide configuration commands:
+\providecommand\FrameCommand{%
+ \setlength\fboxrule{\FrameRule}\setlength\fboxsep{\FrameSep}%
+ \fbox}
+\@ifundefined{FrameRule}{\newdimen\FrameRule \FrameRule=\fboxrule}{}
+\@ifundefined{FrameSep} {\newdimen\FrameSep  \FrameSep =3\fboxsep}{}
+\providecommand\FirstFrameCommand{\FrameCommand}
+\providecommand\MidFrameCommand{\FrameCommand}
+\providecommand\LastFrameCommand{\FrameCommand}
+
+% Height of frame above first baseline when frame starts a page:
+\providecommand\FrameHeightAdjust{6pt}
+
+% \FrameRestore has parts of \@parboxrestore, performing a similar but 
+% less complete restoration of the default layout.  See how it is used in
+% the "settings" argument of \MakeFrame.  Though not a parameter, \hsize 
+% should be set to the desired total line width available inside the
+% frame before invoking \FrameRestore.  
+\def\FrameRestore{%
+   \let\if@nobreak\iffalse
+   \let\if@noskipsec\iffalse
+   \let\-\@dischyph
+   \let\'\@acci\let\`\@accii\let\=\@acciii
+   %  \message{FrameRestore:
+   %    \@totalleftmargin=\the \@totalleftmargin,
+   %    \rightmargin=\the\rightmargin, 
+   %    \@listdepth=\the\@listdepth.  }%
+   % Test if we are in a list (or list-like paragraph)
+   \ifnum \ifdim\@totalleftmargin>\z@ 1\fi  
+          \ifdim\rightmargin>\z@ 1\fi
+          \ifnum\@listdepth>\z@ 1\fi 0>\z@
+     %     \message{In a list: \linewidth=\the\linewidth, \@totalleftmargin=\the\@totalleftmargin,
+     %       \parshape=\the\parshape, \columnwidth=\the\columnwidth, \hsize=\the\hsize, 
+     %       \labelwidth=\the\labelwidth. }%
+     \@setminipage % snug fit around the item.  I would like this to be non-global.
+     % Now try to propageate changes of width from \hsize to list parameters.
+     % This is deficient, but a more advanced way to indicate modification to text 
+     % dimensions is not (yet) provided; in particular, no separate left/right
+     % adjustment.
+     \advance\linewidth-\columnwidth \advance\linewidth\hsize
+     \parshape\@ne \@totalleftmargin \linewidth
+   \else % Not in list
+     \linewidth=\hsize
+     %\message{No list, set \string\linewidth=\the\hsize. }%
+   \fi
+   \sloppy
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/latex/slides/slides.pdf b/latex/slides/slides.pdf
new file mode 100644 (file)
index 0000000..19c55a3
Binary files /dev/null and b/latex/slides/slides.pdf differ
index 309dd23..8606bda 100644 (file)
@@ -7,7 +7,7 @@
 \usepackage{amsmath, amsfonts}
 %\usepackage[francais]{babel}
 \usepackage{hyperref, url, caption, tikz}
-\usepackage{xwrapfig}
+\usepackage{wrapfig}
 %\usepackage{graphicx}
 %\hypersetup{colorlinks,linkcolor=black,urlcolor=violet}
 
diff --git a/latex/slides/wrapfig.sty b/latex/slides/wrapfig.sty
new file mode 100644 (file)
index 0000000..02ae0cb
--- /dev/null
@@ -0,0 +1,107 @@
+%
+%      W R A P F I G . S T Y
+%
+%  Copyright (C) 1991,1992 by Donald Arseneau
+%  These macros may be freely transmitted, reproduced, or modified for
+%  non-commercial purposes provided that this notice is left intact.
+%
+%  Environment "wrapfigure" to manually place a figure at the side 
+%  of the page and wrap text around it.
+%
+%  \begin{wrapfigure}[36]{r}{3in} <figure> <\caption> etc. \end{wrapfigure}
+%                     --  -  ---
+%  [number of narrow lines] {left or right} {width of figure}
+%
+% Usage:
+% This is a different type of *non-floating* figure environment for LaTeX.
+% A figure of the specified width appears on the left or right (as specified)
+% of the page. LaTeX will try to wrap text around the figure leaving a gap of 
+% \columsep by producing a number of short lines of text.  LaTeX calculates 
+% the number of short lines needed based on the height of the figure plus 
+% the length \intextsep.  You can override this guess by giving the optional 
+% argument specifying the number of shortened lines (counting each displayed 
+% equation as 3 lines).  Cautions:
+%  o Wrapfigure should not be used inside another environment (e.g., list)
+%  o It does work in two-column format, but that would be silly.
+%  o Since it does not float, it may be out of sequence with floated figures.
+%  o The automatic rules (lines) that may be placed above or below floats
+%    are ignored here.  You must insert the rules manually.
+%
+% Placement:
+% LaTeX will not move a wrapfigure to the best place, so it is up to YOU
+% to position it well.  Any changes to the document can ruin your careful
+% positioning so wrapfigures should be positioned just before printing a
+% final copy. Here are the rules for good placement:
+%  o The environment  should be placed so as to not run over a page boundary.
+%  o Only ordinary text should have to flow past the figure; no section
+%    titles please.  Equations are acceptable if they fit.
+%  o It is convenient to give \begin{wrapfigure} just after a paragraph has
+%    ended.  But if you want to start in the middle of a paragraph, you must
+%    put the environment between two words where there is a natural linebreak 
+%    (like "must" and "put" above).
+%
+\newcount \WF@wrappedlines % used globally
+
+\def\wrapfigure{\@ifnextchar[{\WF@raptfig}{\WF@raptfig[-1]}}
+
+\def\WF@raptfig[#1]#2#3{\relax\ifx\par\@@par\else\typeout
+  {WARNING: wrapfigure used inside another environment.}\fi
+  \ifnum#10>\z@ % 10*num. lines specified (0 if blank)
+    \global\WF@wrappedlines#1\global\advance\WF@wrappedlines\@ne
+  \else % calc num. lines later
+    \global\WF@wrappedlines\z@
+  \fi
+  \ifvmode % Between paragraphs: Start new one.  Text will be indented...
+    \noindent \aftergroup\indent % after the \endgroup of \end{wrapfigure}
+  \else % In paragraph: End this one so it doesn't look ended; start new one.
+    {\unskip\parfillskip\z@skip\par\penalty\interlinepenalty 
+    \parskip\z@skip\noindent}%  text will start with no indentation
+  \fi \hbox to \z@\bgroup %  llap or rlap depending on {l} or {r} parameter.
+  \@tempdimb\hsize \advance\@tempdimb-#3 \advance\@tempdimb-\columnsep
+  \if r#2\relax%  fig on right
+    \@tempdima\z@ % no hanging indentation
+    \kern-#3\kern\hsize % position to the right of the text, past gutter
+    \def\@tempa{\hss}% figure overlaps space to the right
+  \else  % fig on left
+    \@tempdima#3\advance\@tempdima\columnsep % indent past figure
+    \hss % figure overlaps space to the left
+    \def\@tempa{\kern\columnsep}% position to left of the gap
+  \fi
+  \xdef\WF@wrapil{\the\@tempdima \the\@tempdimb}% indentation and length 
+  \setbox\z@\vtop\bgroup \hsize=#3\relax \hrule \@height\z@
+  \@parboxrestore
+  \def\@captype{figure}% set up figure
+}
+
+\def\endwrapfigure{\leftline{}\egroup % ensure \hsize wide
+  \ifnum \WF@wrappedlines=\z@ % measure figure box to count lines
+    \@tempdima\dp\z@ \advance\@tempdima\intextsep 
+    \divide\@tempdima\baselineskip 
+    \global\WF@wrappedlines\@tempdima \global\advance\WF@wrappedlines\tw@
+  \fi \dp\z@\z@ \box\z@ % smash the vtop
+  \@tempa\egroup \aftergroup\WF@startwrapping \global\@ignoretrue}
+
+\def\WF@startwrapping{\everypar{\WF@setwrapping}\WF@setwrapping
+  \def\WF@savedclubp{\the\clubpenalty}\clubpenalty\@M % prevent bad pagebreak
+  \def\WF@restoretol{\tolerance\the\tolerance}\tolerance\@M
+  \def\par{\@@par \clubpenalty\WF@savedclubp  % will wrap more than one
+    \global\advance\WF@wrappedlines-\prevgraf % paragraph if necessary
+    \ifnum\WF@wrappedlines<\tw@ \everypar{}\let\par\@@par\WF@restoretol\fi
+  }}
+% Create \parshape command
+\def\WF@setwrapping{\@tempcnta\@ne \let\@tempb\relax \def\@tempc{}%
+  \@whilenum \@tempcnta<\WF@wrappedlines\do{% repeated indentation, length
+    \edef\@tempc{\@tempc\@tempb}\advance\@tempcnta\@ne
+  }\let\@tempb\WF@wrapil \parshape \WF@wrappedlines \@tempc \z@ \hsize}
+%
+% 1992: change boxing so there is no height.
+% interim version: added \@parboxrestore
+%
+% Send problem reports to asnd@Reg.TRIUMF.CA
+%
+% test integrity:
+% brackets:  round, square, curly, angle:   () [] {} <>
+% backslash, slash, vertical, at, dollar, and: \ / | @ $ &
+% hat, grave, acute (apostrophe), quote, tilde, under:   ^ ` ' " ~ _
+
+