diff --git a/.gitignore b/.gitignore index 8a8c1742..4feb2397 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,11 @@ ? ?.mes \#*# +/doc/fosdem/fosdem.aux +/doc/fosdem/fosdem.log +/doc/fosdem/fosdem.nav +/doc/fosdem/fosdem.out +/doc/fosdem/fosdem.snm +/doc/fosdem/fosdem.tex +/doc/fosdem/fosdem.toc +/doc/fosdem/fosdem.*vrb diff --git a/doc/fosdem/GuixSD.png b/doc/fosdem/GuixSD.png new file mode 100644 index 00000000..37614d95 Binary files /dev/null and b/doc/fosdem/GuixSD.png differ diff --git a/doc/fosdem/LISP-1-5-page-13-bottom.png b/doc/fosdem/LISP-1-5-page-13-bottom.png new file mode 120000 index 00000000..9f970811 --- /dev/null +++ b/doc/fosdem/LISP-1-5-page-13-bottom.png @@ -0,0 +1 @@ +LISP-1.5-page-13-bottom.png \ No newline at end of file diff --git a/doc/fosdem/LISP-1.5-page-13-bottom.png b/doc/fosdem/LISP-1.5-page-13-bottom.png new file mode 100644 index 00000000..f7db7870 Binary files /dev/null and b/doc/fosdem/LISP-1.5-page-13-bottom.png differ diff --git a/doc/fosdem/LISP-1.5-page-13.pdf b/doc/fosdem/LISP-1.5-page-13.pdf new file mode 100644 index 00000000..24bbad88 Binary files /dev/null and b/doc/fosdem/LISP-1.5-page-13.pdf differ diff --git a/doc/fosdem/LISP-1.5-page-13.png b/doc/fosdem/LISP-1.5-page-13.png new file mode 100644 index 00000000..aeb112fa Binary files /dev/null and b/doc/fosdem/LISP-1.5-page-13.png differ diff --git a/doc/fosdem/beamercolorthemeX.sty b/doc/fosdem/beamercolorthemeX.sty new file mode 100644 index 00000000..8a28fb61 --- /dev/null +++ b/doc/fosdem/beamercolorthemeX.sty @@ -0,0 +1,9 @@ +\mode + +\usecolortheme{spruce} +\setbeamercolor*{structure}{fg=blue!25!white} +\setbeamercolor*{structure}{fg=MSUgreen!80!white} +\setbeamercolor{block title}{use=structure,fg=white,bg=structure.fg!75!black} + +\mode + diff --git a/doc/fosdem/beamerthemeX.sty b/doc/fosdem/beamerthemeX.sty new file mode 100644 index 00000000..589e2bc9 --- /dev/null +++ b/doc/fosdem/beamerthemeX.sty @@ -0,0 +1,19 @@ +\mode + +\setbeamertemplate{navigation symbols}{} + +\newif\ifbeamer@secheader +\beamer@secheaderfalse + +\DeclareOptionBeamer{secheader}{\beamer@secheadertrue} +\ProcessOptionsBeamer + +\usecolortheme{X} +\useinnertheme[shadow]{rounded} +\useoutertheme{infolines} + +\ifbeamer@secheader\else\setbeamertemplate{headline}[default]\fi + +\mode + + diff --git a/doc/fosdem/bootstrap-graph.png b/doc/fosdem/bootstrap-graph.png new file mode 100644 index 00000000..3af45f03 Binary files /dev/null and b/doc/fosdem/bootstrap-graph.png differ diff --git a/doc/fosdem/egg.jpeg b/doc/fosdem/egg.jpeg new file mode 100644 index 00000000..302ab1a8 Binary files /dev/null and b/doc/fosdem/egg.jpeg differ diff --git a/doc/fosdem/egg.png b/doc/fosdem/egg.png new file mode 100644 index 00000000..a9d0ce0e Binary files /dev/null and b/doc/fosdem/egg.png differ diff --git a/doc/fosdem/egg.xcf b/doc/fosdem/egg.xcf new file mode 100644 index 00000000..ed9d7c0b Binary files /dev/null and b/doc/fosdem/egg.xcf differ diff --git a/doc/fosdem/fosdem.org b/doc/fosdem/fosdem.org new file mode 100644 index 00000000..1f89f2ba --- /dev/null +++ b/doc/fosdem/fosdem.org @@ -0,0 +1,648 @@ +#+TITLE: Mes +#+TITLE: \\\smaller[2]{Maxwell Equations of Software} +#+DATE:2017-02-05 +#+EMAIL: janneke@gnu.org +#+AUTHOR: janneke@gnu.org +#+LATEX_HEADER:\institute{FOSDEM'17} +#+LATEX_HEADER:\def\ahref#1#2{\htmladdnormallink{#2}{#1}} +#+OPTIONS: H:2 +#+LATEX_CLASS: beamer +#+LATEX_CLASS_OPTIONS: [presentation] +#+LATEX_HEADER: \usepackage{relsize} +#+LATEX_HEADER: \usepackage{hyperref} +#+LATEX_HEADER: \usepackage{html} +#+latex_header: \mode{\usetheme{X}} +#+BEAMER_THEME: X +#+BEAMER_FRAME_LEVEL: 2 +#+COLUMNS: %45ITEM %10BEAMER_ENV(Env) %10BEAMER_ACT(Act) %4BEAMER_COL(Col) %8BEAMER_OPT(Opt) + +* Mes, WHAT? + +# ** TEST +# - @@beamer:<1->@@ Item 1 +# - @@beamer:<2->@@ Item 2 + +# GNU LilyPond, Verum +# Depression: France, Netherlands, US: about 20%; 10x more than 50 years ago + +** Mes: Full Source Bootstrapping + +*** Bootstrapping :B_block:BMCOL: + :PROPERTIES: + :BEAMER_COL: 0.6 + :BEAMER_ENV: block + :END: + * Where do compilers come from? + * Who compiled the compiler? + * Chicken and Egg +*** . :B_block:BMCOL: +#+LATEX:\includegraphics[width=0.4\textwidth]{mes.png} + :PROPERTIES: + :BEAMER_COL: 0.3 + :xBEAMER_ACT: <2-> + :xBEAMER_ENV: block + :END: + + +*** mes: A tiny Scheme interpreter in Hex [or simple C?] + :PROPERTIES: + :BEAMER_ACT: <2-> + :END: + +*** mescc: A C compiler in Scheme, executed by Mes + * Mes + CC = +#+xATTR_LATEX: :=\linewidth +#+xLATEX:\includegraphics[width=0.25\textwidth]{fsb-logo.png} +#+LATEX:\rightskip=-3cm\includegraphics[width=0.2\textwidth]{fsb-logo-guile-guix-mes.png} + :PROPERTIES: + :BEAMER_ACT: <3-> + :END: + +* Mes, what NOT? + :PROPERTIES: + :xBEAMER_ENV: note + :END: + +** Mes is a strategy + * NOT a goal in itself -- only a means or proof of concept + * NOT a general purpose Scheme -- close to R6RS + * NOT an alternative for Guile -- reuse Guile modules + +* Mes, WHY? + +** Inspiration: what do you want? + +*** Meaning, Autonomy, Co-Creation, Self-Realization + * Discovering, Hacking, Motivating, Playing + :PROPERTIES: + :BEAMER_ACT: <2-> + :END: + +*** A planet of enlightened beings +# * Awakening of consciousness + * Look inward + * Be happy + * Be helpful + :PROPERTIES: + :BEAMER_ACT: <3-> + :END: +*** A world where all software is free + * Support \ahref{https://gnu.org}{GNU} + * Create free software +# * Be patient, be wise + :PROPERTIES: + :BEAMER_ACT: <4-> + :END: + +** Inspiration: when do you want it? + +*** NOW!!! + :PROPERTIES: + :BEAMER_ACT: <2-> + :END: + +** Inspiration + +*** To finally run GNU + * GuixSD: GNU in the flesh + :PROPERTIES: + :BEAMER_ACT: <1-> + :END: + +# * Michael Nielsen: \ahref{http://www.michaelnielsen.org/ddi/lisp-as-the-maxwells-equations-of-software}{Lisp as the Maxwell's Equations of Software} + +# *** recap the 4 freedoms +# :PROPERTIES: +# :BEAMER_ACT: <3-> +# :END: + +** 1941: The \ahref{https://en.wikipedia.org/wiki/Four_Freedoms}{Four Freedoms} + :PROPERTIES: + :BEAMER_ENV: note + :END: +*** for all people on our planet + + * Freedom of speech + * Freedom of worship + * Freedom from want + * Freedom from fear + +-- Franklin D. Roosevelt + +** 1984 Four Software Freedoms: GNU GPL + :PROPERTIES: + :xBEAMER_ENV: note + :END: +*** The freedom to + + * 0 run the program as you wish, for any purpose + * 1 study how the program works, and change it if you wish + * 2 redistribute copies so you can help your neighbor + * 3 share copies of your modified versions with others + +-- Richard M. Stallman + +# 1: Access to the source code is a precondition for this. + +# 3: By doing this you can give the whole community a chance to benefit +# from your changes. Access to the source code is a precondition for +# this. + +** 2013 Debian's \ahref{https://reproducible-builds.org}{reproducible-builds.org} + +*** Verifiable path: source -> binary +Reproducible builds are a set of software development practices that +create a verifiable path from human readable source code to the binary +code used by computers. + +*** Does this binary come from the given source? + * Always different binary...dunno? + * Same binary + * Always good, always bad? + +** 2015 GuixSD \ahref{https://www.gnu.org/software/guix/news/reproducible-builds-a-means-to-an-end.html}{Reproducible builds: a means to an end} + +# GNU Guix is committed to improving the freedom and autonomy of +# computer users. This obviously manifests in the fact that GuixSD is a +# fully free distro, and this is what GNU stands for. All the packages +# in Guix are built from source, including things like firmware where +# there is an unfortunate tendency to use pre-built binaries; that way, +# users can know what software they run. On the technical side, Guix +# also tries hard to empower users by making the whole system as +# hackable as possible, in a uniform way—making Freedom #1 practical, à +# la Emacs. + +*** A technical means to an end + * guarantee user autonomy and safety + * GNU+GuixSD: fully free distro + * NixOS: fully isolated build environment + * NixOS: full list of dependencies + * reproducible builds: bit-for-bit identical binaries + +-- Ludovic Courtès + +** 2016 From GuixSD to Mes: The bootstrap binaries + +*** GuixSD ... source + * source/binary transparency + * all is built from source + * *EVERYTHING* + * starting from the ... *bootstrap binaries* + + + The distribution is fully “bootstrapped” and “self-contained”: each +package is built based solely on other packages in the distribution. + +The root of this dependency graph is a small set of “bootstrap +binaries”, provided by the ‘(gnu packages bootstrap)’ module. For more +information on bootstrapping, *note Bootstrapping::. + + +[2010]: Eelco Dolstra, Andres Löh, and Nicolas Pierron described +sources of non-determinism in their 2010 JFP paper about NixOS + + +** GuixSD bootstrap graph + +#+LATEX:\includegraphics[width=0.8\textwidth]{bootstrap-graph.png} + + +** GuixSD bootstrap tarballs +#+BEGIN_SRC bash +$ du -schx $(readlink $(guix build bootstrap-tarballs)/*) +2.1M /gnu/store/mzk1bc3pfrrf4qnfs3zkj5ch83srnvpx-binutils-static-stripped-tarball-2.27/binutils-static-stripped-2.27-x86_64-linux.tar.xz +16M /gnu/store/jddviycivycfhaqahqff6n18y9w46gpz-gcc-stripped-tarball-4.9.4/gcc-stripped-4.9.4-x86_64-linux.tar.xz +1.7M /gnu/store/x5zrmh820yc054w00cy00iixwghmly2y-glibc-stripped-tarball-2.24/glibc-stripped-2.24-x86_64-linux.tar.xz +3.1M /gnu/store/znsf5d7xbqkp4rrjgzsklmwmms8m5i3m-guile-static-stripped-tarball-2.0.12/guile-static-stripped-2.0.12-x86_64-linux.tar.xz +5.7M /gnu/store/myfikfgx74dzlm3lc217kchxnckri5qq-static-binaries-tarball-0/static-binaries-0-x86_64-linux.tar.xz +28M total +$ for i in $(readlink $(guix build bootstrap-tarballs)/*);\ + do sudo tar xf $i; done +$ du -schx * +125M bin +13M include +18M lib +43M libexec +4.3M share +202M total +#+END_SRC + + +** Inspiration + +*** To finally run GNU + * GuixSD: GNU in the flesh + :PROPERTIES: + :BEAMER_ACT: <1-> + :END: +*** Bootstrap binaries: source all the way down? + * OriansJ: \ahref{https://github.com/oriansj/stage0}{self-hosting hex assembler} + :PROPERTIES: + :BEAMER_ACT: <1-> + :END: +*** The computer revolution hasn't happened yet + * Alan Kay + :PROPERTIES: + :BEAMER_ACT: <2-> + :END: +The computer revolution is very new, and all of the good ideas have +not been universally implemented + +** Bootstrapping: Chicken and Egg + +#+LATEX:\includegraphics[width=0.3\textwidth]{egg.png} + +** Inspiration + +*** To finally run GNU + * GuixSD: GNU in the flesh + :PROPERTIES: + :BEAMER_ACT: <1-> + :END: +*** Bootstrap binaries: source all the way down? + * OriansJ: \ahref{https://github.com/oriansj/stage0}{self-hosting hex assembler} + :PROPERTIES: + :BEAMER_ACT: <1-> + :END: +*** The computer revolution hasn't happened yet + * Alan Kay + :PROPERTIES: + :BEAMER_ACT: <1-> + :END: +The computer revolution is very new, and all of the good ideas have +not been universally implemented +*** \ahref{http://queue.acm.org/detail.cfm?id=1039523}{LISP as the Maxwell's Equations of Software} + :PROPERTIES: + :BEAMER_ACT: <1-> + :END: +That was the big revelation to me when I [..] finally understood that +the half page of code on the bottom of page 13 of the Lisp 1.5 manual +was Lisp in itself. These were “Maxwell’s Equations of Software!” + + * \ahref{http://www.softwarepreservation.org/projects/LISP/book/LISP\%25201.5\%2520Programmers\%2520Manual.pdf}{LISP-1.5}: page 13 + + +** Chicken and Egg + + * the shortest path from hex to gcc + * using Maxwell's Equations of Software + +** Bootstrapping: Chicken and Egg + +#+LATEX:\includegraphics[width=0.3\textwidth]{mes.png} + + +* Mes: HOW? + +** LISP-1.5 John McCarthy: page 13 + +# convert -density 150 -quality 100 -flatten -sharpen 0x1.0 LISP-1.5-page-13.pdf LISP-1.5-page-13.png +#+BEGIN_COMMENT +[[file:LISP-1-5-page-13-bottom.png][LISP-1.5 page 13 bottom]] +#+END_COMMENT + +#+ATTR_LATEX: :width=\linewidth +#+LATEX:\includegraphics[width=\textwidth]{LISP-1-5-page-13-bottom.png} + +** Eval/Apply + * core + * apply + * eval + * helpers + * assoc + * pairlis + * evcon + * evlis + * primitives + * atom + * car + * cdr + * cons + * eq + +** LISP-1.5 in Guile Scheme: APPLY + +#+BEGIN_SRC scheme +(define (apply fn x a) + (cond + ((atom fn) + (cond + ((eq fn CAR) (caar x)) + ((eq fn CDR) (cdar x)) + ((eq fn CONS) (cons (car x) (cadr x))) + ((eq fn ATOM) (atom (car x))) + ((eq fn EQ) (eq (car x) (cadr x))) + (#t (apply (eval fn a) x a)))) + ((eq (car fn) LAMBDA) + (eval (caddr fn) (pairlis (cadr fn) x a))) + ((eq (car fn) LABEL) + (apply (caddr fn) x (cons (cons (cadr fn) + (caddr fn)) + a))))) +#+END_SRC + +** LISP-1.5 in Guile Scheme: EVAL + +#+BEGIN_SRC scheme +(define (eval e a) + (cond + ((atom e) (cdr (assoc e a))) + ((atom (car e)) + (cond ((eq (car e) QUOTE) (cadr e)) + ((eq (car e) COND) (evcon (cdr e) a)) + (#t (apply (car e) + (evlis (cdr e) a) a)))) + (#t (apply (car e) (evlis (cdr e) a) a)))) +#+END_SRC + +** LISP-1.5 in Scheme: ASSOC, PAIRLIS, EVCON, EVLIS + +#+BEGIN_SRC scheme +(define (assoc x a) + (cond ((eq (caar a) x) (car a)) + (#t (assoc x (cdr a))))) + +(define (pairlis x y a) + (cond ((null x) a) + (#t (cons (cons (car x) (car y)) + (pairlis (cdr x) (cdr y) a))))) + +(define (evcon c a) + (cond ((eval (caar c) a) (eval (cadar c) a)) + (#t (evcon (cdr c) a)))) + +(define (evlis m a) + (cond ((null m) NIL) + (#t (cons (eval (car m) a) (evlis (cdr m) a))))) +#+END_SRC + + +** LISP-1.5 in C + + * closures + * symbols + * specials? =()= =#t= =#f= =*unspecified*= =*undefined*= + * macros + * syntax-rules + * records + * modules/importing + +** Garbage/Jam Collector + +*** Abelson & Sussman +With a real computer we will eventually run out of free +space in which to construct new pairs.(1) + +*** footnote(1) + +This may not be true eventually, because memories may get large +enough so that it would be impossible to run out of free memory in the +lifetime of the computer. For example, there are about {3\cdot10^{13}} +microseconds in a year, so if we were to ‘cons’ once per microsecond we +would need about 10^{15} cells of memory to build a machine that could +operate for 30 years without running out of memory. + + +** C parser: roll your own LALR + +*** Lalr + * minimal ANSI-C parser + + =int main (){puts ("Hello, world!");return 0;}= + +** C parser: Nyacc +*** Pros + * full C99 parser + * ...including C pre-processor + * perspective of building complete C compiler in Guile + * tsunami of enthusiasm and contributors! + +** C parser: Nyacc + +*** Cons: more TODO for Mes + * keywords + * =define*=, =lambda*= + * optargs + * exeptions, =catch=, =throw= + * =call/cc= + * fluids, =with-fluid= + * =syntax-case= + * André van Tonder's 2006-2007 streak in 14 "commits" + * psyntax: another bootstrap loop?! + * R7RS's Ellipsis + * Guile-1.8 + * =#;=-comments + * =#||#=-comments + +** C parser: Nyacc + +*** Cons: more TODO for Mes + + * Cond supports ==>= + * Bugfixes + * Cond now evaluates its test clauses only once + * Append can also handle one argument + * For-each now supports 2 list arguments + * Map now supports 3 list arguments + * Backslash in string is supported + * Closure is not a pair + * All standard characters are supported + + * 36 new functions +#+BEGIN_SRC scheme + 1+, 1-, abs, and=>, append-reverse, ash, char<\=?, char=?, char>?, even?, filter, delete, delq, vector-copy, + fold, fold-right, getenv, iota, keyword->symbol list-head, + list-tail, negative?, odd?, positive?, remove!, remove, + string->number, string-copy, string-prefix?, string=, + string=?, symbol->keyword symbol-append, symbol-prefix?, + unless, write, zero? +#+END_SRC + +* Mes: WHERE? + + +** Timeline + +*** June 19: \ahref{https://lists.gnu.org/archive/html/guile-user/2016-06/msg00061.html}{on bootstrapping: introducing Mes} +# https://gnunet.org/bot/log/guile/2016-05-19 + * LISP-1.5 in Scheme and in C +*** September 25: \ahref{https://lists.gnu.org/archive/html/guile-user/2016-09/msg00061.html}{on bootstrapping: 2nd status report on Mes} +# https://gnunet.org/bot/log/guile/2016-09-25 + * Scheme primitives in C, closures, macros, 97 tests, LALR + * Produce ELF binary from +#+BEGIN_SRC C +int main () +{ + int i; + puts ("Hi Mes!\n"); + for (i = 0; i < 4; ++i) + puts (" Hello, world!\n"); + return 1; +} +#+END_SRC + * in 1'20" + +** Timeline + +*** October 23: 0.1 [not announced] + * =let-syntax=, =match= + * compile main.c in 2s (was 1'20") + * add REPL + +*** November 21: 0.2 [not announced] + * psyntax integration, =syntax-case=, =load= + +*** December 12: \ahref{https://lists.gnu.org/archive/html/guile-user/2016-12/msg00008.html}{on bootstrapping: first Mes 0.3 released} +# https://gnunet.org/bot/log/guile/2016-12-12 + * Garbage Collector/Jam Scraper + +*** December 25: \ahref{https://lists.gnu.org/archive/html/guile-user/2016-12/msg00041.html}{Mes 0.4 released} +# https://gnunet.org/bot/log/guile/2016-12-25 + * run Nyacc, PEG, reduced core + +** Status + +*** core C prototype: 1150 lines +*** non-essential C sources: +#+BEGIN_SRC bash + 210 lib.c + 157 math.c + 126 posix.c + 134 reader.c + 627 total +#+END_SRC + +** Status +*** tiny-mes.c: 270 lines + * compiles with mescc + * i386-lib: =i386:exit=, =i3886:open=, =i386:read=, =i386:write= + * tiny-libc: =getchar=, =putchar=, =puts=, =strcmp=, =strlen= + * runs +#+BEGIN_SRC bash +Hello tiny-mes! +reading: module/mes/hack-32.mo +MES *GOT MES* +(#\A(#\B)) +#+END_SRC + +** Status + +*** mini-mes.c: 800 lines + * 12kB binary + * 2500 lines assembly + * runs with gcc +#+BEGIN_SRC bash +Hello mini-mes! +reading: module/mes/hack-32.mo +MES *GOT MES* +cells read: 19 +symbols: 1 +program[10]: (cons(0(1))) +(0 . 1) +#+END_SRC + * compiles with mescc + * 83 statements skipped + +** Status + +*** + +#+BEGIN_SRC bash +01:16:51 janneke@dundal:~/src/mes +$ guix package -f guix.scm +The following package will be upgraded: + mes 0.4.f84e97fc -> 0.4.f84e97fc /gnu/store/2fsy1cd24pnwkv7a1zd0anzk3zz8ysdn-mes-0.4.f84e97fc + +#+END_SRC + + + +** Misc + :PROPERTIES: + :BEAMER_ENV: note + :END: + +civodul + +Impressive! + + Is it a goal to try interpret a language as close as possible to that of + Guile, and have the same libraries? I guess that could help in the + future: we could use (system base lalr), nyacc, etc. + + Also, currently there’s approximately 2K lines of C. How do you plan to + make sure that it doesn’t grow over time, or even that it shrinks? :-) + + This all sounds very promising, thanks a lot! + +arnebab + +This is really cool! Thank you for your work! + + > How do you compile the interpreter? + +paroneayea/cwebber +First, I'm really excited you're making progress on Mes! + + > Second, Scheme48 did something similar to this, called "Pre-Scheme", + which is how they bootstrapped Scheme48 iirc. Have you heard of it or + looked at it? + + https://en.wikipedia.org/wiki/PreScheme + + * PreScheme in Scheme48 + * \ahref{http://canonical.org/~kragen/sw/urscheme/}{Ur-Scheme} +R5RS to x86 Assembly + +** What's next? + + * psyntax + * source or binary? + * alternative syntax-case? + * rewrite Nyacc without syntax-case, R7RS-ellipsis? + * call/cc vs eval/apply/evlis? + * merge with Guile? + * compile Guile or compile Gcc? + * prototype? in C + * move from C to Hex? + * move from C to [Pre]Scheme + +** Thanks +*** Thanks :B_block:BMCOL: + :PROPERTIES: + :BEAMER_COL: 0.48 + :BEAMER_ENV: block + :END: + * John McCarthy + * Richard Stallman + * Eelco Dolstra + * Ludovic Courtès + * Rutger van Beusekom + * Christopher A. Webber +*** Thanks everyone else :B_block:BMCOL: + :PROPERTIES: + :BEAMER_COL: 0.48 + :xBEAMER_ACT: <2-> + :BEAMER_ENV: block + :END: + * LISP-1.5 + * GNU + * NixOS + * Debian reproducible builds + * GuixSD + * FOSDEM +*** Connect + * irc freenode.net [[irc://guix@freenode.net][#guix]] [[irc://guile@freenode.net][#guile]] + * mail [[mailto://guile-user@gnu.org][guile-user@gnu.org]] + * git [[https://gitlab.com/janneke/mes][git@gitlab.com:janneke/mes.git]] + +# * Copying +# :PROPERTIES: +# :COPYING: t +# :END: + +# Copyright \copy 2017 Jan Nieuwenhuizen + +# C-c C-e l b (org-beamer-export-to-latex) +# C-c C-e l P (org-beamer-export-to-pdf) diff --git a/doc/fosdem/fosdem.pdf b/doc/fosdem/fosdem.pdf new file mode 100644 index 00000000..c6ab157f Binary files /dev/null and b/doc/fosdem/fosdem.pdf differ diff --git a/doc/fosdem/fsb-logo-guile-guix-gnu.png b/doc/fosdem/fsb-logo-guile-guix-gnu.png new file mode 100644 index 00000000..f4fba7fb Binary files /dev/null and b/doc/fosdem/fsb-logo-guile-guix-gnu.png differ diff --git a/doc/fosdem/fsb-logo-guile-guix-gnu.xcf b/doc/fosdem/fsb-logo-guile-guix-gnu.xcf new file mode 100644 index 00000000..7dcad397 Binary files /dev/null and b/doc/fosdem/fsb-logo-guile-guix-gnu.xcf differ diff --git a/doc/fosdem/fsb-logo-guile-guix-mes.png b/doc/fosdem/fsb-logo-guile-guix-mes.png new file mode 100644 index 00000000..691763c0 Binary files /dev/null and b/doc/fosdem/fsb-logo-guile-guix-mes.png differ diff --git a/doc/fosdem/fsb-logo-guile-guix-mes.xcf b/doc/fosdem/fsb-logo-guile-guix-mes.xcf new file mode 100644 index 00000000..54cd2304 Binary files /dev/null and b/doc/fosdem/fsb-logo-guile-guix-mes.xcf differ diff --git a/doc/fosdem/fsb-logo.png b/doc/fosdem/fsb-logo.png new file mode 100644 index 00000000..691763c0 Binary files /dev/null and b/doc/fosdem/fsb-logo.png differ diff --git a/doc/fosdem/guix-build-bootstrap-tarballs.log b/doc/fosdem/guix-build-bootstrap-tarballs.log new file mode 100644 index 00000000..c1a4e1ee --- /dev/null +++ b/doc/fosdem/guix-build-bootstrap-tarballs.log @@ -0,0 +1,44 @@ +11:12:26 janneke@dundal:~/src/mes/doc +$ guix build bootstrap-tarballs +substitute: updating list of substitutes from 'http://mirror.hydra.gnu.org'... 100.0% +The following files will be downloaded: + /gnu/store/6bym1yf3x500dhzc3z8lqk0frnd5qcka-bootstrap-tarballs-0 + /gnu/store/jddviycivycfhaqahqff6n18y9w46gpz-gcc-stripped-tarball-4.9.4 + /gnu/store/myfikfgx74dzlm3lc217kchxnckri5qq-static-binaries-tarball-0 + /gnu/store/mzk1bc3pfrrf4qnfs3zkj5ch83srnvpx-binutils-static-stripped-tarball-2.27 + /gnu/store/x5zrmh820yc054w00cy00iixwghmly2y-glibc-stripped-tarball-2.24 + /gnu/store/znsf5d7xbqkp4rrjgzsklmwmms8m5i3m-guile-static-stripped-tarball-2.0.12 +@ substituter-started /gnu/store/mzk1bc3pfrrf4qnfs3zkj5ch83srnvpx-binutils-static-stripped-tarball-2.27 /gnu/store/9hhljacc22jppmjx57xc7c46by10y8gh-guix-0.12.0-4.d9da/libexec/guix/substitute +Downloading http://mirror.hydra.gnu.org/nar/mzk1bc3pfrrf4qnfs3zkj5ch83srnvpx-binutils-static-stripped-tarball-2.27 (2.0MiB installed)... + binutils-static-stripped-tarball-2.27 3.5MiB/s 00:01 | 2.0MiB transferred + +@ substituter-succeeded /gnu/store/mzk1bc3pfrrf4qnfs3zkj5ch83srnvpx-binutils-static-stripped-tarball-2.27 +@ substituter-started /gnu/store/jddviycivycfhaqahqff6n18y9w46gpz-gcc-stripped-tarball-4.9.4 /gnu/store/9hhljacc22jppmjx57xc7c46by10y8gh-guix-0.12.0-4.d9da/libexec/guix/substitute +Downloading http://mirror.hydra.gnu.org/nar/jddviycivycfhaqahqff6n18y9w46gpz-gcc-stripped-tarball-4.9.4 (15.5MiB installed)... + gcc-stripped-tarball-4.9.4 4.0MiB/s 00:04 | 15.5MiB transferred + +@ substituter-succeeded /gnu/store/jddviycivycfhaqahqff6n18y9w46gpz-gcc-stripped-tarball-4.9.4 +@ substituter-started /gnu/store/x5zrmh820yc054w00cy00iixwghmly2y-glibc-stripped-tarball-2.24 /gnu/store/9hhljacc22jppmjx57xc7c46by10y8gh-guix-0.12.0-4.d9da/libexec/guix/substitute +Downloading http://mirror.hydra.gnu.org/nar/x5zrmh820yc054w00cy00iixwghmly2y-glibc-stripped-tarball-2.24 (1.6MiB installed)... + glibc-stripped-tarball-2.24 697KiB/s 00:02 | 1.6MiB transferred + +@ substituter-succeeded /gnu/store/x5zrmh820yc054w00cy00iixwghmly2y-glibc-stripped-tarball-2.24 +@ substituter-started /gnu/store/znsf5d7xbqkp4rrjgzsklmwmms8m5i3m-guile-static-stripped-tarball-2.0.12 /gnu/store/9hhljacc22jppmjx57xc7c46by10y8gh-guix-0.12.0-4.d9da/libexec/guix/substitute +Downloading http://mirror.hydra.gnu.org/nar/znsf5d7xbqkp4rrjgzsklmwmms8m5i3m-guile-static-stripped-tarball-2.0.12 (3.1MiB installed)... + guile-static-stripped-tarball-2.0.12 3.2MiB/s 00:01 | 3.1MiB transferred + +@ substituter-succeeded /gnu/store/znsf5d7xbqkp4rrjgzsklmwmms8m5i3m-guile-static-stripped-tarball-2.0.12 +@ substituter-started /gnu/store/myfikfgx74dzlm3lc217kchxnckri5qq-static-binaries-tarball-0 /gnu/store/9hhljacc22jppmjx57xc7c46by10y8gh-guix-0.12.0-4.d9da/libexec/guix/substitute +Downloading http://mirror.hydra.gnu.org/nar/myfikfgx74dzlm3lc217kchxnckri5qq-static-binaries-tarball-0 (5.7MiB installed)... + static-binaries-tarball-0 4.1MiB/s 00:01 | 5.7MiB transferred + +@ substituter-succeeded /gnu/store/myfikfgx74dzlm3lc217kchxnckri5qq-static-binaries-tarball-0 +@ substituter-started /gnu/store/6bym1yf3x500dhzc3z8lqk0frnd5qcka-bootstrap-tarballs-0 /gnu/store/9hhljacc22jppmjx57xc7c46by10y8gh-guix-0.12.0-4.d9da/libexec/guix/substitute +Downloading http://mirror.hydra.gnu.org/nar/6bym1yf3x500dhzc3z8lqk0frnd5qcka-bootstrap-tarballs-0 (2KiB installed)... + bootstrap-tarballs-0 385KiB/s 00:00 | 520B transferred + +@ substituter-succeeded /gnu/store/6bym1yf3x500dhzc3z8lqk0frnd5qcka-bootstrap-tarballs-0 +/gnu/store/6bym1yf3x500dhzc3z8lqk0frnd5qcka-bootstrap-tarballs-0 +12:05:09 janneke@dundal:~/src/mes/doc +$ 12:05:09 janneke@dundal:~/src/mes/doc +$ \ No newline at end of file diff --git a/doc/fosdem/html.sty b/doc/fosdem/html.sty new file mode 100644 index 00000000..7f695322 --- /dev/null +++ b/doc/fosdem/html.sty @@ -0,0 +1,1172 @@ +% +% $Id: html.sty,v 1.39 2001/10/01 22:47:06 RRM Exp $ +% LaTeX2HTML Version 2K.1 : html.sty +% +% This file contains definitions of LaTeX commands which are +% processed in a special way by the translator. +% For example, there are commands for embedding external hypertext links, +% for cross-references between documents or for including raw HTML. +% This file includes the comments.sty file v2.0 by Victor Eijkhout +% In most cases these commands do nothing when processed by LaTeX. +% +% Place this file in a directory accessible to LaTeX (i.e., somewhere +% in the TEXINPUTS path.) +% +% NOTE: This file works with LaTeX 2.09 or (the newer) LaTeX2e. +% If you only have LaTeX 2.09, some complex LaTeX2HTML features +% like support for segmented documents are not available. + +% Changes: +% See the change log at end of file. + + +% Exit if the style file is already loaded +% (suggested by Lee Shombert +\ifx \htmlstyloaded\relax \endinput\else\let\htmlstyloaded\relax\fi +\makeatletter + +% allow for the hyperref package to be cleanly loaded +% either before or after this package, +% and ensure it is already loaded, when using pdf-TeX + +\ifx\undefined\hyperref + \ifx\pdfoutput\undefined \let\pdfunknown\relax + \let\html@new=\newcommand + \else + \ifx\pdfoutput\relax \let\pdfunknown\relax + \RequirePackage{hyperref}\let\html@new=\renewcommand + \else + \ifcase\pdfoutput + \let\pdfunknown\relax \let\html@new=\newcommand + \else + \RequirePackage[pdftex]{hyperref}\let\html@new=\newcommand + \fi + + \fi + \fi +\else + \let\html@new=\renewcommand +\fi + +\providecommand{\latextohtml}{\LaTeX2\texttt{HTML}} + +%%% LINKS TO EXTERNAL DOCUMENTS +% +% This can be used to provide links to arbitrary documents. +% The first argumment should be the text that is going to be +% highlighted and the second argument a URL. +% The hyperlink will appear as a hyperlink in the HTML +% document and as a footnote in the dvi or ps files. +% +\ifx\pdfunknown\relax + \html@new{\htmladdnormallinkfoot}[2]{#1\footnote{#2}} +\else + \def\htmladdnormallinkfoot#1#2{\footnote{\href{#2}{#1}}} +\fi + +% This is an alternative definition of the command above which +% will ignore the URL in the dvi or ps files. +\ifx\pdfunknown\relax + \html@new{\htmladdnormallink}[2]{#1} +\else + \def\htmladdnormallink#1#2{\href{#2}{#1}} +\fi + +% This command takes as argument a URL pointing to an image. +% The image will be embedded in the HTML document but will +% be ignored in the dvi and ps files. +% +\ifx\pdfunknown\relax + \html@new{\htmladdimg}[1]{} +\else + \def\htmladdimg#1{\hyperimage{#1}} +\fi + + +%%% CROSS-REFERENCES BETWEEN (LOCAL OR REMOTE) DOCUMENTS +% +% This can be used to refer to symbolic labels in other Latex +% documents that have already been processed by the translator. +% The arguments should be: +% #1 : the URL to the directory containing the external document +% #2 : the path to the labels.pl file of the external document. +% If the external document lives on a remote machine then labels.pl +% must be copied on the local machine. +% +%e.g. \externallabels{http://cbl.leeds.ac.uk/nikos/WWW/doc/tex2html/latex2html} +% {/usr/cblelca/nikos/tmp/labels.pl} +% The arguments are ignored in the dvi and ps files. +% +\newcommand{\externallabels}[2]{} + + +% This complements the \externallabels command above. The argument +% should be a label defined in another latex document and will be +% ignored in the dvi and ps files. +% +\newcommand{\externalref}[1]{} + + +% Suggested by Uffe Engberg (http://www.brics.dk/~engberg/) +% This allows the same effect for citations in external bibliographies. +% An \externallabels command must be given, locating a labels.pl file +% which defines the location and keys used in the external .html file. +% +\newcommand{\externalcite}{\nocite} + +% This allows a section-heading in the TOC or mini-TOC to be just +% a hyperlink to an external document. +% +% \htmladdTOClink[]{}{}{<URL>} +% where <section-level> is 'chapter' , 'section' , 'subsection' etc. +% and <path_to_labels> is the path to find a labels.pl file, +% so that external cross-referencing may work, as with \externallabels +% +%\ifx\pdfunknown\relax + \newcommand{\htmladdTOClink}[4][]{} +% +% can do something here, using the \pdfoutline primitive +%\else +% \def\htmladdTOClink#1#2#3#4{\pdfoutline user {/S /URI /URI #4} +% name{#2} count{#1}{#3}} +%\fi + + +%%% HTMLRULE +% This command adds a horizontal rule and is valid even within +% a figure caption. +% Here we introduce a stub for compatibility. +\newcommand{\htmlrule}{\protect\HTMLrule} +\newcommand{\HTMLrule}{\@ifstar\htmlrulestar\htmlrulestar} +\newcommand{\htmlrulestar}[1]{} + +%%% HTMLCLEAR +% This command puts in a <BR> tag, with CLEAR="ALL" +\newcommand{\htmlclear}{} + +% This command adds information within the <BODY> ... </BODY> tag +% +\newcommand{\bodytext}[1]{} +\newcommand{\htmlbody}{} + + +%%% HYPERREF +% Suggested by Eric M. Carol <eric@ca.utoronto.utcc.enfm> +% Similar to \ref but accepts conditional text. +% The first argument is HTML text which will become ``hyperized'' +% (underlined). +% The second and third arguments are text which will appear only in the paper +% version (DVI file), enclosing the fourth argument which is a reference to a label. +% +%e.g. \hyperref{using the tracer}{using the tracer (see Section}{)}{trace} +% where there is a corresponding \label{trace} +% +% avoid possible confict with hyperref package +\ifx\undefined\hyperref + \newcommand{\hyperrefhyper}[4]{#4}% + \def\next{\newcommand}% +\else + \let\hyperrefhyper\hyperref + \def\next{\renewcommand}% +\fi +\next{\hyperref}{\hyperrefi[]}\let\next=\relax + +\def\hyperrefi[#1]{{\def\next{#1}\def\tmp{}% + \ifx\next\tmp\aftergroup\hyperrefdef + \else\def\tmp{ref}\ifx\next\tmp\aftergroup\hyperrefref + \else\def\tmp{pageref}\ifx\next\tmp\aftergroup\hyperrefpageref + \else\def\tmp{page}\ifx\next\tmp\aftergroup\hyperrefpage + \else\def\tmp{noref}\ifx\next\tmp\aftergroup\hyperrefnoref + \else\def\tmp{no}\ifx\next\tmp\aftergroup\hyperrefno + \else\def\tmp{hyper}\ifx\next\tmp\aftergroup\hyperrefhyper + \else\def\tmp{html}\ifx\next\tmp\aftergroup\hyperrefhtml + \else\typeout{*** unknown option \next\space to hyperref ***}% + \fi\fi\fi\fi\fi\fi\fi\fi}} +\newcommand{\hyperrefdef}[4]{#2\ref{#4}#3} +\newcommand{\hyperrefpageref}[4]{#2\pageref{#4}#3} +\newcommand{\hyperrefnoref}[3]{#2} +\let\hyperrefref=\hyperrefdef +\let\hyperrefpage=\hyperrefpageref +\let\hyperrefno=\hyperrefnoref +\ifx\undefined\hyperrefhyper\newcommand{\hyperrefhyper}[4]{#4}\fi +\let\hyperrefhtml=\hyperrefdef + +%%% HYPERCITE --- added by RRM +% Suggested by Stephen Simpson <simpson@math.psu.edu> +% effects the same ideas as in \hyperref, but for citations. +% It does not allow an optional argument to the \cite, in LaTeX. +% +% \hypercite{<html-text>}{<LaTeX-text>}{<opt-text>}{<key>} +% +% uses the pre/post-texts in LaTeX, with a \cite{<key>} +% +% \hypercite[ext]{<html-text>}{<LaTeX-text>}{<key>} +% \hypercite[ext]{<html-text>}{<LaTeX-text>}[<prefix>]{<key>} +% +% uses the pre/post-texts in LaTeX, with a \nocite{<key>} +% the actual reference comes from an \externallabels file. +% +\newcommand{\hypercite}{\hypercitei[]} +\def\hypercitei[#1]{{\def\next{#1}\def\tmp{}% + \ifx\next\tmp\aftergroup\hypercitedef + \else\def\tmp{int}\ifx\next\tmp\aftergroup\hyperciteint + \else\def\tmp{cite}\ifx\next\tmp\aftergroup\hypercitecite + \else\def\tmp{ext}\ifx\next\tmp\aftergroup\hyperciteext + \else\def\tmp{nocite}\ifx\next\tmp\aftergroup\hypercitenocite + \else\def\tmp{no}\ifx\next\tmp\aftergroup\hyperciteno + \else\typeout{*** unknown option \next\space to hypercite ***}% + \fi\fi\fi\fi\fi\fi}} +\newcommand{\hypercitedef}[4]{#2{\def\tmp{#3}\def\emptyopt{}% + \ifx\tmp\emptyopt\cite{#4}\else\cite[#3]{#4}\fi}} +\newcommand{\hypercitenocite}[2]{#2\hypercitenocitex[]} +\def\hypercitenocitex[#1]#2{\nocite{#2}} +\let\hypercitecite=\hypercitedef +\let\hyperciteint=\hypercitedef +\let\hyperciteext=\hypercitenocite +\let\hyperciteno=\hypercitenocite + +%%% HTMLREF +% Reference in HTML version only. +% Mix between \htmladdnormallink and \hyperref. +% First arg is text for in both versions, second is label for use in HTML +% version. +\ifx\pdfunknown\relax + \html@new{\htmlref}[2]{#1} +\else + \def\htmlref#1#2{\hyperefhyper[#2]{#1}} +\fi + +%%% HTMLCITE +% Reference in HTML version only. +% Mix between \htmladdnormallink and \hypercite. +% First arg is text for both versions, second is citation for use in HTML +% version. +\newcommand{\htmlcite}[2]{#1} + + +%%% HTMLIMAGE +% This command can be used inside any environment that is converted +% into an inlined image (eg a "figure" environment) in order to change +% the way the image will be translated. The argument of \htmlimage +% is really a string of options separated by commas ie +% [scale=<scale factor>],[external],[thumbnail=<reduction factor> +% The scale option allows control over the size of the final image. +% The ``external'' option will cause the image not to be inlined +% (images are inlined by default). External images will be accessible +% via a hypertext link. +% The ``thumbnail'' option will cause a small inlined image to be +% placed in the caption. The size of the thumbnail depends on the +% reduction factor. The use of the ``thumbnail'' option implies +% the ``external'' option. +% +% Example: +% \htmlimage{scale=1.5,external,thumbnail=0.2} +% will cause a small thumbnail image 1/5th of the original size to be +% placed in the final document, pointing to an external image 1.5 +% times bigger than the original. +% +\newcommand{\htmlimage}[1]{} + + +% \htmlborder causes a border to be placed around an image or table +% when the image is placed within a <TABLE> cell. +\newcommand{\htmlborder}[1]{} + +% Put \begin{makeimage}, \end{makeimage} around LaTeX to ensure its +% translation into an image. +% This shields sensitive text from being translated. +\newenvironment{makeimage}{}{} + + +% A dummy environment that can be useful to alter the order +% in which commands are processed, in LaTeX2HTML +\newenvironment{tex2html_deferred}{}{} + + +%%% HTMLADDTONAVIGATION +% This command appends its argument to the buttons in the navigation +% panel. It is ignored by LaTeX. +% +% Example: +% \htmladdtonavigation{\htmladdnormallink +% {\htmladdimg{http://server/path/to/gif}} +% {http://server/path}} +\newcommand{\htmladdtonavigation}[1]{} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% based upon Eijkhout's comment.sty v2.0 +% with modifications to avoid conflicts with later versions +% of this package, should a user be requiring it. +% Ross Moore, 10 March 1999 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Comment.sty version 2.0, 19 June 1992 +% selectively in/exclude pieces of text: the user can define new +% comment versions, and each is controlled separately. +% This style can be used with plain TeX or LaTeX, and probably +% most other packages too. +% +% Examples of use in LaTeX and TeX follow \endinput +% +% Author +% Victor Eijkhout +% Department of Computer Science +% University Tennessee at Knoxville +% 104 Ayres Hall +% Knoxville, TN 37996 +% USA +% +% eijkhout@cs.utk.edu +% +% Usage: all text included in between +% \comment ... \endcomment +% or \begin{comment} ... \end{comment} +% is discarded. The closing command should appear on a line +% of its own. No starting spaces, nothing after it. +% This environment should work with arbitrary amounts +% of comment. +% +% Other 'comment' environments are defined by +% and are selected/deselected with +% \includecomment{versiona} +% \excludecoment{versionb} +% +% These environments are used as +% \versiona ... \endversiona +% or \begin{versiona} ... \end{versiona} +% with the closing command again on a line of its own. +% +% Basic approach: +% to comment something out, scoop up every line in verbatim mode +% as macro argument, then throw it away. +% For inclusions, both the opening and closing comands +% are defined as noop +% +% Changed \next to \html@next to prevent clashes with other sty files +% (mike@emn.fr) +% Changed \html@next to \htmlnext so the \makeatletter and +% \makeatother commands could be removed (they were causing other +% style files - changebar.sty - to crash) (nikos@cbl.leeds.ac.uk) +% Changed \htmlnext back to \html@next... + +\def\makeinnocent#1{\catcode`#1=12 } +\def\csarg#1#2{\expandafter#1\csname#2\endcsname} + +\def\ThrowAwayComment#1{\begingroup + \def\CurrentComment{#1}% + \let\do\makeinnocent \dospecials + \makeinnocent\^^L% and whatever other special cases +%%RRM +%% use \xhtmlComment for \xComment +%% use \html@next for \next + \endlinechar`\^^M \catcode`\^^M=12 \xhtmlComment} +{\catcode`\^^M=12 \endlinechar=-1 % + \gdef\xhtmlComment#1^^M{\def\test{#1}\edef\test{\meaning\test} + \csarg\ifx{PlainEnd\CurrentComment Test}\test + \let\html@next\endgroup + \else \csarg\ifx{LaLaEnd\CurrentComment Test}\test + \edef\html@next{\endgroup\noexpand\end{\CurrentComment}} + \else \csarg\ifx{LaInnEnd\CurrentComment Test}\test + \edef\html@next{\endgroup\noexpand\end{\CurrentComment}} + \else \let\html@next\xhtmlComment + \fi \fi \fi \html@next} +} + +%%\def\includecomment %%RRM +\def\htmlincludecomment + #1{\expandafter\def\csname#1\endcsname{}% + \expandafter\def\csname end#1\endcsname{}} +%%\def\excludecomment %%RRM +\def\htmlexcludecomment + #1{\expandafter\def\csname#1\endcsname{\ThrowAwayComment{#1}}% + {\escapechar=-1\relax + \edef\tmp{\string\\end#1}% + \csarg\xdef{PlainEnd#1Test}{\meaning\tmp}% + \edef\tmp{\string\\end\string\{#1\string\}}% + \csarg\xdef{LaLaEnd#1Test}{\meaning\tmp}% + \edef\tmp{\string\\end \string\{#1\string\}}% + \csarg\xdef{LaInnEnd#1Test}{\meaning\tmp}% + }} + +%%\excludecomment{comment} %%RRM +\htmlexcludecomment{comment} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% end Comment.sty +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\let\includecomment=\htmlincludecomment +\let\excludecomment=\htmlexcludecomment + +% +% Alternative code by Robin Fairbairns, 22 September 1997 +% revised to cope with % and unnested { }, by Ross Moore, 4 July 1998 +% further revised to cope with & and # in tables, 10 March 1999 +% +\def\raw@catcodes{\catcode`\%=12 \catcode`\{=12 \catcode`\}=12 + \catcode`\&=12 \catcode`\#=12 } +\newcommand\@gobbleenv{\bgroup\raw@catcodes + \let\reserved@a\@currenvir\@gobble@nv} +\bgroup + \def\expansionhead{\gdef\@gobble@nv@i##1} + \def\expansiontail{{\def\reserved@b{##1}\@gobble@nv@ii}} + \def\expansionheadii{\long\gdef\@gobble@nv##1\end} + \def\expansiontailii{{\@gobble@nv@i}} + \def\expansionmidii{##2} + \raw@catcodes\relax + \expandafter\expansionhead\expandafter}\expansiontail +\egroup +\long\gdef\@gobble@nv#1\end#2{\@gobble@nv@i} +%\long\def\@gobble@nv#1\end#2{\def\reserved@b{#2}% +\def\@gobble@nv@ii{% + \ifx\reserved@a\reserved@b + \edef\reserved@a{\egroup\noexpand\end{\reserved@a}}% + \expandafter\reserved@a + \else + \expandafter\@gobble@nv + \fi} + +\renewcommand{\htmlexcludecomment}[1]{% + \csname newenvironment\endcsname{#1}{\@gobbleenv}{}} +\newcommand{\htmlreexcludecomment}[1]{% + \csname renewenvironment\endcsname{#1}{\@gobbleenv}{}} + +%%% RAW HTML +% +% Enclose raw HTML between a \begin{rawhtml} and \end{rawhtml}. +% The html environment ignores its body +% +\htmlexcludecomment{rawhtml} + + +%%% HTML ONLY +% +% Enclose LaTeX constructs which will only appear in the +% HTML output and will be ignored by LaTeX with +% \begin{htmlonly} and \end{htmlonly} +% +\htmlexcludecomment{htmlonly} +% Shorter version +\newcommand{\html}[1]{} + +% for images.tex only +\htmlexcludecomment{imagesonly} + +%%% LaTeX ONLY +% Enclose LaTeX constructs which will only appear in the +% DVI output and will be ignored by latex2html with +%\begin{latexonly} and \end{latexonly} +% +\newenvironment{latexonly}{}{} +% Shorter version +\newcommand{\latex}[1]{#1} + + +%%% LaTeX or HTML +% Combination of \latex and \html. +% Say \latexhtml{this should be latex text}{this html text} +% +%\newcommand{\latexhtml}[2]{#1} +\long\def\latexhtml#1#2{#1} + + +%%% tracing the HTML conversions +% This alters the tracing-level within the processing +% performed by latex2html by adjusting $VERBOSITY +% (see latex2html.config for the appropriate values) +% +\newcommand{\htmltracing}[1]{} +\newcommand{\htmltracenv}[1]{} + + +%%% \strikeout for HTML only +% uses <STRIKE>...</STRIKE> tags on the argument +% LaTeX just gobbles it up. +\newcommand{\strikeout}[1]{} + +%%% \htmlurl and \url +% implement \url as the simplest thing, if not already defined +% let \htmlurl#1 be equivalent to it +% +\def\htmlurlx#1{\begin{small}\texttt{#1}\end{small}}% +\expandafter\ifx\csname url\endcsname\relax + \let\htmlurl=\htmlurlx \else \let\htmlurl=\url \fi + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% JCL - stop input here if LaTeX2e is not present +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ifx\if@compatibility\undefined + %LaTeX209 + \makeatother\relax\expandafter\endinput +\fi +\if@compatibility + %LaTeX2e in LaTeX209 compatibility mode + \makeatother\relax\expandafter\endinput +\fi + +%\let\real@TeXlogo = \TeX +%\DeclareRobustCommand{\TeX}{\relax\real@TeXlogo} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Start providing LaTeX2e extension: +% This is currently: +% - additional optional argument for \htmladdimg +% - support for segmented documents +% + +\ProvidesPackage{html} + [1999/07/19 v1.38 hypertext commands for latex2html (nd, hws, rrm)] + +% +% Ensure that \includecomment and \excludecomment are bound +% to the version defined here. +% +\AtBeginDocument{% + \let\includecomment=\htmlincludecomment + \let\excludecomment=\htmlexcludecomment + \htmlreexcludecomment{comment}} + +%%% bind \htmlurl to \url if that is later loaded +% +\expandafter\ifx\csname url\endcsname\relax + \AtBeginDocument{\@ifundefined{url}{}{\let\htmlurl=\url}}\fi + +%%%%MG + +% This command takes as argument a URL pointing to an image. +% The image will be embedded in the HTML document but will +% be ignored in the dvi and ps files. The optional argument +% denotes additional HTML tags. +% +% Example: \htmladdimg[ALT="portrait" ALIGN=CENTER]{portrait.gif} +% +\ifx\pdfunknown\relax + \renewcommand{\htmladdimg}[2][]{} +\else + \renewcommand{\htmladdimg}[2][]{\hyperimage{#2}} +\fi + +%%% HTMLRULE for LaTeX2e +% This command adds a horizontal rule and is valid even within +% a figure caption. +% +% This command is best used with LaTeX2e and HTML 3.2 support. +% It is like \hrule, but allows for options via key--value pairs +% as follows: \htmlrule[key1=value1, key2=value2, ...] . +% Use \htmlrule* to suppress the <BR> tag. +% Eg. \htmlrule[left, 15, 5pt, "none", NOSHADE] produces +% <BR CLEAR="left"><HR NOSHADE SIZE="15">. +% Renew the necessary part. +\renewcommand{\htmlrulestar}[1][all]{} + +%%% HTMLCLEAR for LaTeX2e +% This command puts in a <BR> tag, with optional CLEAR="<attrib>" +% +\renewcommand{\htmlclear}[1][all]{} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% renew some definitions to allow optional arguments +% +% The description of the options is missing, as yet. +% +\renewcommand{\latextohtml}{\textup{\LaTeX2\texttt{HTML}}} +\ifx\pdfunknown\relax + \renewcommand{\htmladdnormallinkfoot}[3][]{#2\footnote{#3}} + \renewcommand{\htmladdnormallink}[3][]{#2} +\else + \renewcommand{\htmladdnormallinkfoot}[1][]{\def\next{#1}% + \ifx\next\@empty\def\next{\htmladdnonamedlinkfoot}% + \else\def\next{\htmladdnamedlinkfoot{#1}}\fi \next} + \newcommand{\htmladdnonamedlinkfoot}[2]{% + #1\footnote{\href{#2}{#2}}} + \newcommand{\htmladdnamedlinkfoot}[3]{% + \hypertarget{#1}{#2}\footnote{\href{#3}{#3}}} + \renewcommand{\htmladdnormallink}[1][]{\def\next{#1}% + \ifx\next\@empty\def\next{\htmladdnonamedlink}% + \else\def\next{\htmladdnamedlink{#1}}\fi \next} + \newcommand{\htmladdnonamedlink}[2]{\href{#2}{#1}} + \newcommand{\htmladdnamedlink}[3]{% + \hypertarget{#1}{\hskip2bp}\href{#3}{#2}} +\fi + +\renewcommand{\htmlbody}[1][]{} +\renewcommand{\htmlborder}[2][]{} +\renewcommand{\externallabels}[3][]{} +\renewcommand{\externalref}[2][]{} +\renewcommand{\externalcite}[1][]{\nocite} +\renewcommand{\hyperref}[1][]{\hyperrefi[#1]} +\renewcommand{\hypercite}[1][]{\hypercitei[#1]} +\renewcommand{\hypercitenocite}[2]{#2\hypercitenocitex} +\renewcommand{\hypercitenocitex}[2][]{\nocite{#2}} +\let\hyperciteno=\hypercitenocite +\let\hyperciteext=\hypercitenocite + +\ifx\pdfunknown\relax + \renewcommand{\htmlimage}[2][]{} + \renewcommand{\htmlref}[2][]{#2{\def\tmp{#1}\ifx\tmp\@empty + \aftergroup\htmlrefdef\else\aftergroup\htmlrefext\fi}} + \newcommand{\htmlrefdef}[1]{} + \newcommand{\htmlrefext}[2][]{} + \renewcommand{\htmlcite}[2][]{#2{\def\tmp{#1}\ifx\tmp\@empty + \aftergroup\htmlcitedef\else\aftergroup\htmlciteext\fi}} + \newcommand{\htmlciteext}[2][]{} +\else + \renewcommand{\htmlimage}[2][]{\hyperimage{#2}} + \renewcommand{\htmlref}[1][]{\def\htmp@{#1}\ifx\htmp@\@empty + \def\htmp@{\htmlrefdef}\else\def\htmp@{\htmlrefext{#1}}\fi\htmp@} + \newcommand{\htmlrefdef}[2]{\hyperref[hyper][#2]{#1}} + \newcommand{\htmlrefext}[3]{% + \hypertarget{#1}{\hskip2bp}\hyperref[hyper][#3]{#2}} + \renewcommand{\htmlcite}[2][]{#2{\def\htmp@{#1}\ifx\htmp@\@empty + \aftergroup\htmlcitedef\else\aftergroup\htmlciteext\fi}} + \newcommand{\htmlciteext}[1][]{\cite} +\fi +\newcommand{\htmlcitedef}[1]{ \nocite{#1}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% HTML HTMLset HTMLsetenv +% +% These commands do nothing in LaTeX, but can be used to place +% HTML tags or set Perl variables during the LaTeX2HTML processing; +% They are intended for expert use only. + +\newcommand{\HTMLcode}[2][]{} +\ifx\undefined\HTML\newcommand{\HTML}[2][]{}\else +\typeout{*** Warning: \string\HTML\space had an incompatible definition ***}% +\typeout{*** instead use \string\HTMLcode\space for raw HTML code ***}% +\fi +\newcommand{\HTMLset}[3][]{} +\newcommand{\HTMLsetenv}[3][]{} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% The following commands pertain to document segmentation, and +% were added by Herbert Swan <dprhws@edp.Arco.com> (with help from +% Michel Goossens <goossens@cern.ch>): +% +% +% This command inputs internal latex2html tables so that large +% documents can to partitioned into smaller (more manageable) +% segments. +% +\newcommand{\internal}[2][internals]{} + +% +% Define a dummy stub \htmlhead{}. This command causes latex2html +% to define the title of the start of a new segment. It is not +% normally placed in the user's document. Rather, it is passed to +% latex2html via a .ptr file written by \segment. +% +\newcommand{\htmlhead}[3][]{} + +% In the LaTeX2HTML version this will eliminate the title line +% generated by a \segment command, but retains the title string +% for use in other places. +% +\newcommand{\htmlnohead}{} + + +% In the LaTeX2HTML version this put a URL into a <BASE> tag +% within the <HEAD>...</HEAD> portion of a document. +% +\ifx\pdfunknown\relax + \newcommand{\htmlbase}[1]{} +\else + \let\htmlbase=\hyperbaseurl +\fi + + +% Include style information into the stylesheet; e.g. CSS +% +\newcommand{\htmlsetstyle}[3][]{} +\newcommand{\htmladdtostyle}[3][]{} + +% Define a style-class for information in a particular language +% +\newcommand{\htmllanguagestyle}[2][]{} + + +% +% The dummy command \endpreamble is needed by latex2html to +% mark the end of the preamble in document segments that do +% not contain a \begin{document} +% +\newcommand{\startdocument}{} + + +% \tableofchildlinks, \htmlinfo +% by Ross Moore --- extensions dated 27 September 1997 +% +% These do nothing in LaTeX but for LaTeX2HTML they mark +% where the table of child-links and info-page should be placed, +% when the user wants other than the default. +% \tableofchildlinks % put mini-TOC at this location +% \tableofchildlinks[off] % not on current page +% \tableofchildlinks[none] % not on current and subsequent pages +% \tableofchildlinks[on] % selectively on current page +% \tableofchildlinks[all] % on current and all subsequent pages +% \htmlinfo % put info-page at this location +% \htmlinfo[off] % no info-page in current document +% \htmlinfo[none] % no info-page in current document +% *-versions omit the preceding <BR> tag. +% +\newcommand{\tableofchildlinks}{% + \@ifstar\tableofchildlinksstar\tableofchildlinksstar} +\newcommand{\tableofchildlinksstar}[1][]{} + +\newcommand{\htmlinfo}{\@ifstar\htmlinfostar\htmlinfostar} +\newcommand{\htmlinfostar}[1][]{} + + +% This redefines \begin to allow for an optional argument +% which is used by LaTeX2HTML to specify `style-sheet' information + +\let\realLaTeX@begin=\begin +\renewcommand{\begin}[1][]{\realLaTeX@begin} + + +% +% Allocate a new set of section counters, which will get incremented +% for "*" forms of sectioning commands, and for a few miscellaneous +% commands. +% + +\@ifundefined{c@part}{\newcounter{part}}{}% +\newcounter{lpart} +\newcounter{lchapter}[part] +\@ifundefined{c@chapter}% + {\let\Hchapter\relax \newcounter{chapter}\let\thechapter\relax + \newcounter{lsection}[part]}% + {\let\Hchapter=\chapter \newcounter{lsection}[chapter]} +\newcounter{lsubsection}[section] +\newcounter{lsubsubsection}[subsection] +\newcounter{lparagraph}[subsubsection] +\newcounter{lsubparagraph}[lparagraph] +%\newcounter{lequation} + +% +% Redefine "*" forms of sectioning commands to increment their +% respective counters. +% +\let\Hpart=\part +%\let\Hchapter=\chapter +\let\Hsection=\section +\let\Hsubsection=\subsection +\let\Hsubsubsection=\subsubsection +\let\Hparagraph=\paragraph +\let\Hsubparagraph=\subparagraph +\let\Hsubsubparagraph=\subsubparagraph + +\ifx\c@subparagraph\undefined + \newcounter{lsubsubparagraph}[lsubparagraph] +\else + \newcounter{lsubsubparagraph}[subparagraph] +\fi + +% +% The following definitions are specific to LaTeX2e: +% (They must be commented out for LaTeX 2.09) +% +\expandafter\ifx\csname part\endcsname\relax\else +\renewcommand{\part}{\@ifstar{\stepcounter{lpart}% + \bgroup\def\tmp{*}\H@part}{\bgroup\def\tmp{}\H@part}}\fi +\newcommand{\H@part}[1][]{\def\tmp@a{#1}\check@align + \expandafter\egroup\expandafter\Hpart\tmp} + +\ifx\Hchapter\relax\else + \def\chapter{\resetsections \@ifstar{\stepcounter{lchapter}% + \bgroup\def\tmp{*}\H@chapter}{\bgroup\def\tmp{}\H@chapter}}\fi +\newcommand{\H@chapter}[1][]{\def\tmp@a{#1}\check@align + \expandafter\egroup\expandafter\Hchapter\tmp} + +\renewcommand{\section}{\resetsubsections + \@ifstar{\stepcounter{lsection}\bgroup\def\tmp{*}% + \H@section}{\bgroup\def\tmp{}\H@section}} +\newcommand{\H@section}[1][]{\def\tmp@a{#1}\check@align + \expandafter\egroup\expandafter\Hsection\tmp} + +\renewcommand{\subsection}{\resetsubsubsections + \@ifstar{\stepcounter{lsubsection}\bgroup\def\tmp{*}% + \H@subsection}{\bgroup\def\tmp{}\H@subsection}} +\newcommand{\H@subsection}[1][]{\def\tmp@a{#1}\check@align + \expandafter\egroup\expandafter\Hsubsection\tmp} + +\renewcommand{\subsubsection}{\resetparagraphs + \@ifstar{\stepcounter{lsubsubsection}\bgroup\def\tmp{*}% + \H@subsubsection}{\bgroup\def\tmp{}\H@subsubsection}} +\newcommand{\H@subsubsection}[1][]{\def\tmp@a{#1}\check@align + \expandafter\egroup\expandafter\Hsubsubsection\tmp} + +%% \renewcommand{\paragraph}{\resetsubparagraphs +\newcommand{\paragraph}{\resetsubparagraphs + \@ifstar{\stepcounter{lparagraph}\bgroup\def\tmp{*}% + \H@paragraph}{\bgroup\def\tmp{}\H@paragraph}} +\newcommand\H@paragraph[1][]{\def\tmp@a{#1}\check@align + \expandafter\egroup\expandafter\Hparagraph\tmp} + +\ifx\Hsubparagraph\relax\else\@ifundefined{subparagraph}{}{% +\renewcommand{\subparagraph}{\resetsubsubparagraphs + \@ifstar{\stepcounter{lsubparagraph}\bgroup\def\tmp{*}% + \H@subparagraph}{\bgroup\def\tmp{}\H@subparagraph}}}\fi +\newcommand\H@subparagraph[1][]{\def\tmp@a{#1}\check@align + \expandafter\egroup\expandafter\Hsubparagraph\tmp} + +\ifx\Hsubsubparagraph\relax\else\@ifundefined{subsubparagraph}{}{% +\def\subsubparagraph{% + \@ifstar{\stepcounter{lsubsubparagraph}\bgroup\def\tmp{*}% + \H@subsubparagraph}{\bgroup\def\tmp{}\H@subsubparagraph}}}\fi +\newcommand\H@subsubparagraph[1][]{\def\tmp@a{#1}\check@align + \expandafter\egroup\expandafter\Hsubsubparagraph\tmp} + +\def\check@align{\def\empty{}\ifx\tmp@a\empty + \else\def\tmp@b{center}\ifx\tmp@a\tmp@b\let\tmp@a\empty + \else\def\tmp@b{left}\ifx\tmp@a\tmp@b\let\tmp@a\empty + \else\def\tmp@b{right}\ifx\tmp@a\tmp@b\let\tmp@a\empty + \else\expandafter\def\expandafter\tmp@a\expandafter{\expandafter[\tmp@a]}% + \fi\fi\fi \def\empty{}\ifx\tmp\empty\let\tmp=\tmp@a \else + \expandafter\def\expandafter\tmp\expandafter{\expandafter*\tmp@a}% + \fi\fi} +% +\def\resetsections{\setcounter{section}{0}\setcounter{lsection}{0}% + \reset@dependents{section}\resetsubsections } +\def\resetsubsections{\setcounter{subsection}{0}\setcounter{lsubsection}{0}% + \reset@dependents{subsection}\resetsubsubsections } +\def\resetsubsubsections{\setcounter{subsubsection}{0}\setcounter{lsubsubsection}{0}% + \reset@dependents{subsubsection}\resetparagraphs } +% +\def\resetparagraphs{\setcounter{lparagraph}{0}\setcounter{lparagraph}{0}% + \reset@dependents{paragraph}\resetsubparagraphs } +\def\resetsubparagraphs{\ifx\c@subparagraph\undefined\else + \setcounter{subparagraph}{0}\fi \setcounter{lsubparagraph}{0}% + \reset@dependents{subparagraph}\resetsubsubparagraphs } +\def\resetsubsubparagraphs{\ifx\c@subsubparagraph\undefined\else + \setcounter{subsubparagraph}{0}\fi \setcounter{lsubsubparagraph}{0}} +% +\def\reset@dependents#1{\begingroup\let \@elt \@stpelt + \csname cl@#1\endcsname\endgroup} + +% ignore optional *-version of \tableofcontents +\let\ltx@tableofcontents\tableofcontents +\renewcommand{\tableofcontents}{% + \@ifstar\ltx@tableofcontents\ltx@tableofcontents} +% +% +% Define a helper macro to dump a single \secounter command to a file. +% +\newcommand{\DumpPtr}[2]{% +\count255=\csname c@#1\endcsname\relax\def\dummy{dummy}\def\tmp{#2}% +\ifx\tmp\dummy\def\ctr{#1}\else + \def\ctr{#2}\advance\count255 by \csname c@#2\endcsname\relax\fi +\immediate\write\ptrfile{% +\noexpand\setcounter{\ctr}{\number\count255}}} +%\expandafter\noexpand\expandafter\setcounter\expandafter{\ctr}{\number\count255}}} + +% +% Define a helper macro to dump all counters to the file. +% The value for each counter will be the sum of the l-counter +% actual LaTeX section counter. +% Also dump an \htmlhead{section-command}{section title} command +% to the file. +% +\newwrite\ptrfile +\def\DumpCounters#1#2#3#4{% +\begingroup\let\protect=\noexpand +\immediate\openout\ptrfile = #1.ptr +\DumpPtr{part}{lpart}% +\ifx\Hchapter\relax\else\DumpPtr{chapter}{lchapter}\fi +\DumpPtr{section}{lsection}% +\DumpPtr{subsection}{lsubsection}% +\DumpPtr{subsubsection}{lsubsubsection}% +\DumpPtr{paragraph}{lparagraph}% +\DumpPtr{subparagraph}{lsubparagraph}% +\DumpPtr{equation}{dummy}% +\DumpPtr{footnote}{dummy}% +\def\tmp{#4}\ifx\tmp\@empty +\immediate\write\ptrfile{\noexpand\htmlhead{#2}{#3}}\else +\immediate\write\ptrfile{\noexpand\htmlhead[#4]{#2}{#3}}\fi +\dumpcitestatus \dumpcurrentcolor +\immediate\closeout\ptrfile +\endgroup } + + +%% interface to natbib.sty + +\def\dumpcitestatus{} +\def\loadcitestatus{\def\dumpcitestatus{% + \ifciteindex\immediate\write\ptrfile{\noexpand\citeindextrue}% + \else\immediate\write\ptrfile{\noexpand\citeindexfalse}\fi }% +} +\@ifpackageloaded{natbib}{\loadcitestatus}{% + \AtBeginDocument{\@ifpackageloaded{natbib}{\loadcitestatus}{}}} + + +%% interface to color.sty + +\def\dumpcurrentcolor{} +\def\loadsegmentcolors{% + \let\real@pagecolor=\pagecolor + \let\pagecolor\segmentpagecolor + \let\segmentcolor\color + \ifx\current@page@color\undefined \def\current@page@color{{}}\fi + \def\dumpcurrentcolor{\bgroup\def\@empty@{{}}% + \expandafter\def\expandafter\tmp\space####1@{\def\thiscol{####1}}% + \ifx\current@color\@empty@\def\thiscol{}\else + \expandafter\tmp\current@color @\fi + \immediate\write\ptrfile{\noexpand\segmentcolor{\thiscol}}% + \ifx\current@page@color\@empty@\def\thiscol{}\else + \expandafter\tmp\current@page@color @\fi + \immediate\write\ptrfile{\noexpand\segmentpagecolor{\thiscol}}% + \egroup}% + \global\let\loadsegmentcolors=\relax +} + +% These macros are needed within images.tex since this inputs +% the <segment>.ptr files for a segment, so that counters are +% colors are synchronised. +% +\newcommand{\segmentpagecolor}[1][]{% + \@ifpackageloaded{color}{\loadsegmentcolors\bgroup + \def\tmp{#1}\ifx\@empty\tmp\def\next{[]}\else\def\next{[#1]}\fi + \expandafter\segmentpagecolor@\next}% + {\@gobble}} +\def\segmentpagecolor@[#1]#2{\def\tmp{#1}\def\tmpB{#2}% + \ifx\tmpB\@empty\let\next=\egroup + \else + \let\realendgroup=\endgroup + \def\endgroup{\edef\next{\noexpand\realendgroup + \def\noexpand\current@page@color{\current@color}}\next}% + \ifx\tmp\@empty\real@pagecolor{#2}\def\model{}% + \else\real@pagecolor[#1]{#2}\def\model{[#1]}% + \fi + \edef\next{\egroup\def\noexpand\current@page@color{\current@page@color}% + \noexpand\real@pagecolor\model{#2}}% + \fi\next} +% +\newcommand{\segmentcolor}[2][named]{\@ifpackageloaded{color}% + {\loadsegmentcolors\segmentcolor[#1]{#2}}{}} + +\@ifpackageloaded{color}{\loadsegmentcolors}{\let\real@pagecolor=\@gobble + \AtBeginDocument{\@ifpackageloaded{color}{\loadsegmentcolors}{}}} + + +% Define the \segment[align]{file}{section-command}{section-title} command, +% and its helper macros. This command does four things: +% 1) Begins a new LaTeX section; +% 2) Writes a list of section counters to file.ptr, each +% of which represents the sum of the LaTeX section +% counters, and the l-counters, defined above; +% 3) Write an \htmlhead{section-title} command to file.ptr; +% 4) Inputs file.tex. + +\newcommand{\segment}{\@ifstar{\@@htmls}{\@@html}} +%\tracingall +\newcommand{\@endsegment}[1][]{} +\let\endsegment\@endsegment +\newcommand{\@@htmls}[1][]{\@@htmlsx{#1}} +\newcommand{\@@html}[1][]{\@@htmlx{#1}} +\def\@@htmlsx#1#2#3#4{\csname #3\endcsname* {#4}% + \DumpCounters{#2}{#3*}{#4}{#1}\input{#2}} +\def\@@htmlx#1#2#3#4{\csname #3\endcsname {#4}% + \DumpCounters{#2}{#3}{#4}{#1}\input{#2}} + +\makeatother +\endinput + + +% Modifications: +% +% (The listing of Initiales see Changes) + +% $Log: html.sty,v $ +% Revision 1.39 2001/10/01 22:47:06 RRM +% -- somehow revision 1.39 was not committed earlier +% -- it allows a * version of \tableofcontents (used with frames) to be +% treated as un-starred by LaTeX +% +% Revision 1.39 2000/09/10 12:23:20 RRM +% -- added *-argument for \tableofcontents in frames.perl +% LaTeX should just ignore it +% +% Revision 1.38 1999/07/19 13:23:20 RRM +% -- compatibility with pdflatex and hyperref.sty +% citations are not complete yet, I think +% -- ensure that \thechapter remains undefined; some packages use it +% as a test for the type of documentclass being used. +% +% Revision 1.37 1999/03/12 07:02:38 RRM +% -- change macro name from \addTOCsection to \htmladdTOClink +% -- it has 3 + 1 optional argument, to allow a local path to a labels.pl +% file for the external document, for cross-references +% +% Revision 1.36 1999/03/10 05:46:00 RRM +% -- extended the code for compatibilty with comment.sty +% -- allow excluded environments to work within tables, +% with the excluded material spanning headers and several cells +% thanks Avinash Chopde for recognising the need for this. +% -- added LaTeX support (ignores it) for \htmladdTOCsection +% thanks to Steffen Klupsch and Uli Wortmann for this idea. +% +% Revision 1.35 1999/03/08 11:16:16 RRM +% html.sty for LaTeX2HTML V99.1 +% +% -- ensure that html.sty can be loaded *after* hyperref.sty +% -- support new command \htmlclear for <BR> in HTML, ignored by LaTeX +% -- ensure {part} and {chapter} counters are defined, even if not used +% +% Revision 1.34 1998/09/19 10:37:29 RRM +% -- fixed typo with \next{\hyperref}{....} +% +% Revision 1.33 1998/09/08 12:47:51 RRM +% -- changed macro-names for the \hyperref and \hypercite options +% allows easier compatibility with other packages +% +% Revision 1.32 1998/08/24 12:15:14 RRM +% -- new command \htmllanguagestyle to associate a style class +% with text declared as a particular language +% +% Revision 1.31 1998/07/07 14:15:41 RRM +% -- new commands \htmlsetstyle and \htmladdtostyle +% +% Revision 1.30 1998/07/04 02:42:22 RRM +% -- cope with catcodes of % { } in rawhtml/comment/htmlonly environments +% +% Revision 1.29 1998/06/23 13:33:23 RRM +% -- use \begin{small} with the default for URLs +% +% Revision 1.28 1998/06/21 09:38:39 RRM +% -- implement \htmlurl to agree with \url if already defined +% or loaded subsequently (LaTeX-2e only) +% -- get LaTeX to print the revision number when loading +% +% Revision 1.27 1998/06/20 15:13:10 RRM +% -- \TeX is already protected in recent versions of LaTeX +% so \DeclareRobust doesn't work --- causes looping +% -- \part and \subparagraph need not be defined in some styles +% +% Revision 1.26 1998/06/01 08:36:49 latex2html +% -- implement optional argument for \endsegment +% -- made the counter value output from \DumpPtr more robust +% +% Revision 1.25 1998/05/09 05:43:35 latex2html +% -- conditionals for avoiding undefined counters +% +% Revision 1.23 1998/02/26 10:32:24 latex2html +% -- use \providecommand for \latextohtml +% -- implemented \HTMLcode to do what \HTML did previously +% \HTML still works, unless already defined by another package +% -- fixed problems remaining with undefined \chapter +% -- defined \endsegment +% +% Revision 1.22 1997/12/05 11:38:18 RRM +% -- implemented an optional argument to \begin for style-sheet info. +% -- modified use of an optional argument with sectioning-commands +% +% Revision 1.21 1997/11/05 10:28:56 RRM +% -- replaced redefinition of \@htmlrule with \htmlrulestar +% +% Revision 1.20 1997/10/28 02:15:58 RRM +% -- altered the way some special html-macros are defined, so that +% star-variants are explicitly defined for LaTeX +% -- it is possible for these to occur within images.tex +% e.g. \htmlinfostar \htmlrulestar \tableofchildlinksstar +% +% Revision 1.19 1997/10/11 05:47:48 RRM +% -- allow the dummy {tex2html_nowrap} environment in LaTeX +% use it to make its contents be evaluated in environment order +% +% Revision 1.18 1997/10/04 06:56:50 RRM +% -- uses Robin Fairbairns' code for ignored environments, +% replacing the previous comment.sty stuff. +% -- extensions to the \tableofchildlinks command +% -- extensions to the \htmlinfo command +% +% Revision 1.17 1997/07/08 11:23:39 RRM +% include value of footnote counter in .ptr files for segments +% +% Revision 1.16 1997/07/03 08:56:34 RRM +% use \textup within the \latextohtml macro +% +% Revision 1.15 1997/06/15 10:24:58 RRM +% new command \htmltracenv as environment-ordered \htmltracing +% +% Revision 1.14 1997/06/06 10:30:37 RRM +% - new command: \htmlborder puts environment into a <TABLE> cell +% with a border of specified width, + other attributes. +% - new commands: \HTML for setting arbitrary HTML tags, with attributes +% \HTMLset for setting Perl variables, while processing +% \HTMLsetenv same as \HTMLset , but it gets processed +% as if it were an environment. +% - new command: \latextohtml --- to set the LaTeX2HTML name/logo +% - fixed some remaining problems with \segmentcolor & \segmentpagecolor +% +% Revision 1.13 1997/05/19 13:55:46 RRM +% alterations and extra options to \hypercite +% +% Revision 1.12 1997/05/09 12:28:39 RRM +% - Added the optional argument to \htmlhead, also in \DumpCounters +% - Implemented \HTMLset as a no-op in LaTeX. +% - Fixed a bug in accessing the page@color settings. +% +% Revision 1.11 1997/03/26 09:32:40 RRM +% - Implements LaTeX versions of \externalcite and \hypercite commands. +% Thanks to Uffe Engberg and Stephen Simpson for the suggestions. +% +% Revision 1.10 1997/03/06 07:37:58 RRM +% Added the \htmltracing command, for altering $VERBOSITY . +% +% Revision 1.9 1997/02/17 02:26:26 RRM +% - changes to counter handling (RRM) +% - shuffled around some definitions +% - changed \htmlrule of 209 mode +% +% Revision 1.8 1997/01/26 09:04:12 RRM +% RRM: added optional argument to sectioning commands +% \htmlbase sets the <BASE HREF=...> tag +% \htmlinfo and \htmlinfo* allow the document info to be positioned +% +% Revision 1.7 1997/01/03 12:15:44 L2HADMIN +% % - fixes to the color and natbib interfaces +% % - extended usage of \hyperref, via an optional argument. +% % - extended use comment environments to allow shifting expansions +% % e.g. within \multicolumn (`bug' reported by Luc De Coninck). +% % - allow optional argument to: \htmlimage, \htmlhead, +% % \htmladdimg, \htmladdnormallink, \htmladdnormallinkfoot +% % - added new commands: \htmlbody, \htmlnohead +% % - added new command: \tableofchildlinks +% +% Revision 1.6 1996/12/25 03:04:54 JCL +% added patches to segment feature from Martin Wilck +% +% Revision 1.5 1996/12/23 01:48:06 JCL +% o introduced the environment makeimage, which may be used to force +% LaTeX2HTML to generate an image from the contents. +% There's no magic, all what we have now is a defined empty environment +% which LaTeX2HTML will not recognize and thus pass it to images.tex. +% o provided \protect to the \htmlrule commands to allow for usage +% within captions. +% +% Revision 1.4 1996/12/21 19:59:22 JCL +% - shuffled some entries +% - added \latexhtml command +% +% Revision 1.3 1996/12/21 12:22:59 JCL +% removed duplicate \htmlrule, changed \htmlrule back not to create a \hrule +% to allow occurrence in caption +% +% Revision 1.2 1996/12/20 04:03:41 JCL +% changed occurrence of \makeatletter, \makeatother +% added new \htmlrule command both for the LaTeX2.09 and LaTeX2e +% sections +% +% +% jcl 30-SEP-96 +% - Stuck the commands commonly used by both LaTeX versions to the top, +% added a check which stops input or reads further if the document +% makes use of LaTeX2e. +% - Introduced rrm's \dumpcurrentcolor and \bodytext +% hws 31-JAN-96 - Added support for document segmentation +% hws 10-OCT-95 - Added \htmlrule command +% jz 22-APR-94 - Added support for htmlref +% nd - Created diff --git a/doc/fosdem/mes.png b/doc/fosdem/mes.png new file mode 100644 index 00000000..304e2760 Binary files /dev/null and b/doc/fosdem/mes.png differ diff --git a/doc/fosdem/mes.xcf b/doc/fosdem/mes.xcf new file mode 100644 index 00000000..8fd2793c Binary files /dev/null and b/doc/fosdem/mes.xcf differ