Simple Latex

De Wikihaskell
Saltar a: navegación, buscar
Simplex
Simplex
Lenguaje Haskell
Biblioteca Simplex
Autores Jairo García García
Raúl Gomez Sánchez
Manuel Trinidad García

Contenido

Definición

Simplex [1] es una biblioteca que pretende simplificar la que a veces es una tarea laboriosa y repetitiva de escribir documentos en LaTeX. Está escrita en el lenguaje de programación funcional Haskell, y propone un nuevo lenguaje de marcas que facilita considerablemente la realización de dicho documento.

Introducción

A menudo, al escribir la sintaxis de LaTeX [2] es muy común cometer errores, es por ello, que se propone la biblioteca Simplex, siendo ésta una manera de evitar los errores que se producen fácilmente a la hora de redactar documentos en el lenguaje anteriormente nombrado. La solución por tanto será la biblioteca que proponemos en esta wiki, la cual a través de un lenguaje de marcas [3] nos facilitará enormemente la tarea sin sacrificar la potencia del lenguaje original, LaTeX.

El objetivo del estudio está diseñado para ilustrar lo fácil que es crear un documento bien estructurado, siendo una de las grandes ventajas de Simplex es que todo lo que necesita saber es la sintaxis básica del lenguaje para poder estructurar el documento que se quiera conseguir.

A continuación, procederemos a la explicación de la instalación del entorno para la bibloteca y posterirormente profundizaremos en los distintos aspectos para poder crear un documento LaTeX con la utilización de la biblioteca.

Instalación

Para poder construir documentos con Simplex, lo primero que necesitaremos será la plataforma Haskell, para ello bastará con irse a la página oficial de Haskell [4] y descargar dicha plataforma, o bien, instalarlo a través de cabal, en una consola de linux tecleamos:

  • Para instalar cabal:
  1.       $ sudo apt-get install cabal-install
  • Para instalar el paquete Simplex:
  1.       $ cabal install --prefix=<destino> --user

Simplex necesitará también una distribución LaTeX la cual proporcione el comando pdflatex. Se recomienda TeX Live que proporciona todos los paquetes que Simplex emplea.

Para otras características que Simplex provee serán necesarios otros paquetes éstos son graphviz y ImageMagick, pero si no se emplean dichas características Simplex funcionará a la perfección.

Ubuntu

En Ubuntu será necesario instalar los paquetes:

  1.       $ sudo apt-get install haskell-platform
  2.       $ sudo apt-get install texlive
  3.       $ sudo apt-get install texlive-latex-extra
  4.       $ sudo apt-get install texlive-math-extra

Por último y como se ha comentado anteriormente es recomendable instalar graphviz, para ello:

      $ sudo apt-get install graphviz

Uso de Simplex

     $ simplex [opciones] [archivos...]

Opciones:

 -h        --help              Print this help text.
           --version           Print version information.
 -v        --verbose           Verbose output.
 -d        --dry-run           Dry run (do not create any files).
 -n        --no-clean          Do not clean up after building.
 -p        --print             Print processed tex to stdout.
 -c        --crop              Crops the document so that no margins are left.
 -f        --force             Forces the creation of output files.
 -t , -T   --type=             Specify type of output (pdf, png, tex)
 -x        --pdflatex=         Path to `pdflatex' executable
 -k        --pdfcrop=          Path to `pdfcrop'
 -z        --graphviz=         Path to `dot' (graphviz)
 -g        --gnuplot=          Path to `gnuplot'
 -m        --convert=          Path to `convert' (ImageMagick)
 -w[]      --watch[=]          Watch files or folder (optionally amount of time in ms)
 -3        --three-times       Execute `pdflatex' three times instead of the default two times.
           --density=, --dpi=  For output type `png' only, specifies dpi.
           --quality=          For output type `png' only, specifies quality.

Sintaxis Básica

Uno de los conceptos que hay que tener claro para el correcto uso de Haskell es la identación, en Simplex también. Olvidémonos ahora de la función del comando y centrémonos en como se pondría:

En LaTeX uno de los recursos más utilizados es la sección \section{Nombre de la sección}. Como podemos apreciar en LaTeX no existe el concepto de identación para el funcionamiento del lenguaje, sin embargo en Simplex es uno de los puntos críticos:

=  Título de la sección
   Aquí va el texto de la sección

El ejemplo es sencillo, y vemos que con sólo emplear un signo igual ya el intérprete entiende que nos estamos refiriendo a una sección. Más tarde veremos en más profundidad el concepto de sección en Simplex.

Estructura del documento

La estructuración del documento es muy similar a la que utiliza LaTeX, con la particularidad de las identaciones como hemos comentado en el punto anterior. Un aspecto importante y a tener muy en cuenta es el uso de las tablas de contenidos en Simplex. Esta biblioteca por defecto no numera las secciones, es decir por defecto es el comando de LaTeX, \section*{Título de la sección} , pero hay un matiz importante, en el momento que introduzcamos una tabla de contenidos esto cambia, y las secciones pasan a ser del numeradas, es decir, el comando de LaTeX, \section{Título de la sección}

Para introducir la tabla de contenidos, debemos emplear el comando
tableofcontents 
similar al empleado en LaTeX, \tableofcontents{}.

Listas

En Simplex, como en LaTeX existen dos tipos de listas, las no numeradas y las numeradas. Por otro lado, existe un tercer tipo, las listas descriptivas. Todas pueden ser anidadas. A continuación se describen:

  • Numeradas: Las listas numeradas se crean en LaTeX con el comando:
  1. \begin{itemize} 
  2.        \item Punto 1 
  3.        \begin{itemize}
  4.             \item Punto 1.1 
  5.        \end{itemize} 
  6.        \item Punto 2
  7. \end{itemize}

Mientras que en Simplex, utilizamos:

  1. *Punto 1
  2.  
  3. **Punto 1.1
  4.  
  5. *Punto 2
  • No numeradas: Las listas no numeradas se crean en LaTeX con el comando:
  1. \begin{enumerate} 
  2.        \item Punto 1 
  3.        \begin{enumerate}
  4.             \item Punto 1.1 
  5.        \end{enumerate} 
  6.        \item Punto 2
  7. \end{enumerate}

En cambio, en Simplex sería lo siguiente:

  1. + Punto 1
  2.  
  3. ++ Punto 1.1
  4.  
  5. + Punto 2
  • Descriptivas: Las listas descriptivas se crean en LaTeX con el comando:
  1. \begin{description}
  2.   \item[nombre] \hfill \\ 
  3.    Esta es la definición o descripción del concepto. \\ Ponemos otra descripción del mismo concepto. 
  4.   \item[nombre2] \hfill \\ 
  5.    Esto es un descripción en una sola línea.
  6. \end{description}

En cambio en Simplex sería:

  1. : nombre: Esta es la definición o descripción del concepto.
  2.   Ponemos otra descripción del mismo concepto.
  3.  
  4. : nombre2: Esto es un descripción en una sola línea.

Características de sintaxis en línea

La sintaxis viene influenciada por un lenguaje de marcas, las siguientes marcas pueden ser utilizadas para cambiar el aspecto del contenido de los documentos:

  • Negrita: Para el texto en negrita en LaTeX necesitamos recurrir a una sentencia relativamente más compleja sería algo como \textbf{Esto es texto en negrita}, mientras que en Simplex sería algo como:
**Esto es texto en negrita**
  • Cursiva: Para el texto en cursiva en LaTeX empleamos la sentencia \emph{Esto es texto en cursiva}, en Simplex sería de la siguiente manera:
*Esto es texto en cursiva*
  • Subrayado: Para el texto subrayado en LaTeX tenemos la sentencia \uline{Esto es texto subrayado}, en Simplex empleamos la sentencia de la siguiente forma:
_Esto es texto subrayado_
  • Formula matemática: En LaTeX para escribir una formula matemática empleamos \[M_{ath}^{2}\] esto da una salida como esta M_{ath}^2 , en cambio en Simplex sería algo como lo siguiente:
\[M_{ath}^{2}\]
  • Código embebido: En LaTeX podemos insertar texto en formato código, sería de la siguiente forma, \begin{verbatim} Esto es entorno verbatim \end{verbatim}, en cambio en Simplex empleamos:
\@inline verbatim@

Enlaces, etiquetas y referencias

Tanto en LaTeX como en Simplex podemos definir enlaces, etiquetas y referencias, a continuación exponemos cada uno de ellos. En primer lugar vamos a definir como se harían cada uno de ellos en LaTeX y a continuación en Simplex. Vamos a enumerar cada una de las funciones:

  • Hiperenlaces: En LaTeX los hiperenlaces a una página web se escribe de la siguiente forma, \href{http://www.uca.es/}{UCA}, mientras que en simplex basta con hacer:
\[http://www.uca.es/ UCA]
  • Etiquetas: Las etiquetas en LaTeX se escriben de la siguiente forma, \label{sec:EtiquetaA}, mientras que en Simplex es algo como:
label sec:EtiquetaA
  • Referencias: Las etiquetas tanto en LaTeX como en Simplex pueden ser referenciadas, tenemos dos tipos de referencias, las que van a un punto concreto o las que van a una determinada página, en LaTeX esta tarea la realizamos con el comando \nameref{sec:EtiquetaA} y el comando \vpageref{sec:EtiquetaA} respectivamente, en Simplex en cambio sería para las referencias a puntos algo como:
\<sec:EtiquetaA>

Mientras que cuando queramos hacer referencias a páginas emplearemos la siguiente sintaxis:

\(sec:EtiquetaA)

Notas a pie de página

Tanto en LaTeX como en Simplex podemos definir notas a pie de página, en LaTeX empleamos la siguiente notación, \footnote{Nota a pie de página}, mientras que en Simplex sólo tendremos que escribir lo siguiente:

\^Nota a pie de página^

NOTA: Para poder activar las notas a pie de página será necesario utilizar la sentencia @endnotes al principio del documento, y finalizar el documento con la sentencia endnotes.

Código original de LaTeX

Para extender la potencia de Simplex, éste nos permite embeber código LaTeX directamente sobre un documento propio de Simplex. Esto se hace de la siguiente forma:

.latex 
       %% Esto es código LaTeX puro.
       \thispagestyle{plain}

Destacar que Simplex no permite incluir dentro del código LaTeX sentencias como pueden ser: \begin{document} ó \end{document}, destacar también que si empleamos la sentencia dedicada al preámbulo de LaTeX que nos proporciona Simplex, podemos incluir sentencias directamente relacionadas con el preámbulo sin necesidad de indicar que es código LaTeX, sería algo como:

@preamble
    \usepackage{setspace}
    \doublespacing

Comentarios

En Simplex no podía ser de otra forma, al igual que en LaTeX se dispone de la posibilidad de incluir comentarios en los documentos. Mientras que en LaTeX empleamos los dos porcentajes para el comentario en línea %% Esto es un comentario de línea en LaTeX, en Simplex tan sólo será necesario incluir un signo de porcentaje:

% Esto es un comentario de linea en Simplex

También tanto en LaTeX como en Simplex podemos incluir bloques de comentarios, esto en LaTeX es, \begin{comment}Líneas comentadas...\end{comment}, mientras que en Simplex lo hacemos incluyendo en el documento la siguiente sentencia:

.comment
         Esto es un comentario.
         Esto también es un comentario.

Para finalizar el comentario basta con incluir una nueva sección, subsección... o cualquier sentencia similar.

Características avanzadas

Gráficos / Imágenes

Las imágenes pueden ser incluidas con el comando image:

image imagen.png

El tamaño y la rotación de las imágenes pueden ser controladas usando los siguientes comandos:

image-width Establece la anchura de todas las imágenes a partir de la anchura especificada. Ejemplo: image-width 8cm. Tenga en cuenta que 
            todos los valores dados por los comandos se transmiten literalmente a pdflatex, por lo que es posible utilizar valores como
            \textwidth. Ejemplo: image-width \textwidth
image-height equivalente a image-width
image-size Establece tanto la anchura como la altura a todas las imágenes afectadas por el comando.
           Ejemplo: image-size 16cm 9cm
image-angle Establece la rotación de una imagen.
image-trim Recorta las imágenes a partir de las longitudes especificadas en el comando. Los argumentos correspondientes para recortar las
           imágenes son la parte izquierda, inferior, derecha y superior respectivamente. 
           Ejemplo: image-trim 1cm 0cm 2cm 1cm 
image-defaults Limpia todas las directivas de las imágenes.

A continuación se muestra un ejemplo de uso para los comandos nombrados anteriormente:

  1. image-height 5cm
  2. image-angle 170
  3.  
  4. columns 3
  5. image zebra.jpg
  6. image elephant.jpg
  7. image-angle 350
  8. image zebra.jpg
  9. endcolumns

En el ejemplo anterior primero se establece la altura y la rotación de las imágenes. Posteriormente se incluyen las imágenes formando tres columnas. El resultado obtenido será:


Ejemplo de inclusión de imágenes


Mientras el código en LaTeX para generar el resultado anterior sería:

  1. \begin{multicols}{3}
  2.  
  3.   \includegraphics[height=5cm,angle=170]{zebra.jpg}
  4.  
  5.   \includegraphics[height=5cm,angle=170]{elephant.jpg}
  6.  
  7.   \includegraphics[height=5cm,angle=350]{zebra.jpg}
  8.  
  9. \end{multicols}

Como se puede comprobar la diferencia entre Simplex y el código en Latex es que el código en Simplex es mucho más intuitivo siendo a la vez más fácil de recordar los comandos necesarios para la inclusión de las imágenes.

Soporte para Graphviz

También podemos incluir gráficos Graphviz directamente a nuestro documento simplex. Graphviz es un paquete para representar información estructural como diagramas de grafos y redes abstractas especificados en lenguaja DOT.

Un ejemplo en Simplex para incluir gráficos sería:

  1. .digraph
  2.     rankdir=LR;
  3.  
  4.     A -> M -> B;
  5.     A -> N -> B;

El resultado será el siguiente grafo:

Ejemplo de grafo dirigido


En el siguiente ejemplo se dibuja un grafo no dirigido, incluyendo además el comando visto en la sección anterior para rotar la imagen 30º.

  1. image-angle -30
  2. .graph
  3.     margin=0;
  4.  
  5.     A -- Center;
  6.     B -- Center;
  7.     C -- Center;
  8.     D -- Center;
  9.     E -- Center;
  10.     X -- E -- Y;

El resultado es representado como en la siguiente imagen:

Ejemplo de grafo no dirigido

Diseño de múltiples columnas

A continuación, nosotros podemos distribuir un texto en varias columnas con el comando columns. El ámbito del comando anterior se termina con el comando endcolumns. Además el texto puede ser forzado a continuar en la siguiente columna con el comando colbreak.

Mostramos un ejemplo usando imágenes en Simplex:

  1. image-height 4cm
  2. columns 2
  3. center
  4. image bushes.jpg
  5. image duck.jpg
  6. colbreak
  7. image zebra.jpg
  8. image elephant.jpg
  9. endcolumns

En LaTeX el equivalente al ejemplo anterior sería los siguientes comandos:

  1. \begin{multicols}{2}
  2.   \centering
  3.     \includegraphics[height=4cm]{bushes.jpg}
  4.     \includegraphics[height=4cm]{duck.jpg}
  5.   \vfill
  6.   \columnbreak
  7.     \includegraphics[height=4cm]{zebra.jpg}
  8.     \includegraphics[height=4cm]{elephant.jpg}
  9. \end{multicols}

Esto produce la siguiente representación en el que tenemos dos imágenes por cada columna:

Ejemplo de imágenes distribuidas en columnas

Figuras

Las figuras (como en LaTeX \begin{figure} ) pueden ser insertadas usando los comandos en Simplex figure y endfigure. Mientras los títulos de las figuras pueden establecerse con el commando caption.

A continuación, mostramos un ejemplo usando las figuras en Simplex:

  1. figure
  2. image-width \textwidth
  3. caption Esto es un ejemplo de figura
  4. image bushes.jpg
  5. endfigure

En LaTeX el equivalente al ejemplo anterior sería los siguientes comandos:

  1. \begin{figure}[h!]
  2.   \centering
  3.   \caption{Esto es un ejemplo de figura}
  4.   \includegraphics[width=\textwidth]{bushes.jpg}
  5. \end{figure}

El resultado es representado como en la siguiente imagen:

Ejemplo de figura

Tablas

Todos los comandos de tabla comienzan con >. Cada > declara una celda.

  • >+ Inicia una nueva fila de la tabla.
  • >- Inicia una nueva fila de la tabla y pinta una línea horizontal.
  • >= Inicia una nueva fila de la tabla y pinta una línea horizontal doble.

Un formato de tabla (como en \begin{tabular}{format}) puede obtenerse con >@.


  \begin{array}{lll}
      1   & 2   & 3 \\
      4   & 5   & 6 \\
      7   & 8   & 9
  \end{array}
\qquad
  \begin{array}{l|l||l}
      1   & 2   & 3 \\
      4   & 5   & 6 \\
      7   & 8   & 9
  \end{array}
\qquad \quad
  \begin{array}{l|l||l}
      \hline
      1   & 2   & 3 \\
      4   & 5   & 6 \\
      7   & 8   & 9 \\
      \hline
  \end{array}
\qquad \quad
  \begin{array}{|l|l||l|}
      \hline
      1   & 2   & 3 \\
      \hline
      4   & 5   & 6 \\
      \hline
      \hline
      7   & 8   & 9 \\
      \hline
  \end{array}

El código que crea estas cuatro tablas en LaTeX es el siguiente:

  1.   \begin{tabular}{lll}
  2.       1   & 2   & 3 \\
  3.       4   & 5   & 6 \\
  4.       7   & 8   & 9
  5.   \end{tabular}
  6. \quad
  7.   \begin{tabular}{l|l||l}
  8.       1   & 2   & 3 \\
  9.       4   & 5   & 6 \\
  10.       7   & 8   & 9
  11.   \end{tabular}
  12. \quad
  13.   \begin{tabular}{l|l||l}
  14.       \hline
  15.       1   & 2   & 3 \\
  16.       4   & 5   & 6 \\
  17.       7   & 8   & 9 \\
  18.       \hline
  19.   \end{tabular}
  20. \quad
  21.   \begin{tabular}{|l|l||l|}
  22.       \hline
  23.       1   & 2   & 3 \\
  24.       \hline
  25.       4   & 5   & 6 \\
  26.       \hline
  27.       \hline
  28.       7   & 8   & 9 \\
  29.       \hline
  30.   \end{tabular}

El código equivalente en SimpleX es el siguiente:

1  > 1      1  >@ l|c||r     1  >@ l|c||r     1  >@ |l|c||r|
2  > 2      2  > 1           2  >-            2  >-
3  > 3      3  > 2           3  > 1           3  > 1
4  >+       4  > 3           4  > 2           4  > 2
5  > 4      5  >+            5  > 3           5  > 3
6  > 5      6  > 4           6  >+            6  >-
7  > 6      7  > 5           7  > 4           7  > 4
8  >+       8  > 6           8  > 5           8  > 5
9  > 7      9  >+            9  > 6           9  > 6
10 > 8      10 > 7           10 >+            10 >=
11 > 9      11 > 8           11 > 7           11 > 7
            12 > 9           12 > 8           12 > 8
                             13 > 9           13 > 9
                             14 >-

Tipos de celdas

Las celdas pueden tener diferentes tipos de contenido. La almohadilla (#) designa una celda que tiene un contenido textual. El signo de admiración (!) indica una celda de cabecera (es decir: tener un tipo de letra negrita). Un signo de dólar ($) designa una celda que tiene contenido matemático.

1 >@ |c|c|
2 >-
3 >$ \sum_{i=1}^n n^2
4 >! Heading
5 >-
6 ># Verbatim yeah <=> yeah
7 > Ordinary cell.
8 >-


 \begin{array}{|c|c|}
   \hline
   \sum_{i=1}^n n^2 & \bold{Heading} \\
   \hline
   Verbatim \quad yeah <=> yeah & \text{Ordinary Cell} \\
   \hline
 \end{array}

Su equivalente en LaTeX sería:

  1. \begin{tabular}{|c|c|}
  2.    \hline
  3.    $\sum_{i=1}^n n^2$ & \bold{Heading} \\
  4.    \hline
  5.    \verbatim{Verbatim yeah <=> yeah} & \text{Ordinary Cell} \\
  6.    \hline
  7.  \end{tabular}

Alineación de celdas

La alineación de las celdas se puede cambiar por la columna (usando >@) o por celda. Todo lo que se necesita es incluir L, R o C (de izquierda, derecha o centro, respectivamente) en la definición de celda:

1  >@ clr
2  >! Heading 1
3  >! Heading 2
4  >! Heading 3
5  >=
6  > A
7  > B
8  > C
9  >-
10 > D
11 > E
12 > F
13 >-
14 >L Le
15 >R Ri
16 >C Ce
17 >=


\begin{array}{lcr}
  Heading 1 & Heading 2 & Heading 3 \\
  \hline \hline
  A & B & C \\
  \hline
  D & E & F \\
\end{array}


\begin{array}{rlc}
  \hline
  \qquad \quad Ri & Le \qquad \quad & \qquad Ce \qquad \\
  \hline \hline
\end{array}

Tenga en cuenta que es una redefinición de la celda, aparte de la declaración de tabla (dado vía >@ clr). Por lo tanto, debe especificar las fronteras verticales en la celda. Esto es posible escribiendo una barra (|) a la izquierda y/o derecha de la nueva definicón de la celda:

...
14 >|L| Le
15 >R| Ri
16 >C| Ce
...

Texto en tablas

Las tablas en LaTeX no son tan fáciles como, por ejemplo, las tablas HTML. Un problema son las celdas que contienen texto de múltiples líneas. Para esto SimpleX tiene que declarar una columna de texto (usando >@). La columna especificada es p. También se tiene que declarar el ancho de la columna, así: p{4cm}.

  1. >@ |r|p{6cm}|
  2. >-
  3. >! Head
  4. >! Yet another
  5. >-
  6. > 1337
  7. > ...
  8. >-


\begin{array}{|r|l|}
	\hline
	\bold{Head} & \bold{Yet another} \\
	\hline
	1337 & Nullam quis risus eget urna mollis ornare vel eu leo...\\
	\hline
\end{array}

  1. \begin{tabular}{|r|p{6cm}|}
  2. 	\hline
  3. 	\bold{Head} & \bold{Yet another} \\
  4. 	\hline
  5. 	1337 & Nullam quis risus eget urna mollis ornare vel eu leo...\\
  6. 	\hline
  7. \end{tabular}

También hay entorno de tabla más flexible, llamado tabularx. Es compatible con las columnas que contienen texto y lo ajusta en consecuencia. Se designará una columna como columna de texto, pero no se necesita especificar el ancho. SimpleX convertirá la tabla en una tabla tabularx automáticamente si se define la tabla con >X en lugar de >@. La columna especificada para un texto de una columna de tabularx es X.

  1. >X |r|X|
  2. >-
  3. >! Head
  4. >! Yet another
  5. >-
  6. > 1337
  7. > Nullam quis risus eget urna mollis ornare vel eu leo. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
  8. >-

Sin embargo, las tablas creadas con >X tienen deficiencias propias. Por ejemplo, no se puede utilizar el código textual en línea en una celda dentro de una tabla de tabularx.

Filas que abarcan varias columnas

Es posible hacer que una fila abarque múltiples columnas, simplemente añadiendo el número de columnas que la fila debe abarcar en la en la celda de inicio. Se debe tener en cuenta que esto anulará todas las declaraciones de columna L, R, y C que se hayan hecho, por lo que se tendrá que especificar las fronteras cuando sea necesario. Las columnas que abarcan varias filas están centradas por defecto (es posible combinar las columnas que abarcan los números y especificaciones de alineación dores, como >|2L| o >11C!).

  1. >@ |l|l|
  2. >-
  3. >|2|
  4. Team sheet
  5. >-
  6. > GK
  7. > Paul Robinson
  8. >+
  9. ...


\begin{array}{|c|}
	\hline
	Team sheet\\
	\hline
	\begin{array}{l|l}
		GK & Paul Robinson\\
		LB & Lucus Radebe\\
		DC & Michael Duberry\\
	\end{array}\\
	\hline
\end{array}

El texto equivalente en LaTeX sería el siguiente:

  1. \begin{array}{|c|}
  2. 	\hline
  3. 	Team sheet\\
  4. 	\hline
  5. 	\begin{array}{l|l}
  6. 		GK & Paul Robinson\\
  7. 		LB & Lucus Radebe\\
  8. 		DC & Michael Duberry\\
  9. 	\end{array}\\
  10. 	\hline
  11. \end{array}

Columnas que abarcan varias filas

El caso opuesto al apartado anterior, necesitar que una columna abarque varias filas. El código SimpleX es el siguiente:

  1. >@ |l|l|l|
  2. >-
  3. >|3|
  4. Team sheet
  5. >-
  6. > Goalkeeper
  7. > GK
  8. > Paul Robinson
  9. >-
  10. >,4 Defenders
  11. > LB
  12. > Lucus Radabe
  13. ...


\begin{array}{|c|}
	\hline
	Team sheet\\
	\hline
	\begin{array}{l|l}
		Goalkeeper	& \begin{array}{l|l}
					GK & Paul Robinson\\
				\end{array}\\
		\hline
		Defenders	& \begin{array}{l|l}
					LB & Lucus Radabe\\
					DC & Michael Duberry\\
					DC & Dominic Matteo\\
				\end{array}\\
	\end{array}\\
	\hline
\end{array}

Celdas de color

Tabla con celdas de color
  1. >@ cc
  2. >red
  3. A
  4. >blue
  5. B
  6. >+
  7. >green
  8. C
  9. >yellow


Tabla de color
  1. >@ |c|c|c|c|
  2. >-
  3. >red
  4. >2yellow|
  5. >red
  6. >-
  7. >yellow,2
  8. >2,2| Table
  9. >yellow,2
  10. >+
  11. >yellow
  12. >C
  13. >C|
  14. >yellow
  15. >-
  16. >red
  17. >2yellow|
  18. >red
  19. >-

Tablas en formato ASCII


 \begin{array}{|c|c|c|c|}
   \hline
   7 & 8 & 1 & 19 \\
   \hline
   172 & 19 & 42 & 20 \\
   \hline
   420 & 4 & 17 & 64 \\
   \hline
 \end{array}

  1. .table
  2.  +-----+----+----+----+
  3.  |  7  |  8 |  1 | 19 |
  4.  +-----+----+----+----+
  5.  | 172 | 19 | 42 | 20 |
  6.  +-----+----+----+----+
  7.  | 420 |  4 | 17 | 64 |
  8.  +-----+----+----+----+

Composición tipográfica de ecuaciones utilizando tablas


\begin{array}{clcl|l}
 <=> & x^2 + bx + c & = & 0 & \mathrm{isolate} \quad x: -c \\
 <=> & x^2 + bx & = & -c & +\left(\frac b 2\right)^2 {(completing \quad the \quad square)}\\
 <=> & x^2 + bx + \left(\frac b 2\right)^2 & = & -c +\left(\frac b 2\right)^2 & \mathrm{binomial \quad formula \quad reverse} \\
 <=> & \left( x + \frac b 2 \right)^2 & = & \left(\frac b 2\right)^2 - c & \sqrt{} \\
 <=> & x + \frac b 2 & = & \pm \sqrt{\left(\frac b 2\right)^2 - c} & -\frac b 2 \\
 <=> & x & = & -\frac b 2 \pm \sqrt{\left(\frac b 2\right)^2 - c} \\
\end{array}


El código SimpleX que implementa esta tabla es el siguiente:


  1.  >@ clcl | l
  2.  
  3.  >$ <=>
  4.  >$ x^2 + bx + c
  5.  >$ =
  6.  >$ 0
  7.  > isolate $x$: $-c$
  8.  
  9.  >+
  10.  
  11.  >$ <=>
  12.  >$ x^2 + bx
  13.  >$ =
  14.  >$ -c
  15.  > $+\left(\frac b 2\right)^2$ *(completing the square)*
  16.  
  17.  >+
  18.  
  19.  >$ <=>
  20.  >$ x^2 + bx + \left(\frac b 2\right)^2
  21.  >$ =
  22.  >$ -c +\left(\frac b 2\right)^2
  23.  > binomial formula reverse
  24.  
  25.  >+
  26.  
  27.  >$ <=>
  28.  >$ \left( x + \frac b 2 \right)^2
  29.  >$ =
  30.  >$ \left(\frac b 2\right)^2 - c
  31.  >$ \sqrt{\text{\nbsp}}
  32.  
  33.  >+
  34.  
  35.  >$ <=>
  36.  >$ x + \frac b 2
  37.  >$ =
  38.  >$ \pm \sqrt{\left(\frac b 2\right)^2 - c}
  39.  >$ -\frac b 2
  40.  
  41.  >+
  42.  
  43.  >$ <=>
  44.  >$ x
  45.  >$ =
  46.  >$ -\frac b 2 \pm \sqrt{\left(\frac b 2\right)^2 - c}


El código LaTeX que implementa esta tabla es el siguiente:


  1. \begin{array}{clcl|l}
  2.  <=> & x^2 + bx + c & = & 0 & \mathrm{isolate} \quad x: -c \\
  3.  <=> & x^2 + bx & = & -c & +\left(\frac b 2\right)^2 {(completing \quad the \quad square)}\\
  4.  <=> & x^2 + bx + \left(\frac b 2\right)^2 & = & -c +\left(\frac b 2\right)^2 & \mathrm{binomial \quad formula \quad reverse} \\
  5.  <=> & \left( x + \frac b 2 \right)^2 & = & \left(\frac b 2\right)^2 - c & \sqrt{} \\
  6.  <=> & x + \frac b 2 & = & \pm \sqrt{\left(\frac b 2\right)^2 - c} & -\frac b 2 \\
  7.  <=> & x & = & -\frac b 2 \pm \sqrt{\left(\frac b 2\right)^2 - c} \\
  8. \end{array}

Anexos

Bloques

Estructura del Documento
  =
 ==   Encabezados.
===
 !!   Capítulos.
!!!   Partes.
 :=   Párrafos con la definición de una palabra al comienzo de la línea.
 :-


Listas y Artículos
  *   Artículos sin numerar (como el entorno itemize).
  +   Artículos enumerados (como el entorno enumerate).
  -
  :   Artículos con una palabra clave al comienzo de cada línea.
 ::
 ->   Artículos de notificación.


Tablas
  >   Una celda de tabla. Ver la sección Tablas para más información.
 >+   Siguiente fila, no línea.
 >-   Siguiente fila, línea simple.
 >=   Siguiente fila, línea doble.
 >^   Convierte la tabla en una figura con un título encima.
 >_   Convierte la tabla en una figura con un título debajo.
 >@   Definición de tabla (como en LaTeX).
 >X   Definición de tabla, también convierte la tabla en una tabla tabularx.


Otros
  .   Un párrafo.
 =>   Un párrafo introducido por \Rightarrow.
 <=   Un párrafo introducido por \Leftarrow.
<=>   Un párrafo introducido por \Leftrightarrow.
=!>   Un párrafo introducido por \nRightarrow.
<!=   Un párrafo introducido por \nLeftarrow.
<!>   Un párrafo introducido por \nLeftrightarrow.

Bloques especiales

Simplex como LaTeX, nos permite la introducción de texto escrito en multitud de formatos y de lenguajes de programación, resaltando la sintaxis en caso de tratarse de este último. Este comportamiento se consigue en LaTeX gracias a los lstlisting o entornos como Verbatim definiendo diferentes bloques. En cambio en Simplex es algo mucho más sencillo, se consigue de la siguiente forma:

.ascii     Un alias para el entorno .verbatim
 
.code      Texto Verbatim, formateado como código fuente, respeta todos los caracteres.
 
.code$     Como el ".code" pero permite las fórmulas matemáticas ($...$).
 
.comment   No incluye el texto en el documento, es un comentario.
 
.digraph   Para crear grafos dirigidos con el paquete graphviz.
 
.equation  Ecuaciones matemáticas. Como con, .latex \begin{equation}
 
.graph     Crea grafos no dirigidos, también con el paquete graphviz.
 
.haskell   Como el ".code" pero cargando las definiciones del lenguaje Haskell.
 
.java      Como el ".code" pero cargando las definiciones del lenguaje Java.
 
.latex     Permite la integración de código escrito directamente en LaTeX.
 
.math      Inserta el entorno matemático, idéntico a hacer .latex begin{displaymath}
 
.php       Como el ".code" pero cargando las definiciones del lenguaje PHP.
 
.python    Como el ".code" pero cargando las definiciones del lenguaje Python.
 
.table     Parsea como una tabla escrita en ASCII y renderiza usando LaTeX.
 
.verbatim  Inserta texto verbatim (como \begin{verbatim} en LaTeX).


Simplex también permite la la introducción de texto desde un fichero externo, esto se consigue gracias a la siguiente sintaxis:

#code myfile.java

Siendo myfile.java un fichero externo escrito en lenguaje Java, esto tratará el contenido del fichero como un bloque ".code"


Atajos

Existen multitud de atajos a la hora de escribir código en simplex, por ejemplo tenemos:

.#    Igual que ".code".
 
.@    Como ".code$".
 
.%    Como ".comment".
 
.$    Igual que ".math".
 
.!    Como ".verbatim".


Es importante saber que en los atajos anteriores es factible también sustituir los puntos por el carácter "#", por ejemplo es lo mismo escribir
.% Esto es un comentario
que hacer esto
#% Esto es un comentario
.

Directiva #include

Incluir literalmente el contenido de un fichero. Esto se hace en simplex así:
#include "fichero"

Un alias para el comando image. Hay una ligera diferencia que es que el fichero debe proporcionarse entre comillas como con '''#include'''. Por ejemplo:

#image "picture.png

Declaraciones

  1. @abstract
  2. @article
  3. @authors
  4. @book
  5. @cfoot
  6. @chead
  7. @date
  8. @doublespacing
  9. @draft
  10. @endnotes
  11. @fontsize
  12. @landscape
  13. @lfoot
  14. @lhead
  15. @margin-bottom
  16. @margin-left
  17. @margin-right
  18. @margin-top
  19. @margins
  20. @pagestyle
  21. @preamble
  22. @report
  23. @rfoot
  24. @rhead
  25. @scrartcl
  26. @slides
  27. @title
  28. @tocdepth

Formatos de página

  1. baselineskip
  2. baselinestretch
  3. columnsep
  4. columnseprule
  5. columnwidth
  6. evensidemargin
  7. headheight
  8. oddsidemargin
  9. paperheight
  10. paperwidth
  11. parindent
  12. parskip
  13. tabcolsep
  14. text
  15. oatsep
  16. textheight
  17. textwidth
  18. topmargin

Comandos

appendix         Inicia el apéndice. Las secciones a partir de este punto  se contabilizarán con letras. 
bfseries         Como \bfseries en LaTeX. Muestra el siguiente texto en negrita. Para terminar el texto en negrita utilice el 
                 comando reset o normalfont.
bold             Alias para \bfseries. Muestra el siguiente texto en negrita. Para terminar el texto en negrita utilice el 
                 comando reset o normalfont.
caption          Declara un título para la figura actual. Sólo funciona para el comando figure.
center           Centra el texto a partir de donde se utilize el comando.
colbreak         Inicia una nueva columna en el comando columns.
columns          Inicia el texto dentro de las columnas. Usage: columns <texto>
em               Como \em en LaTeX.
endcolumns       Finaliza el comando columns.
endfigure        Finaliza el comando figure.
endignore        Finaliza el comando ignore.
endnoinclude     Finaliza el comando noinclude.
endnotes         Inserta una lista con notas finales.
figure           Inicia una figura (como \begin{figure}). Toma un parámetro opcional que especifica la ubicación de la figura. Si 
                 se omite toma por defecto el valor h!. Si se quiere dejar explícitamente en blanco se tiene que espicificar el valor  
                 auto. Los valores posibles que se pueden especificar son: h, t, b, p, H, ! (pueden ser combinados). Ejemplos: 
                 figure htb, figure auto, figure h!
figures          Inicia una lista de figuras.
float-barrier    Las figuras que se escriban bajo este comando no se verán afectadas por el comando figures.
footnotesize     Como \footnotesize en LaTeX.
hfill            Como \hfill en LaTeX.
huge             Como \huge en LaTeX.
ignore           No tiene en cuenta el documento hasta el próximo comando endignore.
image-angle      Establece la rotación de las imágenes. Uso: image-angle <angle>
image-defaults   Restablece todas las propiedades de la imagen.
image-height     Establece la altura de las imágenes. Uso: image-height <height>
image-size       Define tanto la altura y la anchura de la imagen a la vez. Uso: image-size <width><height>
image-trim 	 Recorta la imagen. Uso: image-trim <left><bottom><right><top>
image-width 	 Establece la anchura de la imagen. Uso: image-width <width>
image 		 Inserta la imagen especificada, por ejemplo image miimagen.png. El comando sería en LaTeX como  
                 \includegraphics. Tenga en cuenta que se aplican las mismas limitaciones tanto para pdflatex como para  
                 includegraphics (es decir, sólo se incluyen los formatos JPG, PNG y  archivos PDF).			
italic           Alias para \itshape. Muestra el texto en cursiva. Para terminar el ambito del comando usar  reset o  
                 normalfont.
itshape 	 Como \itshape en LaTeX. Muestra el texto en cursiva. Para terminar el ambito del comando usar reset o 
                 normalfont.
large 		 Como \large en LaTeX.
left 		 Alinea a partir de este punto el texto a la izquierda. Tenga en cuenta que este comando no justificará el texto como hace 
                 LaTeX.
mdseries 	 Como \mdseries en LaTeX.
newpage 	 Como \newpage en LaTeX.
noinclude 	 La siguiente parte del documento (hasta el comando endnoinclude) no se procesará.
noindent 	 Como \noindent en LaTeX.
normalfont 	 Como \normalfont en LaTeX.
normalsize 	 Como \normalsize en LaTeX.
pagebreak 	 Alias para \newpage.

Símbolos

En Simplex podemos introducir diferentes símbolos especiales, en los siguientes ejemplos veremos como generar dichos símbolos y caracteres, y como sería la salida generada:


\A \B \C \D \E \F \G \H \I \J \K \L \M
\N \O \P \Q \R \S \T \U \V \W \X \Y \Z


Letras


\Ac \Bc \Cc \Dc \Ec \Fc \Gc \Hc \Ic \Jc \Kc \Lc \Mc
\Nc \Oc \Pc \Qc \Rc \Sc \Tc \Uc \Vc \Wc \Xc \Yc \Zc


Letras1


\Af \Bf \Cf \Df \Ef \Ff \Gf \Hf \If \Jf \Kf \Lf \Mf
\Nf \Of \Pf \Qf \Rf \Sf \Tf \Uf \Vf \Wf \Xf \Yf \Zf


Letras2



Otras sentencias

Podemos emplear las siguientes sentencias para conseguir diferentes salidas, a continuación exponemos las más interesantes:


\lastpage Inserta el número de la última página.


\thepage Inserta el número de la página actual.


\thesection Inserta el número de la sección actual.


\thechapter Inserta el número del capítulo actual.


\today Inserta la fecha de hoy.

Descargas

Los ficheros generados durante el trabajo con la biblioteca:

Referencias

  1. Simplex https://github.com/scravy/simplex
  2. Latex http://es.wikipedia.org/wiki/LaTeX
  3. Markdown http://es.wikipedia.org/wiki/Markdown
  4. Haskell http://www.haskell.org/platform/
Herramientas personales