{"id":3816,"date":"2020-10-29T08:17:58","date_gmt":"2020-10-29T07:17:58","guid":{"rendered":"https:\/\/esferas.org\/msqlu\/?p=3816"},"modified":"2020-10-29T08:18:00","modified_gmt":"2020-10-29T07:18:00","slug":"paginas-de-manual-linux-con-pandoc","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2020\/10\/29\/paginas-de-manual-linux-con-pandoc\/","title":{"rendered":"P\u00e1ginas de manual Linux con pandoc"},"content":{"rendered":"\n<p>Porque le estoy cogiendo el gusto a ese formato y necesito herramientas suaves que no me entorpezcan.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>El art\u00edculo que me ha dado la idea es <a rel=\"noreferrer noopener\" href=\"https:\/\/gabmus.org\/posts\/man_pages_with_markdown_and_pandoc\/\" target=\"_blank\">Man pages with Markdown and Pandoc<\/a> de Grabriele Musco. Muy sencillo de entender y con un buen ejemplo y refencias directas.<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/pandoc.org\/\" target=\"_blank\">pandoc<\/a>, del que ya <a rel=\"noreferrer noopener\" href=\"https:\/\/esferas.org\/msqlu\/tag\/pandoc\/\" data-type=\"post_tag\" data-id=\"918\" target=\"_blank\">he hablado antes<\/a>, es un programa que permite la conversi\u00f3n entre diferentes formatos de texto. Algunos con m\u00e1s acierto que otros pero de excelentes resultados en casi todos los que he probado. <\/p>\n\n\n\n<p>En este caso pretendo tener plantillas para las p\u00e1ginas de manual m\u00e1s usadas para construir paquetes de software: p\u00e1ginas de configuraci\u00f3n (<em>man 5<\/em>), p\u00e1ginas de programas (<em>man 1<\/em>) y p\u00e1ginas diversas (<em>man 7<\/em>) como las que uso para todo el paquete. Seg\u00fan el art\u00edculo hay dos dialectos -por llamarlos de alguna manera- de pandoc que deben usarse para que la conversi\u00f3n funcione correctamente.<\/p>\n\n\n\n<p>El primero es <a rel=\"noreferrer noopener\" href=\"https:\/\/pandoc.org\/MANUAL.html#metadata-blocks\" target=\"_blank\">Metadata blocks<\/a> que proporciona informaci\u00f3n normalizada de ciertos p\u00e1rrafos del documento que comienzan con el car\u00e1cter porcentaje (\u00bb%\u00bb). En este caso la extensi\u00f3n que precisamos es <em>pandoc_title_block<\/em> y es siempre analizada aunque s\u00f3lo se emplea si se usa el par\u00e1metro \u00bb&#8211;standalone\u00bb de \u00bbpandoc\u00bb. <\/p>\n\n\n\n<p>En el caso del escritor de p\u00e1ginas de manual utiliza la primera l\u00ednea para obtener lo siguiente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"markdown\" class=\"language-markdown\">% PANDOC(1) Pandoc User Manuals | Version 4.0<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>El t\u00edtulo de la p\u00e1gina de manual \u00bbPANDOC\u00bb <\/li><li>La secci\u00f3n de manual donde se encuentra \u00bb(1)\u00bb (sin espacios que lo separen. <\/li><li>Texto en el pie de p\u00e1gina \u00bbPandoc User Manuals\u00bb.<\/li><li>Texto en la cabecera \u00bbVersion 4.0\u00bb (separado por una barra vertical).<\/li><\/ul>\n\n\n\n<p>El segundo son las listas con definiciones (<a rel=\"noreferrer noopener\" href=\"https:\/\/pandoc.org\/MANUAL.html#definition-lists\" target=\"_blank\">definition lists<\/a>), un tipo de lista de elementos donde cada uno puede llevar uno o varios p\u00e1rrafos descriptivos. Es id\u00f3neo para describir par\u00e1metros de uso de un programa u opciones de configuraci\u00f3n. <\/p>\n\n\n\n<pre title=\"Definition lists example\" class=\"wp-block-code\"><code lang=\"markdown\" class=\"language-markdown\"> `--cron` \n :  Este par\u00e1metro provoca una copia de seguridad de todas \n las cuentas de correo definidas en `\/etc\/backups-gmail\/email.lists`.\n \n\n `--email ` *direccion*\n : Este par\u00e1metro realiza una copia de seguridad de la direcci\u00f3n indicada como argumento.\n \n\n `--config ` *archivo*\n :  Define el archivo de configuraci\u00f3n a emplear en lugar de los valores predeterminados. <\/code><\/pre>\n\n\n\n<p>Para crear la p\u00e1gina de manual se necesita una plantilla que s\u00f3lo se tenga que rellenar despu\u00e9s:<\/p>\n\n\n\n<pre title=\"Ejemplo de p\u00e1gina de manual\" class=\"wp-block-code\"><code lang=\"markdown\" class=\"language-markdown\">% programa(seccion) package description | version\n\n# NAME\n\n nombre_del_programa - descripci\u00f3n_corta_del_programa\n\n# USAGE\n\n <\/code><code>$ nombre_del_programa [lista_de_parametros] [otros]<\/code>\n\nEjemplo sencillo e ilustrativo de uso del programa. No se suele leer m\u00e1s all\u00e1 de esta secci\u00f3n (como mucho la siguiente que implica a los par\u00e1metros). \n\n# OPTIONS\n\nSi el programa acepta par\u00e1metros en la llamada se describen en esta secci\u00f3n. Si no se puede borrar por completo. \n\n<code>--parametro1<\/code> \n: explicaci\u00f3n del par\u00e1metro en varios p\u00e1rrafos si es necesario\n<code>--parametro2<\/code> \n: explicaci\u00f3n del par\u00e1metro en varios p\u00e1rrafos si es necesario \n\n# DESCRIPTION\n\nDescripci\u00f3n completa del programa y sus caracter\u00edsticas. Puede incluir varias subsecciones para separar mejor los t\u00f3picos utilizando niveles inferiores de encabezado (##, ###, etc.).\n\n# DIAGNOSTICS\n\nLista de mensajes de error y avisos que la aplicaci\u00f3n puede llegar a generar, con una explicaci\u00f3n completa de cada problema, las causas probables y cualquier remedio que pueda adoptarse. \n\n En el caso de c\u00f3digos de estado de salida (al estilo <em>UNIX<\/em>) la lista debe incluirlos tambi\u00e9n.\n\n# CONFIGURATION AND ENVIRONMENT\n\nUna descripci\u00f3n completa de cualquier configuraci\u00f3n en el sistema que pueda usarse en el programa, comenzando por variables de entorno y siguiendo por archivos de configuraci\u00f3n y su contenido. \n\n# DEPENDENCIES\n\nEste programa depende de los siguientes programas o bibliotecas:\n\n  - programa1\n  - programa2 \n\n# INCOMPATIBILITIES\n\nLista de aspectos o funcionamiento con los que son incompatibles, incluyendo la presencia de otros programas problem\u00e1ticos. \n\n# BUGS AND LIMITATIONS\n\nLista de errores o posibles situaciones de error. Si no los tiene se puede indicar lo siguiente:\n\nNo hay actualmente errores conocidos en este programa.\n\n# AUTHOR\n\nV\u00edctor Moral <a href=\"mailto:victor@taquiones.net\">victor@taquiones.net<\/a>\n\n# LICENCE AND COPYRIGHT\n\nCopyright (c) 2020 &lt; V\u00edctor Moral >. All rights reserved.\n\nThis program is free software: you can redistribute it and\/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.\n\nThis 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.\n\nYou should have received a copy of the GNU General Public License along with this program.  If not, see <a href=\"https:\/\/www.gnu.org\/licenses\/\">https:\/\/www.gnu.org\/licenses\/<\/a>.<\/pre>\n\n\n\n<p>Y luego proceder a convertirla en una p\u00e1gina de manual con una invocaci\u00f3n simple:<\/p>\n\n\n\n<pre title=\"Pandoc usage\" class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">$ pandoc --standalone --to man manual.md &gt; manual.1<\/code><\/pre>\n\n\n\n<p>El resultado se puede instalar directamente en el directorio correspondiente. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Porque le estoy cogiendo el gusto a ese formato y necesito herramientas suaves que no me entorpezcan.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[2],"tags":[85,1051,1050,918],"class_list":["post-3816","post","type-post","status-publish","format-standard","hentry","category-software","tag-documentacion","tag-grabriele-musco","tag-pagina-de-manual","tag-pandoc"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/3816","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/comments?post=3816"}],"version-history":[{"count":17,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/3816\/revisions"}],"predecessor-version":[{"id":3834,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/3816\/revisions\/3834"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=3816"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=3816"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=3816"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}