From: Benjamin Auder Date: Wed, 4 Feb 2015 16:26:32 +0000 (+0100) Subject: recompile slides (JdS 2014) X-Git-Url: https://git.auder.net/js/pieces/%7B%7B%20asset%28%27mixstore/doc/R.css?a=commitdiff_plain;h=3e5dbc70596573851076afe1f5121eefdc02b567;p=ppam-mpi.git recompile slides (JdS 2014) --- diff --git a/.gitignore b/.gitignore index 9baa2c6..112c581 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,9 @@ /code/build/* /code/data/src/ + +*.aux +*.log +*.nav +*.snm +*.toc +*.out diff --git a/latex/slides/201402-JClust.pdf b/latex/slides/201402-JClust.pdf index cd64e26..165bbb0 100644 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 index 0000000..2539fdd --- /dev/null +++ b/latex/slides/bbold.sty @@ -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 index 0000000..fb6e197 --- /dev/null +++ b/latex/slides/dashundergaps.sty @@ -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 index 0000000..8be0422 --- /dev/null +++ b/latex/slides/dsfont.sty @@ -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 index 0000000..b044e96 --- /dev/null +++ b/latex/slides/framed.sty @@ -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 index 0000000..19c55a3 Binary files /dev/null and b/latex/slides/slides.pdf differ diff --git a/latex/slides/slides.tex b/latex/slides/slides.tex index 309dd23..8606bda 100644 --- a/latex/slides/slides.tex +++ b/latex/slides/slides.tex @@ -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 index 0000000..02ae0cb --- /dev/null +++ b/latex/slides/wrapfig.sty @@ -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}
<\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: ^ ` ' " ~ _ + +