If you have no idea about LaTeX you can get a brief introduction here.
My first exposure to the typesetting engine LaTeX came through a book, which I layouted in 2008 as documentation for an audio installation. Some time before we had published a paper about this installation and therefore most of our material was already prepared for LaTeX. To build upon this paper to layout the book seemed like the perfect chance to learn more about LaTeX. I was very interested if the alternative approach (WYSIWYM not WYSIWYG) would give me a different sight on DTP. After playing around for some time and climbing up a steep learning curve, the book was finished and I ended up with some basic knowledge of LaTeX.
When GOTO10 asked me to do the design for their makeart festival, it felt again like the perfect moment to continue the experiments and combine the typesetting and layouting through LaTeX with a scripted generation of ASCII .tex files. The goal was to develop a software setup which draws from the abundant resources of FLOSS and differentiates from the current monoculture in graphic design, employing two fundamental ideas, coming both from a meme complex called The UNIX Philosophy.
The first of these inspirations is to store data in flat ASCII files. This way you ensure that data can easily be read and manipulated. Because LaTeX takes plain text files as input, you can use anything that is capable of editing text files to write control files that describe your document. These control files can be used in the next step to output pdf files (or other things). Therefore you do not depend on software focused on desktop publishing, but you can use the wide array of text manipulation tools (awk, cut, diff, grep, head, lex, more, perl, sed, sort, tail, test, wc)* which come shipped with every Unix-like system. Additionally to its built-in functions you can define own macros with LaTeX.
\newcommand{\grid}[9]{% \begin{picture}(0,3.1)% \put(0,2){#1}% |} \put(0,1){#4}% |} \put(0,0){#7}% |} \put(1,2){#2}% |} \put(1,1){#5}% |} \put(1,0){#8}% |} \put(2,2){#3}% |} \put(2,1){#6}% |} \put(2,0){#9}% |} \end{picture}% }
The new command \grid{}{}{}{}{}{}{}{}{}
takes nine inputs that will be
arranged according to the \put
–command on the canvas. You can write:
\documentclass[10pt]{scrartcl} \begin{document} \grid{1}{2}{3}{4}% {6}{7}{8}{9} \end{document}
and compile your document using pdflatex
, what will give you
a page with nine numbers arranged on the canvas.
Or instead of boring numbers, you can put something else in your grid.
And that’s were the second paradigm comes in.
Use software leverage to your advantage.
Automate everything — simply put, take advantage of the computing environment to do as much work for you as possible. *
Since all you have to deal with is plain text you could easily write a program that writes some code for you. A grid in the grid for example:
\grid{\grid{1}{2}{3}{4}{5}{6}{7}{8}{9} }{\grid{1}{2}{3}{4}{5}{6}{7}{8}{9} }{\grid{1}{2}{3}{4}{5}{6}{7}{8}{9} }{\grid{1}{2}{3}{4}{5}{6}{7}{8}{9} }{\grid{1}{2}{3}{4}{5}{6}{7}{8}{9} }{\grid{1}{2}{3}{4}{5}{6}{7}{8}{9} }{\grid{1}{2}{3}{4}{5}{6}{7}{8}{9} }{\grid{1}{2}{3}{4}{5}{6}{7}{8}{9} }{\grid{1}{2}{3}{4}{5}{6}{7}{8}{9} }
And of course you could tell this program not to write numbers, but a macro command that draws a graphic:
\newcommand{\graphic}[7]{% \setlength\fboxsep{0pt}% \setlength\fboxrule{#7}% \fbox{% \includegraphics[viewport=#2 #3 #4 #5,clip,#6]{#1}%| }% ~ }
In practice this was bit more complicated, for having a lot of exceptions and workarounds, but in general everything went pretty well. Read on or have a look at the source.