\documentclass{beamer} \usepackage[norsk]{babel} \usepackage[utf8]{inputenx} \usepackage[stickyper,obeyall,locale=DE,dp=4]{siunitx} \usetheme{Pittsburgh} \setbeamercolor{normal text}{bg=red!7} \setbeamertemplate{footline}{\insertpagenumber} \usepackage{xmpmulti,amsmath,amssymb,graphicx,mflogo} \DeclareGraphicsRule{*}{mps}{*}{} \graphicspath{{./metapostpropagandafiles/}} \newcommand{\myem}[1]{\texttt{#1}} \title{Wide--range \MP\ tutorial} \author{ Luís Nobre Gonçalves \\ (\href{mailto:lnobreg@gmail.com}{\underline{L. Nobre G.}}) } \date{\today} \begin{document} \frame{ \titlepage \begin{abstract} Sort of workshop about \TeX--things, focusing on the \MP\ language. \end{abstract} } \frame{ \frametitle{The Church of Free Software} Pope: \href{http://stallman.org/}{\underline{Richard Stallman}}. } \frame{ \frametitle{Evil} {\LARGE WYSIWYG} \pause What you get is what you \textcolor{red}{don't} see } \frame{ \frametitle{Freedom} You choose what you get \pause but you only get it at the end of a long path. } \frame{\tableofcontents} \section{Introduction} \subsection{A bit of history} \frame{ \frametitle{A bit of history} \href{http://news.stanford.edu/news/2011/june/knuth-engineering-hero-060111.html}{\underline{Donald Knuth -- \textit{The Art of Computer Programming}}} \begin{itemize} \item Volume1, 1969, hot metal \item Volume2, $2^{\mathrm{\underline{nd}}}$ ed., 1977, photographic \item \TeX, v1, 1978, $\mathrm{v}\longrightarrow\pi$ \item \MF, v1, 1979, $\mathrm{v}\longrightarrow e$ --- \textrm{affine} \item AMS, 1983 \item APS, AIP, OSA, AAS, Springer-Verlag \item \MP, 1994, John Hobby \end{itemize} \pause \MP\ is the realm of graphic \textcolor{green}{parameterization}. } \subsection{What is \MP ?} \frame{ \frametitle{Main features of \MP} \begin{itemize} \item It is easy to express geometry as \MP\ code \item \MP\ outputs \myem{postscript}, SVG or PNG \begin{quote} \myem{outputformat := \dq svg\dq;} \end{quote} \item Very good control of 2D B\'{e}zier splines \item Special 2D operators \item Many operators work the same way in 1, 2, 3 or 4D \item Linear equations \item May include \LaTeX \item May be included in \LaTeX \end{itemize} } \subsection{Main reason to use \MP} \frame{ \frametitle{Use \MP\ because} \MP\ helps the user to experiment different diagram layouts without changing specified \textcolor{green}{geometric relationships} among diagram elements. } \section{For Almost Absolute Beginners} \frame{ \frametitle{For Almost Absolute Beginners} \begin{itemize} \item Availability \item Mathematically oriented \item Programmability/Scriptability \item Forced simplicity \item \textcolor{green}{Consistency} \end{itemize} } \subsection{Availability} \frame{ \frametitle{Availability} \begin{itemize} \item \href{http://foundry.supelec.fr/gf/project/metapost}{\underline{Development site}} \item \href{http://www.ctan.org/}{\underline{CTAN}} \begin{itemize} \item \href{http://www.ctan.org/tex-archive/graphics/metapost/contrib/macros}{\underline{/graphics/metapost/contrib/macros}} \end{itemize} \pause \item \TeX\ Users Group \begin{itemize} \item \href{http://www.tug.org/texlive/}{\underline{\texttt{texlive}}} \end{itemize} \item \href{http://packages.debian.org/search?keywords=texlive&searchon=names&suite=stable§ion=all}{\underline{Debian}} \begin{itemize} \item \href{http://packages.debian.org/squeeze/texlive-metapost}{\underline{\texttt{texlive-metapost}}} \item \href{http://packages.debian.org/squeeze/texlive-publishers}{\underline{\texttt{texlive-publishers}}} includes \href{https://authors.aps.org/revtex4/}{\underline{RevTeX}} \item \href{http://packages.debian.org/squeeze/latex-beamer}{\underline{\texttt{latex-beamer}}} \item \href{http://tug.org/tex4ht/}{\underline{\texttt{tex4ht}}} \end{itemize} \item ``The \LaTeX\ Companions'' \end{itemize} } \subsection{Mathematically oriented} \frame{ \frametitle{Linear equations} \begin{center} \includegraphics[height=35mm]{intersection2D.1} \\ \begin{itemize} \item Constraints may be expressed as linear equations \begin{quote} \myem{z5 = whatever[z1,z2];} \\ \myem{z5 = whatever[z3,z4];} \end{quote} \item No need to explicitly assign calculations to unknowns \end{itemize} \end{center} } \frame{ \frametitle{\myem{pair} doublets} \begin{itemize} \item \myem{pair} \begin{tabular}[t]{cc} \myem{(\textit{x,y})}$\longrightarrow$ & \myem{(X,Y)} \\ \myem{origin} & (0,0) \end{tabular} \item Coordinates \begin{quote} \myem{z[i] = (x[i],y[i]);} \end{quote} \end{itemize} } \frame{ \frametitle{\myem{color} triplets} \begin{itemize} \item \myem{color} \begin{tabular}[t]{cc} \myem{(\textit{red,green,blue})}$\longrightarrow$ & \myem{(X,Y,Z)} \\ \myem{black} & (0,0,0) \\ \myem{red} & (1,0,0) \\ \myem{green} & (0,1,0) \\ \myem{blue} & (0,0,1) \\ \myem{white} & (1,1,1) \end{tabular} \end{itemize} } \frame{ \frametitle{\myem{cmykcolor} tetraplets} \begin{itemize} \item \myem{cmykcolor} \myem{(\textit{cyan,magenta,yellow,black})}$\longrightarrow$\myem{(X,Y,Z,W)} (\href{http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation}{\underline{quaternions}}, \href{http://en.wikipedia.org/wiki/Homogeneous_coordinates}{\underline{homogeneous coordinates}}, 4D splines, animation frames, straight line segments, etc.) \end{itemize} } \frame{ \frametitle{Special operators} \begin{itemize} \item Pythagorean addition and subtraction \begin{quote} \myem{h = a ++ b +-+ c;} ($h=\sqrt{a^2+b^2-c^2}$) \end{quote} \pause \item Interval 0---1 ND operator s[,] \begin{quote} \begin{tabular}{lcl} \myem{0.5[(1,1),(3,5)]} & $\longrightarrow$ & \myem{(2,3)} \\ \myem{-0.5[(1,1,1),(3,5,7)]} & $\longrightarrow$ & \myem{(0,-1,-2)} \\ \myem{1.5[(1,1,1,1),(3,5,7,9)]} & $\longrightarrow$ & \myem{(4,7,10,13)} \end{tabular} \end{quote} \pause \item N-dimensional scalar arithmetic \begin{quote} \myem{b = 2a;} \\ \myem{z1 = 2*(1,2);} \\ \myem{c2 = 2*(1,2,3); grey = 0.5white;} \\ \myem{cc3 = 2*(1,2,3,4);} \end{quote} \end{itemize} } \frame{ \frametitle{Other features} \begin{itemize} \item Throw--in--the--garbage unknowns \begin{quote} \myem{whatever} \end{quote} \pause \item Special functions \begin{quote} \myem{dir() abs() angle() unitvector() \\ sind() cosd()} \end{quote} \pause \item Affine transforms (linear) \item Totally parameterized 2D cubic B\'{e}zier splines \end{itemize} } \subsection{Programmability/Scriptability} \frame{ \frametitle{Programmability} \begin{center} \includegraphics[width=0.57\columnwidth]{recursives.2} \end{center} ø æ å ì § ü ç @ £ œ ß « » “ ” … 3.14159e-2 = \num{3.14159e-2} } \frame{ \frametitle{Scriptability} \begin{itemize} \item \begin{quote} \myem{scantokens \dq\textsl{string of commands}\dq;} \end{quote} \item MPlib \end{itemize} } \subsection{Forced Simplicity} \frame{ \frametitle{Forced Simplicity} \begin{itemize} \item $(8\times)4096$ \item 1/65536 \item 2000 points in a path \item Memory \item Number of variables \end{itemize} Since \MP\ version 1.803, the command line switch \myem{--numbersystem} provides other over- and underflows } \subsection{Consistency} \frame{ \frametitle{Consistency} \begin{itemize} \item emacs+auctex/\href{http://www.texmacs.org/}{\underline{texmacs}} \item latexmp \item emp/Lua\TeX \item graphicx \item beamer+xmpmulti \item GNUPLOT \item xfig \item dia/expressg \item gs+potrace+pstoedit+PstoeditMpostPreeditor \item siunitx \end{itemize} } \frame{\frametitle{emacs+auctex} \begin{center} \includegraphics[height=61mm]{metapostpropaganda.png} \end{center} \href{run:metapostpropaganda.tex}{\underline{See code}} } \frame{\frametitle{latexmp} \begin{center} \includegraphics[height=61mm]{fekslatexmp.1} \end{center} \href{run:metapostpropagandafiles/fekslatexmp.mp}{\underline{See code}.} } \frame{\frametitle{graphicx} \begin{quote} \textbackslash usepackage\{graphicx\} \\ \textbackslash DeclareGraphicsRule\{*\}\{mps\}\{*\}\{\} \\ --- \\ \textbackslash includegraphics[height=61mm]\{fekslatexmp.1\} \end{quote} } \frame{\frametitle{beamer+xmpmulti} \begin{quote} \textbackslash usepackage\{xmpmulti\} \\ --- \\ \textbackslash multiinclude[$<+>$][graphics=\{width=8cm\},end=10] \\ \{feksmulti\} \end{quote} } \frame{\frametitle{GNUPLOT} \begin{quote} set term mp color solid latex \\ set output \dq feksgnuplot.mp\dq \end{quote} } \frame{\frametitle{xfig} \begin{center} \includegraphics[height=61mm]{xfig.png} \end{center} fig2ps } \frame{\frametitle{dia} \begin{center} \includegraphics[height=55mm]{dia.png} \end{center} } \frame{\frametitle{epspdf+gs} \begin{flushright} epspdf minimal-1.mps \\ --- \\ gs -q -sDEVICE=jpeggray -r100 -dNOPAUSE \\ -sOutputFile=minimal.jpg minimal-1.pdf $<$ /dev/null \end{flushright} } \frame{\frametitle{potrace+pstoedit+PstoeditMpostPreeditor} \href{http://matagalatlante.org/nobre/MetaPost/debianswirl/DebianSwirl.html}{\underline{Example}} } \frame{\frametitle{PstoeditMpostPreeditor} \href{http://matagalatlante.org/nobre/MetaPost/QuestionMark/questionmark.html}{\underline{Example}} } \section{Workflow} \frame{ \frametitle{Basic workflow} \begin{center} \includegraphics[height=65mm]{workflow-from-mpman-charts.2} \end{center} } \frame{\frametitle{Workflow} \begin{enumerate} \item Draw scheme by hand \item Identify parameters \pause \item Express constraints \item Determine valid ranges \item Program \item Test \end{enumerate} } \subsection{Workflow example} \frame{ \frametitle{Workflow example (0)} \begin{center} \includegraphics[height=65mm]{pifpafphoto.jpg} \end{center} } \frame{ \frametitle{Workflow example (1)} \begin{center} \includegraphics[height=65mm]{pifpaf.jpeg} \end{center} } \frame{ \frametitle{Workflow example (2)} \multiinclude[<+>][graphics={width=8cm},end=16]{pifpafpropaganda} } \end{document}