Robitex's Blog

Ideas in the web

Archivi Mensili: luglio 2011

Carta millimetrata a volontà


Scarica l’articolo nel formato PDF per la stampa

Sommario

Con il pacchetto rilasciato recentemente su CTAN dal nostro Prof. Enrico Gregorio, siamo in grado di produrre un serie di PDF per fogli a carta millimetrata con una facilità sorprendente, utilizzando il codice già predisposto in un precedente post. Buon divertimento.

Divertimento millimetrato

Bene, bene, partiamo con il creare un foglio di carta millimetrata di formato A4 a toni di grigio, ecco il codice opportunamente adattato dal post precedente da compilare (vedi note tecniche più avanti), con l’opzione –shell-escape:

\documentclass[a4paper]{minimal}
\usepackage[margin=0pt]{geometry}
\usepackage[shellescape]{gmp}

\begin{document}

\noindent
\begin{mpost}
   % Foglio di carta millimetrata
   % Origine sistema di riferimento:
   % in alto a sinistra del foglio
   u := 1mm;
   pagewidth := 210;
   pageheight:= 297;

   % funzione di disegno riga verticale
   def vline(expr x)=
      draw (x*u, -sp/2)--(x*u, -pageheight*u+sp/2);
   enddef;

   % funzione di disegno riga orizzontale
   def hline(expr y)=
      draw (sp/2, y*u)--(pagewidth*u-sp/2, y*u);
   enddef;

   % line sottili
   sp:= 0.15pt;
   drawoptions(withpen pencircle scaled sp
               withcolor 0.70white);

   for i=1 upto pageheight-1:
      if not (i mod 5 = 0):
         hline( -i );
      fi;
   endfor;

   for i=1 upto pagewidth-1:
      if not (i mod 5 = 0):
          vline( i );
      fi;
   endfor;

   % linee intermedie
   sp:= 0.30pt;
   drawoptions(withpen pencircle scaled sp
               withcolor 0.55white);

   for i=5 step 10 until pageheight-1:
      hline( -i );
   endfor;

   for i=5 step 10 until pagewidth-1:
      vline( i );
    endfor;

   % linee pesanti ad 1 centimetro
   sp:= 0.42pt;
   drawoptions(withpen pencircle scaled sp
               withcolor 0.45white);

   for i=10 step 10 until pageheight-1:
      hline( -i );
   endfor;

   for i=10 step 10 until pagewidth-1:
      vline( i );
   endfor;
\end{mpost}
\end{document}

Proseguiamo cambiando le dimensioni di pagina da A4 ad A3 modificando l’opzione A4paper in A3paper ed aggiungendo l’opzione landscape per l’orientamento di pagina orizzontale (non che sia fondamentale), ed aggiornando le variabili nel listato Metapost per la larghezza e l’altezza di pagina:

\documentclass[a3paper,landscape]{minimal}
\usepackage[margin=0pt]{geometry}
\usepackage[shellescape]{gmp}

\begin{document}

\noindent
\begin{mpost}
   % Foglio di carta millimetrata
   % Origine sistema di riferimento:
   % in alto a sinistra del foglio
   u := 1mm;
   pageheight:= 297;
   pagewidth := 420;

   % funzione di disegno riga verticale
   def vline(expr x)=
      draw (x*u, -sp/2)--(x*u, -pageheight*u+sp/2);
   enddef;

   % funzione di disegno riga orizzontale
   def hline(expr y)=
      draw (sp/2, y*u)--(pagewidth*u-sp/2, y*u);
   enddef;

   % line sottili
   sp:= 0.15pt;
   drawoptions(withpen pencircle scaled sp
               withcolor 0.70white);

   for i=1 upto pageheight-1:
      if not (i mod 5 = 0):
         hline( -i );
      fi;
   endfor;

   for i=1 upto pagewidth-1:
      if not (i mod 5 = 0):
          vline( i );
      fi;
   endfor;

   % linee intermedie
   sp:= 0.30pt;
   drawoptions(withpen pencircle scaled sp
               withcolor 0.55white);

   for i=5 step 10 until pageheight-1:
      hline( -i );
   endfor;

   for i=5 step 10 until pagewidth-1:
      vline( i );
    endfor;

   % linee pesanti ad 1 centimetro
   sp:= 0.42pt;
   drawoptions(withpen pencircle scaled sp
               withcolor 0.45white);

   for i=10 step 10 until pageheight-1:
      hline( -i );
   endfor;

   for i=10 step 10 until pagewidth-1:
      vline( i );
    endfor;
\end{mpost}
\end{document}

Possiamo naturalmente produrre anche fogli carta millimetrata con rigature colorate. In Metapost vi sono solo una manciata di colori predefiniti, ma possiamo definirne di nuovi a partire da quelli base o per mezzo di componenti di colore RGB oppure anche CMYK, per coprire così tutte le nostre esigenze.

Nel listato precedente per esempio, sostituite alle righe 29, 46, e 59 al posto del colore white, i colori green, blue, o red. La rigatura presenterà automaticamente intensità diverse del colori di base scelto grazie ai moltiplicatori 0.70, 0.55 e 0.45 già utilizzati.

I colori personalizzati possono essere ottenuti creando un nuovo colore RGB di base che, proprio come una variabile modificabile, basterà editare in un unico luogo del codice per ottenere il colore voluto graduato a seconda dell’importanza delle linee della grigliatura millimetrica.

Un nuovo colore si ottiene istanziando una variabile di tipo color, mettendo i tre numeri variabili tra 0 ed 1 delle componenti rosso, verde e blu in una lista tra parentesi tonde:

% definizione del colore base
color col;
col := (0.3, 0.5, 0.8);

Le proprietà della penna si cambiano poi sempre al solito modo con il comando drawoptions, per esempio per le righe sottili della griglia:

drawoptions(withpen pencircle scaled sp
            withcolor 0.70col);

Lavorare con i colori è quindi del tutto naturale in Metapost, ed ecco quindi il listato per ottenere una pagina nel formato A4 con linee di un particolare colore RGB e sotto forma di file PDF

\documentclass[a4paper]{minimal}
\usepackage[margin=0pt]{geometry}
\usepackage[shellescape]{gmp}

\begin{document}
\noindent
\begin{mpost}
   % Foglio di carta millimetrata
   % Origine sistema di riferimento:
   % in alto a sinistra del foglio
   u := 1mm;
   pagewidth := 210;
   pageheight:= 297;
   
   % definizione del colore base
   color col;
   col := (0.3, 0.5, 0.8);

   % funzione di disegno riga verticale
   def vline(expr x)=
      draw (x*u, -sp/2)--(x*u, -pageheight*u+sp/2);
   enddef;

   % funzione di disegno riga orizzontale
   def hline(expr y)=
      draw (sp/2, y*u)--(pagewidth*u-sp/2, y*u);
   enddef;

   % line sottili
   sp:= 0.15pt;
   drawoptions(withpen pencircle scaled sp
               withcolor 0.70col);

   for i=1 upto pageheight-1:
      if not (i mod 5 = 0):
         hline( -i );
      fi;
   endfor;

   for i=1 upto pagewidth-1:
      if not (i mod 5 = 0):
          vline( i );
      fi;
   endfor;

   % linee intermedie
   sp:= 0.30pt;
   drawoptions(withpen pencircle scaled sp
               withcolor 0.55col);

   for i=5 step 10 until pageheight-1:
      hline( -i );
   endfor;

   for i=5 step 10 until pagewidth-1:
      vline( i );
    endfor;

   % linee pesanti ad 1 centimetro
   sp:= 0.42pt;
   drawoptions(withpen pencircle scaled sp
               withcolor 0.45col);

   for i=10 step 10 until pageheight-1:
      hline( -i );
   endfor;

   for i=10 step 10 until pagewidth-1:
      vline( i );
    endfor;
\end{mpost}
\end{document}

Scaricamento

Ok adesso, se volete, cliccate su ciascuna immagine presentata per scaricare il file PDF ottenuto dai listati di codice dell’articolo:

Carta millimetrata A4 colore grigio

Carta millimetrata A4 colore grigio

Carta millimetrata A3 colore grigio

Carta millimetrata A3 colore grigio

Carta millimetrata A4 colore blue

Carta millimetrata A4 colore blue

Carta millimetrata A4 colore rosso

Carta millimetrata A4 colore rosso

Carta millimetrata A4 colore verde

Carta millimetrata A4 colore verde

Carta millimetrata A4 colore definito RGB

Carta millimetrata A4 colore definito RGB

Note tecniche

Per ottenere i miei stessi risultati dovete compilare il codice dei vari esercizi proposti, il che significa che per primo dovete aver installato sul vostro sistema (che sia Linux, Windows o Mac) una distribuzione TeX.

Poi, compito usuale per un utente TeX, dovete compilare il sorgente, ovvero salvate un file di testo con estensione .tex contenente il codice, chiamandolo per esempio A4milli.tex, e compilatelo aprendo una finestra di console e digitando il comando (tranquilli di solito per l’utente LaTeX ci pensa l’editor a far compilare il sorgente):

> pdflatex --shell-escape A4milli

Rigraziamenti

Un grazie a te curioso lettore nella speranza che il post ti abbia fatto divertire oltre che ti abbia aiutato, ed al Prof. Enrico Gregorio che, ancora una volta ci ha sorpreso con il suo nuovo pacchetto gmp.
Un saluto.

Annunci
%d blogger hanno fatto clic su Mi Piace per questo: