From 39cd214bd9ac220fff214d46135d8f3979cf14e8 Mon Sep 17 00:00:00 2001 From: Marc Chantreux Date: Fri, 19 Feb 2016 15:54:13 +0100 Subject: [PATCH] notes on a livescript workshop --- workshop/livescript/index.md | 65 ++++++ workshop/livescript/makefile | 23 +++ workshop/livescript/prelude.latex | 7 + workshop/livescript/template.beamer.latex | 232 ++++++++++++++++++++++ 4 files changed, 327 insertions(+) create mode 100644 workshop/livescript/index.md create mode 100644 workshop/livescript/makefile create mode 100644 workshop/livescript/prelude.latex create mode 100644 workshop/livescript/template.beamer.latex diff --git a/workshop/livescript/index.md b/workshop/livescript/index.md new file mode 100644 index 0000000..fc25d82 --- /dev/null +++ b/workshop/livescript/index.md @@ -0,0 +1,65 @@ +--- +author: Marc Chantreux +urls: + - http://unistra.github.io/workshop/livescript/slides.pdf +title: livescript +header-includes: \input{prelude.latex} +--- + +# Faster + +* markdown +* stylus +* jade +* livescript + +# Future? + +* elm, clojurescript? +* sxml, scss? +* d3 +* tentative de Meta-Templating (rototo) + +# Livescript ? + +* ne corrige pas tous les problèmes de javascript +* propose une meilleure syntaxe pour l'état de l'art + +# readable numbers + +* `_` comme séparateur +* lettres finales comme indice + +# alors ? + + 100000000 + 2 = + 100_000_000 + 2 = + 100_000_000km + 2km = + 100_000_000km + 2ft = + +# voilà + + 100000000 + 2 = [throw Krasucki Exception] + 100_000_000 + 2 = 100_000_002 + 100_000_000km + 2km = 100_000_002 + 100_000_000km + 2ft = 100_000_002 [NASA clue] + +# NASA Fix + + JS: 100_000_000km + kmFromFt(2) + LS: 100_000_000km + (km-from-ft 2) = ... + + JS : rectArea(2, 4) + rectArea(5, 8) + LS : (rect-area 2, 4) + (rect-area 5, 8) + Haskell: (rect-area 2 4) + (rect-area 5 8) + Haskell: (+) (rect-area 2 4) (rect-area 5 8) + +# définition de fonctions + + JS : kmFromFt = function (x) { return(x / 3280.8) } + λ : kmFromFt = λx . x / 3280.8 + LS : kmFromFt = (x) . x / 3280.8 + Haskell: kmFromFt = (/ 3280.8) + +# définition de fonctions + diff --git a/workshop/livescript/makefile b/workshop/livescript/makefile new file mode 100644 index 0000000..5cde393 --- /dev/null +++ b/workshop/livescript/makefile @@ -0,0 +1,23 @@ +SHELL = /usr/bin/zsh + +template= template.beamer.latex +chapters = index.md +components= $(chapters) $(template) prelude.latex deps.pdf deps_with_phony.pdf +pandoc-options= pipe_tables+grid_tables+multiline_tables+escaped_line_breaks +mk-slides = pandoc -f markdown -t beamer+$(pandoc-options) \ + --template $(template) + +slides.pdf slides.latex: $(components) + cat $(chapters) | $(mk-slides) -o $@ + @echo DONE + +%.svg: %.dot + dot -T svg -o $@ $< + +%.pdf: %.svg + rsvg-convert -o $@ < $< + +deps.pdf: deps.dot + +$(template): + pandoc -D beamer > $@ diff --git a/workshop/livescript/prelude.latex b/workshop/livescript/prelude.latex new file mode 100644 index 0000000..696d7ef --- /dev/null +++ b/workshop/livescript/prelude.latex @@ -0,0 +1,7 @@ +\usepackage{tikz} +% \usetikzlibrary{matrix} +% \hypersetup{linkcolor=red} +% \newcommand{\deps}{ +% \node (A) {A}; +% \node [above of=A] (B) {B}; +% } diff --git a/workshop/livescript/template.beamer.latex b/workshop/livescript/template.beamer.latex new file mode 100644 index 0000000..8cab25b --- /dev/null +++ b/workshop/livescript/template.beamer.latex @@ -0,0 +1,232 @@ +\documentclass[$if(fontsize)$$fontsize$,$endif$$if(lang)$$babel-lang$,$endif$$if(handout)$handout,$endif$$if(beamer)$ignorenonframetext,$endif$$for(classoption)$$classoption$$sep$,$endfor$]{$documentclass$} +$if(theme)$ +\usetheme{$theme$} +$endif$ +$if(colortheme)$ +\usecolortheme{$colortheme$} +$endif$ +$if(fonttheme)$ +\usefonttheme{$fonttheme$} +$endif$ +$if(mainfont)$ +\usefonttheme{serif} % use mainfont rather than sansfont for slide text +$endif$ +$if(innertheme)$ +\useinnertheme{$innertheme$} +$endif$ +$if(outertheme)$ +\useoutertheme{$outertheme$} +$endif$ +\setbeamertemplate{caption}[numbered] +\setbeamertemplate{caption label separator}{: } +\setbeamercolor{caption name}{fg=normal text.fg} +$if(fontfamily)$ +\usepackage[$fontfamilyoptions$]{$fontfamily$} +$else$ +\usepackage{lmodern} +$endif$ +\usepackage{amssymb,amsmath} +\usepackage{ifxetex,ifluatex} +\usepackage{fixltx2e} % provides \textsubscript +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc} + \usepackage[utf8]{inputenc} +$if(euro)$ + \usepackage{eurosym} +$endif$ +\else % if luatex or xelatex + \ifxetex + \usepackage{mathspec} + \else + \usepackage{fontspec} + \fi + \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase} + \newcommand{\euro}{€} +$if(mainfont)$ + \setmainfont[$mainfontoptions$]{$mainfont$} +$endif$ +$if(sansfont)$ + \setsansfont[$sansfontoptions$]{$sansfont$} +$endif$ +$if(monofont)$ + \setmonofont[Mapping=tex-ansi$if(monofontoptions)$,$monofontoptions$$endif$]{$monofont$} +$endif$ +$if(mathfont)$ + \setmathfont(Digits,Latin,Greek)[$mathfontoptions$]{$mathfont$} +$endif$ +$if(CJKmainfont)$ + \usepackage{xeCJK} + \setCJKmainfont[$CJKoptions$]{$CJKmainfont$} +$endif$ +\fi +% use upquote if available, for straight quotes in verbatim environments +\IfFileExists{upquote.sty}{\usepackage{upquote}}{} +% use microtype if available +\IfFileExists{microtype.sty}{% +\usepackage{microtype} +\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts +}{} +$if(lang)$ +\ifxetex + \usepackage{polyglossia} + \setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$} +$for(polyglossia-otherlangs)$ + \setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$} +$endfor$ +\else + \usepackage[shorthands=off,$babel-lang$]{babel} +\fi +$endif$ +$if(natbib)$ +\usepackage{natbib} +\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$} +$endif$ +$if(biblatex)$ +\usepackage{biblatex} +$for(bibliography)$ +\addbibresource{$bibliography$} +$endfor$ +$endif$ +$if(listings)$ +\usepackage{listings} +$endif$ +$if(lhs)$ +\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} +$endif$ +$if(highlighting-macros)$ +$highlighting-macros$ +$endif$ +$if(verbatim-in-note)$ +\usepackage{fancyvrb} +\VerbatimFootnotes % allows verbatim text in footnotes +$endif$ +$if(tables)$ +\usepackage{longtable,booktabs} +\usepackage{caption} +% These lines are needed to make table captions work with longtable: +\makeatletter +\def\fnum@table{\tablename~\thetable} +\makeatother +$endif$ +$if(graphics)$ +\usepackage{graphicx,grffile} +\makeatletter +\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} +\def\maxheight{\ifdim\Gin@nat@height>\textheight0.8\textheight\else\Gin@nat@height\fi} +\makeatother +% Scale images if necessary, so that they will not overflow the page +% margins by default, and it is still possible to overwrite the defaults +% using explicit options in \includegraphics[width, height, ...]{} +\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} +$endif$ + +% Comment these out if you don't want a slide with just the +% part/section/subsection/subsubsection title: +\AtBeginPart{ + \let\insertpartnumber\relax + \let\partname\relax + \frame{\partpage} +} +\AtBeginSection{ + \let\insertsectionnumber\relax + \let\sectionname\relax + \frame{\sectionpage} +} +\AtBeginSubsection{ + \let\insertsubsectionnumber\relax + \let\subsectionname\relax + \frame{\subsectionpage} +} + +$if(links-as-notes)$ +% Make links footnotes instead of hotlinks: +\renewcommand{\href}[2]{#2\footnote{\url{#1}}} +$endif$ +$if(strikeout)$ +\usepackage[normalem]{ulem} +% avoid problems with \sout in headers with hyperref: +\pdfstringdefDisableCommands{\renewcommand{\sout}{}} +$endif$ +\setlength{\emergencystretch}{3em} % prevent overfull lines +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} +$if(numbersections)$ +\setcounter{secnumdepth}{5} +$else$ +\setcounter{secnumdepth}{0} +$endif$ +$if(dir)$ +\ifxetex + % load bidi as late as possible as it modifies e.g. graphicx + $if(latex-dir-rtl)$ + \usepackage[RTLdocument]{bidi} + $else$ + \usepackage{bidi} + $endif$ +\fi +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \TeXXeTstate=1 + \newcommand{\RL}[1]{\beginR #1\endR} + \newcommand{\LR}[1]{\beginL #1\endL} + \newenvironment{RTL}{\beginR}{\endR} + \newenvironment{LTR}{\beginL}{\endL} +\fi +$endif$ + +$if(title)$ +\title{$title$} +$endif$ +$if(subtitle)$ +\subtitle{$subtitle$} +$endif$ +$if(author)$ +\author{$for(author)$$author$$sep$ \and $endfor$} +$endif$ +\date{$date$} +$for(header-includes)$ +$header-includes$ +$endfor$ + +\begin{document} +$if(title)$ +\frame{\titlepage} +$endif$ + +$for(include-before)$ +$include-before$ + +$endfor$ +$if(toc)$ +\begin{frame} +\tableofcontents[hideallsubsections] +\end{frame} + +$endif$ +$body$ + +$if(natbib)$ +$if(bibliography)$ +$if(biblio-title)$ +$if(book-class)$ +\renewcommand\bibname{$biblio-title$} +$else$ +\renewcommand\refname{$biblio-title$} +$endif$ +$endif$ +\begin{frame}[allowframebreaks]{$biblio-title$} +\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$} +\end{frame} + +$endif$ +$endif$ +$if(biblatex)$ +\begin{frame}[allowframebreaks]{$biblio-title$} +\printbibliography[heading=none] +\end{frame} + +$endif$ +$for(include-after)$ +$include-after$ + +$endfor$ +\end{document}