lunes, diciembre 19, 2005

Creando una rejilla

El paquete textpos, que me ayuda a situar los elementos en posiciones absolutas del documento, permite crear una rejilla invisible sobre la que emplazar los elementos. Cada texto, imagen, etc. se sitúa dentro de un textblock, de la siguiente manera:
\begin{textblock}{4}(1,1)
Bla bla bla bla bla.
\end{textblock}
Esto significa que el texto empezará a aparecer desde la casilla que está en la posición (1,1) y se extenderá (en ancho) a través de 4 casillas. (El alto no se especifica.)

Pues bien, yo quería que esa rejilla invisible fuera visible alguna vez, y busqué algun comando que me ayudara. Como no encontré nada, me cree un comando yo mismo para poder visualizar la rejilla y así poder hacerme una idea de cómo maquetaría la información.

A continuación incluyo el código:
%CREANDO UNA REJILLA
\documentclass[a4paper]{article}
\usepackage[absolute]{textpos} %Incluir paquete textpos con opción absolute.
\usepackage{multido} %Para los bucles
\usepackage{ifthen}
\usepackage[margin=2cm]{geometry}

\thispagestyle{empty} %Sin número de página
\setlength{\parindent}{0pt} %Sin sangrado
\textblockorigin{2cm}{2cm} %Origen de los "textblocks" y por lo tanto de la malla
%Variables que utilizo
\newdimen\dx
\newdimen\dy
\newcount\cx
\newcount\cy
% Instrucción que dibuja una rejilla: \grid[num]{nfilas}{ncolumnas}
% - "num": si se indica esta opción, se muestran los pares (x,y) para cada celda
\newcommand{\grid}[3][]{
\dx=\textwidth% %ancho total del documento
\dy=\textheight% %alto total del documento
\cx=#3% %número de columnas
\cy=#2% %número de filas

\count1=#3% %guardo en \count1 el número de columnas + 1
\advance\count1 by 1%

\count2=#2% %guardo en \count2 el número de filas + 1
\advance\count2 by 1

\divide\dx by #3 %ancho total / número de columnas
\divide\dy by #2 %alto total / número de filas

\setlength{\TPHorizModule}{\dx} % dar valores a los parámetros de textpos. ancho celda = \dx
\setlength{\TPVertModule}{\dy} % alto celda = \dx

%Dibujar filas
\multido{\nFila=0+1}{\count2}{
\begin{textblock}{\cx}(0,\nFila)
\rule[0pt]{\textwidth}{.1pt}
\end{textblock}
}

%Dibujar columnas
\multido{\nColumna=0+1}{\count1}{
\begin{textblock}{\cy}(\nColumna,0)
\rule[0pt]{.1pt}{\textheight}
\end{textblock}
}

\ifthenelse{\equal{#1}{num}}{ % si se quieren visualizar las posiciones de cada casilla
%Escribir posición
\multido{\nFila=0+1}{\cx}{
\multido{\nColumna=0+1}{\cy}{
\begin{textblock}{1}(\nFila,\nColumna)
\begin{center}
(\nFila,\nColumna )
\end{center}
\end{textblock}
}
}
}{}
}

\begin{document}
\grid[num]{5}{10} %Dibujar rejilla
\end{document}