-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Content-ID: <alpine.LSU.1.00.0802101942520.20224@nimrodel.valinor> El 2008-02-10 a las 17:11 +0100, Camaleón escribió:
El 10/02/08, Carlos E. R. escribió:
Pos no lo pillo. Estoy espeso.
Se trata de crear un documento en writer, y aplicar un estilo a los textos, nada más. Al aplicar un estilo se generan etiquetas / marcas xml que la hoja de estilo (xsl) puede interpretar en la salida... hum, no sé si me explico :-/.
Pero lo que no entiendo es el formato exacto que tiene el documento en writer, dentro de writer. Lo que mi ojo ve. *** CABECERA (1) Texto de cabecera 1 en cursiva (2) CABECERA 2 (3) Texto de cabecera 2 en negrita (4) 1.elemento de lista 2.elemento de lista 3.elemento de lista *** Lo que entiendo es que 1 y 3 son rotulos de seccion escritos en formato "sección de nivel 1" y "sección de nivel 2", respectivamente, y y que 2 y 4 son texto estandard de párrafo. Pero eso no coincide con lo que leo y entonces ya no entiendo nada.
Ya tengo el script sed, me lo ha enviado Jos van Kan antes de que me diera tiempo a pensarmelo, y funciona bien. Estoy trabajando de esa forma.
A falta de algo "todo-en-uno" (LyX), creo que la opción más acertada.
Es que es la única que funciona, que es distinto.
Bueno, sería pasarle el "bin/utf2groff" de Jos que ya tengo.
Sí, pero falta la hoja de estilo para hacer la transformación a formato "nroff" O:-)
Ya.
¿OO en tex? Caray.
¿Y un conversor de "tex" a "nroff" no hay por ahí? Hum.. a ver si sacas algo en claro de ésto (ojo, formato hum... ¿"z"? ¿qué es un archivo "z"?):
(...) This is a limited awk script for translating latex input to a form suitable for nroff so straight text can be produced..."
http://ftp.funet.fi/pub/OS/doc/technotes/Hermes/Watson/tex2nroff.awk.Z
Ah, Z es un formato de compresión antiguo, estilo zip, pero hecho creo que con "compress" de unix. Es propietario y no se incluye. Y no es lo mismo Z que z, son algo distintos - pero no me preguntes cual es cual. The compress utility shall attempt to reduce the size of the named files by using adaptive Lempel-Ziv coding algorithm. Note: Lempel-Ziv is US Patent 4464650, issued to William Eastman, Abraham Lempel, Jacob Ziv, Martin Cohn on August 7th, 1984, and assigned to Sperry Corporation. Lempel-Ziv-Welch compression is covered by US Patent 4558302, issued to Terry A. Welch on December 10th, 1985, and assigned to Sperry Corporation. On systems not supporting adaptive Lempel-Ziv coding algorithm, the input files shall not be changed and an error value greater than two shall be returned. Except when the output is to the standard output, each file shall be replaced by one with the extension .Z. If the invoking process has appropriate privileges, the own‐ ership, modes, access time, and modification time of the original file are preserved. If appending the .Z to the filename would make the name exceed {NAME_MAX} bytes, the command shall fail. If no files are speci‐ fied, the standard input shall be compressed to the standard output.
Por cierto.
Me he estado ojeando el archivo de la lista de correo de usuarios de LyX (¿lo has probado ya? para que sepas de que va LyX, aunque no lo uses). No conocía esto:
Lo iba a instalar desde el repo de packman que tiene la última versión... pero como que se añadieron a la lista unos cuantos paquetitos adicionales y lo dejé O:-).
Usa la versión del repositorio de kde, o bien el backports (el que he usado yo) o el stable extra apps. Ese instala unicamente el rpm de lyx - salvo que no tengas instalado latex. Pero vaya, que para probarlo te basta con la versión del dvd.
http://dir.gmane.org/gmane.editors.lyx.general
Esa gente tiene archivos de un montón de listas disponibles en formato "news".
Sí, conozco Gmane, Mail archive... Los uso cuando el buscador de la lista de suse no va :-). Puedes consultarlo en línea, mejor que descargarlo vía news.
Prefiero news. El thunderbird descarga unicamente las cabeceras localmente, y luego los correos que vayas leyendo uno a uno. Una vez que tienes las cabeceras la navegación es rapidísima: es como si lees la lista de suse por imap en gmail.
He difinido ese grupo en el thunderbird, me he bajado todas las cabeceras (que pasan de 50000),
Corrijo, treinta y pico mil.
cer@nimrodel:~/lyx/test> docbook2man docbook_article.xml
Using catalogs: /usr/share/sgml/dtd/sgmltools/catalog, /usr/share/sgml/log4j/catalog, /usr/share/sgml/html/dtd/2.0/catalog, /usr/share/sgml/openjade/catalog, /usr/share/sgml/docbook/dsssl-stylesheets-1.79/catalog, /usr/share/sgml/docbook/dsssl-stylesheets-1.79/html/catalog, /usr/share/sgml/docbook/dsssl-stylesheets-1.79/print/catalog, /usr/share/sgml/docbook/dsssl-stylesheets-1.79/dtds/html/catalog, /usr/share/sgml/docbook/dsssl-stylesheets-1.79/common/catalog, , /etc/sgml/catalog, /usr/share/sgml/CATALOG.docbook-dsssl-stylesheets
Aquí te dice todos los catálogos y dtd que utiliza...
Using stylesheet: /usr/share/sgml/docbook/utils-0.6.14/docbook-utils.dsl#print
Y la hoja de estilo.. pero no me suena el formato "dsl". Ah, "Domain-Specific Language"... pos vale.
Working on: /home/cer/lyx/test/docbook_article.xml
Que trabaja sobre ese xml... y ahora viene la "chicha".
nsgmls:<URL>http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd:112:17:E: "X20AC" is not a function name
Aquí te dice que hay una función definida que no logra localizar, porque no la tendrá especificada en el dtd que usa.
Pero eso, ¿es que me falta algún paquete por instalar, o que hay algo que está mal en algún paquete existente? ¿O es fallo en el xml de lyx? Porque los dos primeros son un bug que puedo reportar al bugzilla.
nsgmls:/usr/share/sgml/docbook/dtd/4.2xml/ent/iso-amsa.ent:8:19:E: "X21B6" is not a function name nsgmls:/usr/share/sgml/docbook/dtd/4.2xml/ent/iso-amsa.ent:9:19:E: "X21B7" is not a function name nsgmls:/usr/share/sgml/docbook/dtd/4.2xml/ent/iso-amsa.ent:10:17:E: "X21D3" is not a function name nsgmls:/usr/share/sgml/docbook/dtd/4.2xml/ent/iso-amsa.ent:11:18:E: "X21CA" is not a function name ... nsgmls:/usr/share/sgml/docbook/dtd/4.2xml/ent/iso-amsr.ent:22:18:E: "X22A3" is not a function name
Y todos estos mensajes son errores de "entidades". Los archivos de entidades (ent) se usan para definir los tipos de codificación, símbolos y caracteres, como acentos o notaciones matemáticas y científicas.
Pos bueno.
Hum... prueba a crear un archivo en LyX sencillo, sólo una línea sin formato (negritas, cursivas...) y sin acentos y ejecuta el script de conversión, a ver dónde salta.
Jo, pues el fichero que le pasé era bien sencillo, ya lo viste: lo puse aquí. Vale, pos una linea: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> <!-- XML file was created by LyX 1.5.3 See http://www.lyx.org/ for more information --> <article lang="en_US"> <para>En un lugar de La Mancha...</para></article> Genera el mismo error: cer@nimrodel:~/lyx/test> docbook2man newfile1.xml Using catalogs: /usr/share/sgml/dtd/sgmltools/catalog, /usr/share/sgml/log4j/catalog, /usr/share/sgml/html/dtd/2.0/catalog, /usr/share/sgml/openjade/catalog, /usr/share/sgml/docbook/dsssl-stylesheets-1.79/catalog, /usr/share/sgml/docbook/dsssl-stylesheets-1.79/html/catalog, /usr/share/sgml/docbook/dsssl-stylesheets-1.79/print/catalog, /usr/share/sgml/docbook/dsssl-stylesheets-1.79/dtds/html/catalog, /usr/share/sgml/docbook/dsssl-stylesheets-1.79/common/catalog, , /etc/sgml/catalog, /usr/share/sgml/CATALOG.docbook-dsssl-stylesheets Using stylesheet: /usr/share/sgml/docbook/utils-0.6.14/docbook-utils.dsl#print Working on: /home/cer/lyx/test/newfile1.xml nsgmls:<URL>http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd:112:17:E: "X20AC" is not a function name ... nsgmls:/usr/share/sgml/docbook/dtd/4.2xml/ent/iso-amsr.ent:21:18:E: "X227C" is not a function name nsgmls:/usr/share/sgml/docbook/dtd/4.2xml/ent/iso-amsr.ent:22:18:E: "X22A3" is not a function name nsgmls:I: maximum number of errors (200) reached; change with -E option Unknown processing instruction: xml version="1.0" encoding="UTF-8"? at /usr/share/sgml/docbook/utils-0.6.14/helpers/docbook2man-spec.pl line 1241, <STDIN> line 2. cer@nimrodel:~/lyx/test> Y lo que no traga es esto: <!-- iso-amsr.ent (initially distributed with DocBook XML DTD V4.1.1beta1) --> <!-- Derived from the corresponding ISO 8879 standard entity set and the Unicode character mappings provided by Sebastian Rahtz. With additional derivations from ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MISC/SGML.TXT --> <!ENTITY ape "≊"> <!-- --> <!ENTITY asymp "≍"> <!-- EQUIVALENT TO --> <!ENTITY bcong "≌"> <!-- ALL EQUAL TO --> <!ENTITY bepsi "∍"> <!-- SMALL CONTAINS AS MEMBER --> <!ENTITY bowtie "⋈"> <!-- --> <!ENTITY bsim "∽"> <!-- --> <!ENTITY bsime "⋍"> <!-- --> <!ENTITY bump "≎"> <!-- --> <!ENTITY bumpe "≏"> <!-- --> <!ENTITY cire "≗"> <!-- --> <!ENTITY colone "≔"> <!-- --> <!ENTITY cuepr "⋞"> <!-- --> <!ENTITY cuesc "⋟"> <!-- --> <!ENTITY cupre "≼"> <!-- --> Que parecen definiciones de letras.
nsgmls:I: maximum number of errors (200) reached; change with -E option
Dale la -E que pide y que te saque todo. Pero con tantos errores... ¿estás seguro de que LyX permite exportar a nroff?
Ya probé con la E hace años y saca una barbaridad de errores que no conducen a ninguna parte. LyX no exporta a nroff de ninguna forma. LyX exporta nativamente a latex, y de latex usa un conversor para docbook en sgml o en xml. A lo mejor ahora ya escribe directamente en doccbook, porque estoy mirando la configuración y no encuentro el conversor a docbook: debe ser interno. Lo que ocurre es que docbook tiene conversores a html, pdf, man, etc., según lo que quieras obtener. LyX ni siquiera tiene un botón para hacerlo, lo hago en linea de comandos.
Unknown processing instruction: xml version="1.0" encoding="UTF-8"? at /usr/share/sgml/docbook/utils-0.6.14/helpers/docbook2man-spec.pl line 1241, <STDIN> line 2. cer@nimrodel:~/lyx/test>
Y ¿se supone que ese script (docbook2man-spec.pl) transforma de xml a nroff?
Claro. De docbook a man de linux. =head1 NAME docbook2man-spec - convert DocBook RefEntries to Unix manpages =head1 SYNOPSIS The SGMLSpm package from CPAN. This contains the sgmlspl script which is used to grok this file. Use it like this: nsgmls some-docbook-document.sgml | sgmlspl docbook2man-spec.pl =head1 DESCRIPTION This is a sgmlspl spec file that produces Unix-style manpages from RefEntry markup. See the accompanying RefEntry man page for 'plain new' documentation. :) =head1 LIMITATIONS Trying docbook2man on non-DocBook or non-conformant SGML results in undefined behavior. :-) This program is a slow, dodgy Perl script. This program does not come close to supporting all the possible markup in DocBook, and will produce wrong output in some cases with supported markup. =head1 TODO Add new element handling and fix existing handling. Be robust. Produce cleanest, readable man output as possible (unlike some other converters). Follow Linux man(7) convention. If this results in added logic in this script, that's okay. The code should still be reasonably organized. Make it faster. If Perl sucks port it to another language. Buscando eso de "See the accompanying RefEntry man page for 'plain new' documentation. :)" y que no encuentro ese manual, he llegado a ver que hay un rpm llamdo "docbook2x" que no lo tengo instalado y que contiene un binario llamado "/usr/bin/docbook-to-man" que voy a instalar ya mismo. Y tiene documentación en "/usr/share/doc/packages/docbook2x/html/manpages.html". [...] Bueno, le dado a instalar a todo lo de docbook, salvo lo que quita por conflictos. [...] Pues tampoco funciona: cer@nimrodel:~/lyx/test> docbook-to-man manpage.xml ; ls -ltr manpage* - -rw-r--r-- 1 cer users 1559 2008-02-10 01:03 manpage.lyx~ - -rw-r--r-- 1 cer users 1453 2008-02-10 01:03 manpage.lyx - -rw-r--r-- 1 cer users 873 2008-02-10 01:03 manpage.xml No sale nada de nada, no genera nada, y no protesta de nada. ¡JOER! ¿ES QUE NO PUEDE FUNCIONAR NADA? Pues si que estamos bien :-/ [...] Por lo visto encadena dos utilidades, y falla la primera: cer@nimrodel:~/lyx/test> db2x_xsltproc manpage.xml warning: failed to load external entity "" cannot parse Ah, vale, es otra sintaxis: cer@nimrodel:~/lyx/test> db2x_xsltproc --stylesheet man manpage.xml <?xml version="1.0" encoding="utf-8" standalone="yes"?> <manpageset xmlns="http://docbook2x.sourceforge.net/xmlns/Man-XML"/> Jo, lo ha borrado todo. Entonces es que el XML que yo tengo no tiene los tokens adecuados, espera otros. Hay que averiguar cual son esos otros. Q: Must I use refentry to write my man pages? A: Under the default settings of docbook2X: yes, you have to. The contents of the source document that lie outside of refentry elements are probably written in a book/article style that is usually not suited for the reference style of man pages. ¿Que puñetas es eso de refentry? Converting to man pages DocBook documents are converted to man pages in two steps: 1. The DocBook source is converted by a XSLT stylesheet into an intermediate XML format, Man-XML. Man-XML is simpler than DocBook and closer to the man page format; it is intended to make the stylesheets' job easier. The stylesheet for this purpose is in xslt/man/docbook.xsl. For portability, it should always be referred to by the following URI: http://docbook2x.sourceforge.net/latest/xslt/man/docbook.xsl Run this stylesheet with db2x_xsltproc. Customizing. You can also customize the output by creating your own XSLT stylesheet - changing parameters or adding new templates - and importing xslt/man/docbook.xsl. 2. Man-XML is converted to the actual man pages by db2x_manxml. The docbook2man command does both steps automatically, but if any problems occur, you can see the errors more clearly if you do each step separately: $ db2x_xsltproc -s man mydoc.xml -o mydoc.mxml $ db2x_manxml mydoc.mxml Options to the conversion stylesheet are described in the man-pages stylesheets reference. Pure XSLT conversion. An alternative to the db2x_manxml Perl script is the XSLT stylesheet in xslt/backend/db2x_manxml.xsl. This stylesheet performs a similar function of converting Man-XML to actual man pages. It is useful if you desire a pure XSLT solution to man-page conversion. Of course, the quality of the conversion using this stylesheet will never be as good as the Perl db2x_manxml, and it runs slower. In particular, the pure XSLT version currently does not support tables in man pages, but its Perl counterpart does. For instructions on how to use the stylesheet, see Example 1, "Convert to man pages using pure-XSLT db2x_manxml". JOER, ¡pero lo que esta gente no hace es meter un puñetero ejemplo.xml para que pueda comprobar la conversión! Vale, el ejemplo está en su web, en <http://docbook2x.sourceforge.net/>, un <http://docbook2x.sourceforge.net/screenshots/VCR.xml> que tiene esta pinta: <?xml version="1.0"?> <!-- vim: sw=2 sta et - --> <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> <refentry> <refentryinfo> <date>15 June 2003</date> </refentryinfo> <refmeta> <refentrytitle>VCR</refentrytitle> <manvolnum>7</manvolnum> </refmeta> <refnamediv> <refname>VCR</refname> <refpurpose>Record video signal to VHS tapes</refpurpose> </refnamediv> <refsect1> <title>Troubleshooting</title> <para> The following conditions do not always denote trouble. Therefore, perform the checks described below before calling for service. ¡Pero tampoco funciona la conversión! cer@nimrodel:~/lyx/test> docbook-to-man VCR.xml /usr/bin/utf8trans:${prefix}/share/docbook2X/charmaps/roff.charmap: No such file or directory El fichero existe, está en "/usr/share/docbook2X/charmaps/roff.charmap". A alguien se le ha olvidado inicializar "${prefix}" = /usr Y ese fichero no se puede cambiar, es un binario: cer@nimrodel:~> file /usr/bin/utf8trans /usr/bin/utf8trans: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.4, dynamically linked (uses shared libs), stripped ¡¡¡ YAAAAAGGGGGHHHHH !!! ¡Yo muerdo a alguien hoy! :-// ¡¡Alguien ha compilado mal la aplicación!! ¡¡MIERDA!! :-// [ glops, glops, litros de tila... ] Por cierto... ¿sabes lo que hace esa aplicación, "utf8trans"? Pos mira el man: utf8trans - Transliterate UTF-8 characters according to a table This program is usually used to render characters in Unicode text files as some markup escapes or ASCII transliterations. (It is not intended for general charset conversions.) It provides functionality similar to the character maps in XSLT 2.0 (XML Stylesheet Language – Transforma‐ tions, version 2.0). O sea, que es parte de la adaptación a la codificación de los acentos, creo.
También he localizado un documento en <http://www.karakas-online.de/mySGML/>:
Document processing with LyX and SGML A quest for the Holy Grail of technical documentation
En el que hace una serie de saltos mortales, piruetas e historias increibles para hacerlo funcionar - incluso usando scripts correctores de errores, pero que están ajustados para suse 7.3 y que no funcionan con ninguna versión posterior ni anterior.
Increible.
Se supone que LyX puede generar docbook perfecto, no entiendo que si hay que hacer esas piruetas no lo hayan corregido directamente.
A docbook sí, ya lo tienes, es el xml. Pero falta que lo pase "correctamente" a nroff. Es el script en perl lo que falla.
Pero es que esa guía antigua decía que había que hacer nosecuantas conversiones para que el docbook funcionase. Ya ví ese sitio hace años y no fuí capaz de seguir las instrucciones.
Porque lo que es el editor, es que es realmente ideal para esta tarea: tu escribes el contenido sin preocuparte de zarandajas, y entre lyx y docbook se encargan de formatearlo en el estilo correcto.
¿No tiene LyX alguna otra utilidad / script para pasar a nroff que no sea por medio del formato docbook ése?
No, el LyX no. El LyX nativamente graba en un formato parecido al tex, y usa tex como formato de partida para todos los demás. Lo de los man es cosa de docbook. - -- Saludos Carlos E.R. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.4-svn0 (GNU/Linux) iD8DBQFHr14otTMYHG2NR9URAnodAKCGsL7p9nKyIUdfm5SH+9QDMV3wzACbBpOf jnyv8oThgdRsnKJMohbdHZs= =+7dS -----END PGP SIGNATURE-----