summaryrefslogtreecommitdiff
path: root/support/fancyhdrBoxed
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/fancyhdrBoxed
Initial commit
Diffstat (limited to 'support/fancyhdrBoxed')
-rw-r--r--support/fancyhdrBoxed/Header.py114
-rw-r--r--support/fancyhdrBoxed/MiniBloquiHeader.tex133
2 files changed, 247 insertions, 0 deletions
diff --git a/support/fancyhdrBoxed/Header.py b/support/fancyhdrBoxed/Header.py
new file mode 100644
index 0000000000..6b252392dd
--- /dev/null
+++ b/support/fancyhdrBoxed/Header.py
@@ -0,0 +1,114 @@
+"""
+/*
+ * Header.py 1.0
+ * Implementa un mini lenguaje de bloques para crear
+ * cabeceras con fancyhdr
+ *
+ * Copyright (C) Manuel Gutierrez Algaba, 2000
+ *
+ * This program is free software; you can redistribute it and/or modif
+y
+ * it under the terms of the GNU General Public License as published b
+y
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+*/
+"""
+
+class Bloque:
+ def __init__(self, y, x, inicio_y = 0, inicio_x = 0):
+ """
+ y : altura
+ x : anchura
+ """
+ self.y = y
+ self.x = x
+ self.inicio_y = inicio_y
+ self.inicio_x = inicio_x
+ self.lista_bloques=[]
+ self.caracteres_anyadidos = []
+
+ def genera_bloque(self):
+ print "\\psline{-}" + self.escribe_coordenadas(
+ (self.inicio_x, self.inicio_y),
+ (self.inicio_x, self.inicio_y + self.y),
+ (self.inicio_x+self.x, self.inicio_y+ self.y),
+ (self.inicio_x+self.x, self.inicio_y),
+ (self.inicio_x, self.inicio_y) )
+ self.genera_escritura()
+ for i in self.lista_bloques:
+ i.genera_bloque()
+
+ def escribe_coordenadas(self, *args):
+ dev = ""
+ for i in args:
+ dev = dev + str(i) + " "
+ return dev
+
+ def anyade(self, un_bloque):
+ self.lista_bloques.append(un_bloque)
+ return un_bloque
+
+ def tamanyo_x(self, factor):
+ return Bloque(self.y, factor * self.x, self.inicio_y, self.inicio_x)
+
+ def tamanyo_y(self, factor):
+ return Bloque(self.y * factor, self.x, self.inicio_y, self.inicio_x)
+
+ def lado(self, alt, long):
+ if alt != "inf" and alt!= "sup" and alt!="cent":
+ raise "Mala 'altitud'"
+ if long != "izq" and long!= "der" and long!="cent":
+ raise "Mala 'longitud'"
+ t = Bloque(self.y, self.x, self.inicio_y, self.inicio_x)
+ if alt == "sup":
+ t.inicio_y = self.y
+ if alt == "cent":
+ t.inicio_y = self.y / 2
+ if long == "der":
+ t.inicio_x = self.x
+ if long == "cent":
+ t.inicio_x = self.x / 2
+ return t
+
+ def traslada_x(self, x ):
+ self.inicio_x = self.inicio_x + x
+ for i in self.lista_bloques:
+ i.traslada_x(x)
+
+ def traslada_y(self, y):
+ self.inicio_y = self.inicio_y + y
+ for i in self.lista_bloques:
+ i.traslada_y(y)
+
+ def escribe_hacia(self, pos_x, pos_y, escribir):
+ """
+ pos = numero fraccionario
+ """
+ if pos_x >= 1.0 or pos_x < 0:
+ raise "Pos_x debe ser fraccionario y positivo"
+
+ if pos_y >= 1.0 or pos_y < 0:
+ raise "Pos_y debe ser fraccionario y positivo"
+
+ self.caracteres_anyadidos.append((pos_x, pos_y, escribir))
+
+ def genera_escritura(self):
+ for i in self.caracteres_anyadidos:
+ print "\\rput"+ self.escribe_coordenadas(( i[0] *( self.x - self.inicio_x) + self.inicio_x, self.inicio_y + i[1]* (self.y - self.inicio_y))) + "{" + i[2] + "}"
+
+
+if __name__=='__main__':
+ b = Bloque(3,4)
+ c= b.anyade(b.lado("inf","der").tamanyo_y(0.5).tamanyo_x(3))
+ b.escribe_hacia(0.12, 0.1, "Alphaville")
+ d = b.anyade(c.lado("sup", "izq"))
+ b.traslada_x(-3)
+ b.genera_bloque()
+
diff --git a/support/fancyhdrBoxed/MiniBloquiHeader.tex b/support/fancyhdrBoxed/MiniBloquiHeader.tex
new file mode 100644
index 0000000000..551a273329
--- /dev/null
+++ b/support/fancyhdrBoxed/MiniBloquiHeader.tex
@@ -0,0 +1,133 @@
+%*
+% * Header.py Implementa un mini lenguaje de bloques para crear
+% * cabeceras con fancyhdr
+% *
+% * Copyright (C) Manuel Gutierrez Algaba, 2000
+% *
+% * This program is free software% you can redistribute it and/or modif
+%y
+% * it under the terms of the GNU General Public License as published b
+%y
+% * the Free Software Foundation% either version 2 of the License, or
+% * (at your option) any later version.
+% *
+% * This program is distributed in the hope that it will be useful,
+% * but WITHOUT ANY WARRANTY% without even the implied warranty of
+% * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% * GNU General Public License for more details.
+% *
+%*/
+
+\documentclass[10pt,a4paper]{article}
+\begin{document}
+\title{Documentacion de MiniBloquiHeader 1.0}
+\author{ Manuel Gutierrez Algaba, irmina@ctv.es }
+\date{ Enero 2000 }
+\maketitle
+
+\section{Copyright issues}
+Header.py y este documentos son ambos GPL, es decir, puedes copiarlos
+y reusarlos indefinidamente, basicamente. Por cierto, por cuestiones
+de tiempo este documento esta en Espanyol, sin acentos y sin nada,
+en cualquier caso explica a la perfeccion de que va MiniBloquiHeader.
+Por cierto, la pagina ``gueb'' de este proyecto es:
+\verb|www.ctv.es/USERS/irmina/MiniBloquiHeader.html|
+
+\section{El problema}
+El problema es que en Informatica se generan documentacion que suele
+tener unas cabeceras de pagina muy ricas y complejas, del tipo:
+\begin{verbatim}
+-----------------------------------------------
+| | Nombre capitulo |
+| | |
+|Adornos|--------------------------------------|
+| | Nombre Seccion | Fecha |
+| | | Hora |
+|----------------------------------------------
+\end{verbatim}
+
+Dado mi desconocimiento de TeX y las pocas ganas que tengo
+de bregar con TeXnicismos he encontrado que la solucion mas
+simple pasa por usar fancyhdr y dibujar con Pstricks , insertando
+alli donde convenga los letreros. Esto se traduce por ejemplo en:
+\begin{figure}
+\caption{Ejemplo de uso }
+\label{fig1}
+\begin{verbatim}
+\documentclass[10pt]{article}
+\usepackage{fancyhdr}
+\usepackage{pstricks}
+\usepackage{pst-node}
+\begin{document}
+\voffset=0cm
+\headheight=1cm
+\lhead{
+\psline{-}(-3, 0) (-3, 3) (1, 3) (1, 0) (-3, 0)
+\rput(-2.16, 0.3) {\Asunto}
+\psline{-}(1, 0) (1, 1.5) (13, 1.5) (13, 0) (1, 0)
+\psline{-}(1, 1.5) (1, 3.0) (13, 3.0) (13, 1.5) (1, 1.5)
+}
+\rhead{}
+\chead{}
+
+\lfoot{}
+\rfoot{}
+\cfoot{}
+\renewcommand{\footrulewidth}{0.4 pt}
+\renewcommand{\headrulewidth}{0.0 pt}
+\newcommand{\Asunto}{Asi manualmente. Capitulo 1}
+....
+...
+\renewcommand{\Asunto}{Capitulo 2}
+
+\end{document}
+\end{verbatim}
+\end{figure}
+Efectivamente el macro \verb|\Asunto| es la prueba de que puedo
+insertar en los cuadros y que puedo ir variando lo que inserto
+en cada pagina. Lo ideal seria hacerlo de manera automatica
+con un section mark o le que fuese, pero carezco del conocimiento
+y del tiempo.
+\subsection{Como dibujar los cuadros}
+Ahora el problema queda reducido a encontrar una manera facil de
+dibujar esos cuadros. Aqui entra en accion \verb|Header.py|.
+Esta escrito en python (\verb|www.python.org|)
+Esta miniherramienta hace lo que tiene que hacer dibujar cuadros
+y poner letreros. Para ver como funciona lo mejor es hacer pruebas.
+Basicamente es un lenguaje formado por los siguientes comandos:
+
+\begin{itemize}
+\item{Bloque: Esto crea un bloque de tamanyo (y,x), generalmente
+yo suelo crear un bloque principal y los demas son descritos
+en funcion de este, }
+\item{lado: Indica que un bloque se ha anyadido a uno de los lados
+del bloque en cuestion, c.lado(``inf'',''der'') devuelve un Bloque
+del mismo tamanyo que c, pero situado en la esquina inferior derecha
+de c.
+}
+\item{tamanyo\_y(o \_x): Estos varian la dimension del cuadrado
+derivado. c.tamanyo\_x(0.3) devuelve un cuadrado cuya longitud
+es un tercio la de c }
+\item{traslada: Desplaza al cuadrado y a todos sus derivados}
+\item{escribe\_hacia: Escribe en cierto lugar del rectangulo,
+siempre ``dentro'' de el, escribe\_hacia(0.5, 0.5, ``Alfa''),
+escribe ``Alfa'' en el ``medio'' del rectangulo. }
+\end{itemize}
+El ejemplo de \ref{fig1} ha sido generado con la secuencia:
+\begin{verbatim}
+ b = Bloque(3,4)
+ c= b.anyade(b.lado("inf","der").tamanyo_y(0.5).tamanyo_x(3))
+ b.escribe_hacia(0.12, 0.1, "\\Asunto")
+ d = b.anyade(c.lado("sup", "izq"))
+ b.traslada_x(-3)
+ b.genera_bloque()
+
+\end{verbatim}
+Como se puede ver, se generan tres rectangulos y un letrero ( que
+en este caso es un macro).
+
+Es facil imaginar lo que se puede llegar a hacer de manera simple.
+
+\section{Translation issues}
+If you want to you can translate this, I lack the time.
+\end{document}