Manual_Restructured_Text_Latex_Sphinx_Ed_1.0
Transcripción
Manual_Restructured_Text_Latex_Sphinx_Ed_1.0
Manual de Usuario RestructuredText, Latex y Sphinx Ed. 1.0.0 Enero 20, 2011 Ingenio Sólido S.A.S Nit: 900363185-6 Jaime Andrés García Mejía Contenido 1 Introducción 1 2 Estructura de un Manual de Usuario Básico 2 3 Comparación de Tecnología para hacer manuales de usuario 3 3.1 Restructured Text vs Latex 4 3.1.1 Formato Básico 4 3.2 Títulos 4 3.3 Listas 4 3.4 Listas numeradas 4 3.5 Imágenes 5 3.6 Tabla sencilla 5 4 Latex 7 4.1 Instalación de Latex 7 4.2 Construcción de Formato 7 4.3 Distribucción de las márgenes en Latex 8 5 Sphinx 10 5.1 Python 10 5.2 Sphinx 10 5.3 Rst2Pdf 10 5.4 PIL 10 5.5 Instalación del Software en Windows 10 5.6 Utilización de Sphinx 11 5.7 Manual de referencia de Text 12 5.7.1 Títulos y subtítulos 12 5.7.2 Saltos de página 12 5.7.3 Listas 12 5.7.4 Imágenes 13 Sección 1 Introducción 1 1 Introducción Ingenio Sólido como empresa desarrolladora de hardware y software esta constantemente elaborando documentación técnica y manuales de usuario para sus productos. Para nosotros la documentación se relaciona directamente con los procesos de desarrollo, estandarización y soporte. Una buena documentación agiliza el proceso de adaptación de tecnologías empleadas en otros proyectos y el desarrollo de nuevas tecnologías, permite la estandarización de los procesos de diseño electrónico y programación y disminuye la demanda de soporte básico por parte de los clientes. Teniendo en cuenta la gran cantidad de documentación a elaborar, procesadores de texto como Open Office Writer, Google Docs o Microsoft Word no proveen la rapidez de construcción ni los resultados que nuestros estándares de calidad exigen. Por esta razón Ingenio Sólido ha optado por utilizar otras herramientas de elaboración de documentación que en principio pueden parecer más complejas de utilizar pero que a largo plazo disminuye el proceso a menos de la mitad y que ofrece unos resultados realmente sorprendentes. En esta serie de artículos, se establecerá una estructura guía para manuales de usuario y se explicará el proceso de instalación y uso de los lenguajes para construcción de documentación RestructuredTex y Latex. En la primera parte se revisará el proceso de estructuración de un manual de usuario, y se mostrarán algunos ejemplos de documentación. Manual de Usuario Sección 2 Estructura de un Manual de Usuario Básico 2 2 Estructura de un Manual de Usuario Básico A continuación se describe la estructura mínima recomendada para un manual de usuario básico. En los casos de manuales de usuario extensos o complejos, sería bueno considerar una sección para el glosario y un índice. • Portada: En esta página esta el título del manual, una imagen del producto, el logo de la empresa y el número de versión del documento. • Título: En esta página se muestra información sobre el producto al que pertenece el manual y la empresa que lo elaboró, derechos de autor yacuerdos de licencia de uso. • Histórico de revisiones: En esta sección se muestra un tabla explicando los cambios que ha tenido el manual en cada versión que se ha realizado. • Tabla de contenido: Lista el contenido del manual. En caso de manuales extensos, se deberían incluir también lista de tablas y lista de figuras. • Contenido del Manual • Encabezado y Pie de Página: Deberían mostrar el número de la página y la sección. Esto permitirá al usuario guiarse dentro del documento. • Prefacio: En esta sección se debe realizar la descripción general del producto, requerimientos para usarlo y descripción de los capítulos que componen el manual. • Guía Rápida de uso: En los casos donde el producto tiene muchas funciones, puede ser bueno incluir una guía rápida de como utilizarlo. Esta guía debe buscar ser corta y útil para la mayor cantidad de personas dentro del público objetivo. • Manual de Usuario: Se refiere al contenido principal, para la construcción del contenido es importante tener que su profundidad depende del público al que va dirigido. Por lo tanto a pesar de que usted considere que hay pasos obvios, estos no necesariamente lo son para su cliente. En los casos de que el manual busque ser referencia de desarrollo, es apropiada la incluición de diseños electrónicos y segmentos de código. • Solución de problemas comunes – Preguntas frecuentes: En esta sección se registra las preguntas y problemas más comunes respecto al producto. Es importante ir actualizando esta sección a medida que se van encontrando nuevos problemas en el uso del producto. En cuanto a referencias de manuales de productos de hardware bien estructuradas, se pueden destacar: • Los elaborados por Microchip, por ejemplo el del PIC16f505. • Los elaborados por Atmel, por ejemplo el del ATZB-24-A2B0. Hay muchas buenas referencia en cuanto a manuales de productos de software, pero quisiéramos destacar algunos realizados utilizando el software Sphinx, aplicación base de esta serie de artículos sobre elaboración de manuales: • Manual de Python http://docs.python.org/ • Manual de Django http://docs.djangoproject.com/ Sección 3 Comparación de Tecnología para hacer manuales de usuario 3 3 Comparación de Tecnología para hacer manuales de usuario A continuación revisaremos la tecnología empleada para hacer manuales de usuario. En primer lugar revisaremos en que casos se debería utilizar cada una de las herramientas. Debería usar RestructuredText si voy a: • Generar documentación en varios formatos (Por ejemplo HTML y PDF). También es posible convertir Latex a HTML e incluso PDF a HTML, pero su soporte no es tan bueno como el que proporciona un framework como Sphinx. • Manuales de Usuario. • Cotizaciones. • Artículos. Debería usar Latex si voy a: • Hacer un trabajo de grado o un libro largo. • Hacer un documento o publicación científica matemático. También se puede hacer a través de Rest utilizando un plugin que utiliza las librerías matemáticas de Latex. • Presentaciones. Tal vez en un futuro reevalúe esto, pero hay que destacar el poder de la clase beamer de Latex. • Manuales de Usuario. • Cotizaciones. • Artículos. Debería usar un Procesador de texto si voy a: • Hacer una carta, un memorando o un documento corto en general. Esta la ventaja de no tener que compilar, por lo que en un documento de una o dos hojas sin formato podría ser más rápido utilizar un procesador de texto. • Ojalá que para nada más. Como se pudo apreciar, tanto RestructuredText como el Latex, se pueden usar para generar cualquier tipo de documentación, lo que buscaremos resolver a continuación es ¿en dónde radica la diferencia? RST vs Latex La primera respuesta a esta pregunta es el tiempo, Latex lleva más tiempo de desarrollo lo que se traduce en un herramienta más robusta y con una comunidad más grande. Es mucho más difícil encontrar ayuda para implementar algún tipo de estilo o formato complejo en RestructuredText que en el Latex. La segunda respuesta es la sintaxis, de la cual se mostrará algunos ejemplos en la próxima tabla, ya que como se podrá apreciar la sintaxis de Restructured Tex suele ser más corta que la de Latex y más fácil de entender Sección 3.1 Restructured Text vs Latex y recordar. 3.1 Restructured Text vs Latex 3.1.1 Formato Básico Restructured Text: Negrilla **palabra* Cursiva *palabra* Latex: Negrilla \textbf{ palabra } Cursiva \textit{ palabra } 3.2 Títulos Restrucuted Text: Sección ======= Subsección ---------Subsubsección ************* Latex: \section{Sección} \subsection{Subsección} \subsubsection{Sub-subsección} 3.3 Listas Restructured Text: - Primer ítem - Segundo ítem - Tercer ítem Latex: \begin{itemize} \item Primer ítem \item Segundo ítem \item Tercer ítem \end{itemize} 3.4 Listas numeradas Restructured Text: 4 Sección 3.5 Imágenes 5 #. Primer ítem #. Segundo ítem #. Tercer ítem Latex: \begin{enumerate} \item Primer ítem \item Segundo ítem \item Tercer ítem \end{enumerate} 3.5 Imágenes Restructured Text: .. figure:: imagen.jpg Latex: \begin{figure} \includegraphics{imagen.jpg} \end{figure} 3.6 Tabla sencilla 1 2 3 4 5 6 Restructured Text: .. list-table:: *-1 -2 -3 *-4 -5 -6 Latex: \begin{table} \begin{tabular}{ccl} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{tabular} \end{table} La parte más compleja en ambas sintaxis es el manejo de tablas, el uso de tablas complejas (celdas de distinto tamaño entre filas), se maneja en RestructuredText hasta la fecha utilizando ASCII-Art, algo como esto: +------------+------------+-----------+ | Header 1 | Header 2 | Header 3 | Sección 3.5 Imágenes 6 +============+============+===========+ | body row 1 | column 2 | column 3 | +------------+------------+-----------+ | body row 2 | Cells may span columns.| +------------+------------+-----------+ | body row 3 | Cells may | - Cells | +------------+ span rows. | - contain | | body row 4 | | - blocks. | +------------+------------+-----------+ En Latex es necesario agregar algunas sentencias adicionales para indicar los comportamientos distintos de las celdas, por ejemplo:: \begin{tabular}{|l|l|l|} \hline \multicolumn{3}{|c|}{Encabezado} \\ \hline Campo & Campo & Campo \\ \hline \multirow{4}{*}{Fila} & Campo & Campo \\ & Campo & Campo \\ & Campo & Campo \\ & Campo & Campo \\ \hline \end{tabular} Aún así hay herramientas para facilitar este proceso, por ejemplo en el caso del RestructuredText está el Ascii Art Table, que permite generar tablas a partir de texto, disponible aquí: http://sourceforge.net/projects/tableart/files/ Y para el caso de Latex, hay herramientas para generar las tablas a partir de una hoja de cálculo de open office calc o desde Excel. • Herramienta para generar tablas desde Calc. • Herramienta para generar tablas desde Excel. Para concluir se puede establecer que ambos lenguajes son adecuados para la elaboración de documentación, el texto restructurado se caracteriza por tener una sintaxis más fácil y el Latex por su robustez y que la parte más complicada del proceso es la generación de tablas no simples, que puede ser facilitado a través de algunas herramientas. Sección 4 Latex 7 4 Latex 4.1 Instalación de Latex En el caso de Linux, la mayoría de distribuciones ya tienen instalado Latex. En caso de no ser así, en este sitio web http://www.tug.org/texlive/quickinstall.html encontrarán las instrucciones pertinentes (no difíciles seguir para un usuario de Linux) En el caso de Windows, se puede bajar la distribución de Latex Protext desde esta sitio web http://www.tug.org/protext/, es un poco pesado (750 MB). La instalación es como la de cualquier programa de Windows. Para habilitar el idioma español en Latex (Silabeo y localización) , se debe seguir las siguientes instrucciones: Entrar a través de Inicio – Miktext 2.8 – Setting – Languages. Seleccionar spanish y con el botón Up ponerlo como primero de la lista Descargar el Diccionario en español http://wiki.services.openoffice.org/wiki/Dictionaries Copiar diccionario en la carpeta dictionaries del programa Miktex Latex El lenguaje Latex puede ser escrito en cualquier editor de texto, aún así recomiendo utilizar un IDE (Entorno Integrado de Desarrollo) para facilitar su construcción. Recomiendo revisar los siguientes programas como opciones para edición de archivos Latex: • Texcnicenter (Windows) http://www.texniccenter.org/ • TexMaker (Mac, Windows, Linux) http://www.xm1math.net/texmaker/ • Gedit (Windows, Linux) http://www.xm1math.net/texmaker/ 4.2 Construcción de Formato Para la construcción del formato del documento, recomiendo generar un archivo de estilo específico a parte del contenido. Para hacer esto basta con crear un archivo e incluirlo con el siguiente comando: input{Styles} Donde el archivo Styles.tex contiene el estilo del documento Lo primero que debemos hacer es definir el tamaño de la hoja y las márgenes. Sección 4.3 Distribucción de las márgenes en Latex 8 En Latinoamérica se suele usar el tamaño carta, para decirle a latex que se debe usar éste, basta con utilizar la etiqueta de tamaño de papel en la hoja de estilos: setpapersize{USletter} Además, para definir las márgenes del documento es recomendable utilizar el paquete vmargin, para un mayor control sobre las mismas. Se debe tomar como referencia la distribución de márgenes en Latex que se muestra en la siguiente imagen: 4.3 Distribucción de las márgenes en Latex Márgenes de Latex Sección 4.3 Distribucción de las márgenes en Latex 9 Teniendo como referencia la imagen anterior, se utiliza la etiqueta setmargin como se muestra a continuación:: \setmargins{hleftmargini}{htopmargini}{htextwidthi} {htextheighti}{hheadheighti}{hheadsepi}{hfootheighti}{hfootskipi} El siguiente paso es generar el estilo de la página en cuánto a su encabezado y pie de página, en este caso incluiremos el número de página y una línea en el encabezado y un pie de página vacío. Para hacer esto utilizamos el siguiente fragmento de código:: \defpagestyle{page}{ (\textwidth,0pt) {\pagemark\hfill\headmark\hfill} {\hfill\headmark\hfill\pagemark} {\hfill\headmark\hfill\pagemark} (\textwidth,1pt)} {(\textwidth,0pt) {\hfill}{\hfill}{\hfill} (\textwidth,0pt)} Ya que normalmente la portada del documento no tiene encabezado se debe especificar en el contenido que la portada no utilizará ningún estilo. Para hacer esto se debe escribir la siguiente etiqueta antes de escribir el contenido de la portada \pagestyle{empty} Y luego agregar el estilo definido en la parte de arriba antes del resto del contenido (Para que el contenido incluya el encabezado) \pagestyle{page} Luego se debe definir el formato de la portada, que será utilizada en todos los documentos que se generen. Un código ejemplo de la generación de una portada es el siguiente:: \Large \textsc{Manual de Usuariol}\\ \textsc{Nombre del Producto}\\ \vspace{4cm} \textsc{Nombre de la Empresa}\\ \textsc{Nit de la Empresa}\\ \vspace{4cm} \textsc{Nombre de la Empresa Cliente}\\ \textsc{\today}\\ %%Marca la fecha del día de hoy \vspace{4cm} \textsc{Nombre del Autor}\\ \textsc{Cargo del Autor}\\ \textsc{Celular del Autor}\\ \lowercase{Correo electrónico del autor} Finalmente, explico el proceso para agregar un fondo en el documento, que he encontrado que no esta muy bien especificado en la documentación de referencia. Simplemente se debe utilizar la siguiente etiqueta:: \CenterWallPaper{1}{img/background.png} Se recomienda utilizar un formato sin pérdida como el png, para tener un mejor resultado en el pdf. Con esto concluimos, la exploración del lenguaje Latex, para más información sobre la sintaxis del lenguaje recomiendo revisar el siguiente wikibook de referencia: http://en.wikibooks.org/wiki/LaTeX Sección 5 Sphinx 10 5 Sphinx A continuaciónrevisaremos el proceso de instalación y utilización del software Sphinx. Para la elaboración de la documentación se utiliza el lenguaje RestructuredText y una serie de librerías de Python. A continuación se especifica el software que va a hacer utilizado. 5.1 Python Lenguaje de programación base para la utilización de los software Sphinx y Rst2Pdf 5.2 Sphinx Es un generador de documentación que convierte texto reestructurado en HTML y otros formatos como PDF. Sphinx 5.3 Rst2Pdf Es una herramienta escrita en Python y utilizado por Sphinx para la conversión de texto restructurado a pdf. 5.4 PIL Es una librería para el manejo de imágenes en Python. 5.5 Instalación del Software en Windows Para realización de la instalación del sistema en Windows, se deben seguir los siguientes pasos: 1. Instalar Python 2.7, el cual puede ser descargado en el sitio web oficial de Python http://www.python.org. 2. Instalar Setup Tools para la versión de Python descargada, este puede ser descargado en este sitio web http://pypi.python.org/pypi/setuptools 3. Agregar las siguientes variables en la variable de entorno PATH, para poder ejecutar easy-install: C:Python27;C:Python27Scripts 4. Abrir el Símbolo de Sistema y ejecuta los siguientes comandos:: easy_install -U Sphinx easy_install rst2pdf easy_install PIL 5. Para la escritura de la documentación se puede utilizar cualquier editor de texto, aún así se recomienda la instalación de un IDE como Geany para un mejor manejo Sección 5.6 Utilización de Sphinx 11 de las tabulaciones. Se puede descargar una versión para Windows en el sitio oficial http://www.geany.org/Download/Releases. Se recomienda además descargar los plugins de Geany para tener funcionalidades como correción de ortografía. Además sirve para programar otros lenguajes de programación como Java, HTML, C, etc. 6. Para generar el pdf del documento en Windows basta con ejecutar el archivo makepdf.bat, dentro de la carpeta de código del documento. Esto generará automáticamente el pdf del documento mostrando los errores en caso de generarse alguno. 5.6 Utilización de Sphinx Para generar un nuevo proyecto se puede utilizar el comando rápido $ sphinx-quickstart en una consola de windows en el lugar que se desea crear la carpeta con el documento. Esto generará todos los archivos necesarios para realización del documento. Entre esos archivos se encuentra el conf.py. En este archivo se configura el nombre del proyecto, el nombre del archivo y otros datos de configuración. Para configurar las propiedades del pdf que se va a exportar, basta con modificar la línea pdf_documents, teniendo en cuenta la siguiente estructura: pdf_documents = [('index', u'nombre_del_archivo', u'subtítulo del documento', u'datos del autor'),] El nombre del archivo no debería contener espacios,tildes o caracteres extraños. Para marcar los datos del autor se debe hacer separado por , como se muestra en el siguiente ejemplo:: pdf_documents = [('index', u'ReestructuredText_Latex_Sphinx_Ed_1.0', u'ReestructuredText, Latex y Sphinx', u'Jaime Andrés García Mejía'),] Adicionalmente en este archivo se establecen la lista de hojas de estilos que vamos a utilizar en la línea pdf_stylesheets = ['bg'] Por ejemplo esta línea esta indicando que se incluya el archivo bg.styles. En este archivo se puede determinar tanto las márgenes del documento como el fondo que se utilizará, cambiando la información de PageSetup por las márgenes que se deseen. Recordar que margin-gutter es el espacio entre columnas: {pageSetup: { width: "20cm", height: "5cm", margin-top: "5mm", margin-bottom: "3cm", margin-left: "3cm", margin-right: "3cm", margin-gutter: "1cm", spacing-header: "5mm", spacing-footer: "0mm" } Para poner el fondo simplemente se utliza la propiedad background, ejemplo:: cutePage: { frames: [ ["0", "0", "100%", "100%"] ], Sección 5.7 Manual de referencia de Text 12 background : "img/background.png", } 5.7 Manual de referencia de Text A continuación se explica lo básico para el uso del generador de documentación. Si se necesita más información se pueden consultar los siguientes manuales de referencia. • http://sphinx.pocoo.org/rest.html • http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html 5.7.1 Títulos y subtítulos Para escribir un título basta con poner símbolos '=' debajo del texto del título, de la siguiente forma: Título ====== Los símbolos = puestos debajo del texto deben tener el mismo tamaño que el título. Para la escritura de subtítulos y subtítulos de segundo nivel, se utiliza los símbolos '-' y '*', respectivamente. Su utilización es igual que el de los títulos, ejemplo:: Subtítulo --------Subtítulo de Segundo Nivel ************************** Subtítulo de Tercer Nivel +++++++++++++++++++++++++ 5.7.2 Saltos de página Cuando se necesita hacer un salto de página, se debe utilizar el siguiente código:: .. raw:: pdf PageBreak 5.7.3 Listas Se pueden construir dos tipos de listas, numeradas o con viñetas. Para construir una lista con viñetas basta utilizar el símbolo '*', y para las numeradas el símbo '#.'. Ejemplo: • Lista con viñetas • Lista con viñetas 1. Lista numerada 2. Lista numeradas Y el resultado es el siguiente: • Lista con viñetas Sección 5.7.4 Imágenes 13 • Lista con viñetas 1. Lista numerada 2. Lista numeradas Tablas Para construcción de tablas se debe definir el ancho de las columnas (este ajuste es mediana automático, lo importante es restringir el tamaño de algunas columnas para que la tabla quepa dentro de la hoja) y el número de filas que componen el encabezado. A continuación se muestra un ejemplo:: .. list-table:: :widths: 50 15 :header-rows: 1 * - Título 1 - Título 2 * - Campo 1 - Campo 2 * - Campo 1 - Campo 2 * - Campo 1 - Campo 2 5.7.4 Imágenes Para ingresar una imagen se utiliza el siguiente bloque de código:: .. figure:: img/nombre_archivo.png :width: 100% Descripción de la imagen El campo width indica el tamaño de la imagen en el documento, un 100% indica que utiliza el máximo posible ya sea el tamaño de la imagen o el tamaño de la hoja.