[LinuxFocus-icon]
Hogar  |  Mapa  |  Indice  |  Busqueda

Noticias | Arca | Enlaces | Sobre LF
Este artículo está disponible en los siguientes idiomas: English  Castellano  ChineseGB  Deutsch  Francais  Italiano  Nederlands  Turkce  

convert to palmConvert to GutenPalm
or to PalmDoc

[Photo of the Author]
por Egon Willighagen
<egonw(at)linuxfocus.org>

Sobre el autor:

Licenciado en química por la Universidad de Nijmegen, actualmente está haciendo su doctorado sobre representación molecular en la misma universidad. Juega a baloncesto y desarrolla aplicaciones en Java.



Taducido al español por:
Roberto Hernando (homepage)

Contenidos:

 

Usando BibTeXML en DocBook XML para escribir artículos científicos

[Illustration]

Resumen:

En este artículo mostraré cómo utilizar BibTex como sistema de referencia bibliográfica con DocBook XML. He desarrollado herramientas para facilitar este proceso, que están disponibles como paquetes en la distribución JReferences.


_________________ _________________ _________________

 

Introducción

Los usuarios de LaTeX saben lo útil que es BibTex. Es una herramienta muy práctica para añadir referencias a otros textos científicos sin preocuparse demasiado por el aspecto, como si fuera correcto de todas formas - i.e. dando los datos correctos pero sin ningún ajuste manual. Simplemente como el propio LaTeX. Más aún, en la literatura científica es habitual numerar las referencias con superíndices, como 1. Y esos números deben estar en orden consecutivo. BibTex también se ocupa de esto.

DocBook se está convirtiendo día a día en mi herramienta favorita para crear texto, por la clara sintaxis basada en XML, el gran soporte para construir sitios web (e.g. el sitio CDK, http://cdk.sf.net/, está completamente escrito en DocBook) y páginas de manual. El siguiente paso para mí fue utilizar DocBook para escribir artículos científicos. De este modo, necesité BibTex para DocBook. Por eso escribí JReferences.

JReferences hace un poco más de lo que hace BibTex. Al igual que BibTex tiene herramientas para autonumerar referencias a partir de una base de datos en texto plano, pero tiene más. Soporta más formatos (tanto de entrada como de salida), tiene un motor MySQL al que se puede acceder desde una interfaz PHP. También intenta ser una base de datos bibliográfica, como EndNote. Sin embargo, aunque es un proyecto de software libre (licencia GPL) no ha atraído a otros desarrolladores más que a mí mismo, con lo que el desarrollo es lento. Esto no significa que no sea útil, no obstante, y lo demostraré en este artículo.

A fecha de publicación de este artículo, JReferences se había desarrollado hasta la versión 0.7.2. Y este artículo considera dicha versión.

 

Un artículo con DocBook

Consideremos el siguiente ejemplo que se puede encontrar en el paquete JReferences.

<?xml version="1.0"?>
<!DOCTYPE article PUBLIC
"-//JReferences//DTD DocBook JReferences Module //EN"
                   "../dtd/jreferences.dtd" []>
<article>

<jref:mode>Number</jref:mode>

<articleinfo>
<title>Artículo de prueba</title>
<author><firstname>Egon</firstname>
  <surname>Willighagen</surname></author>
<date> 3 Mayo 2000</date>
</articleinfo>

<section>
<title>Una sección</title>
<para>Esto es texto con una referencia <jref:cite id="Steinbeck99"/>.</para>
<para>Y ahora para una prueba algo más seria,
añadimos una segunda diferencia <jref:cite id="Bachrach99"/>.
Y de nuevo la primera referencia <jref:cite id="Steinbeck99"/>.
</para>
</section>

<jref:reflist/>

</article>

Comentaré este ejemplo línea a línea. La primera línea es la línea común (opcional) que describe la sintaxis del fichero, en este caso XML. De la segunda a la cuarta línea se indica que el lenguaje XML que se usa es DocBook, pero en lugar del DTD normal se utilizará el módulo JReferences. El DocBook XML normal no sabe nada de JReferences, y usando ese DTD se obtendrán documentos inválidos. El módulo JReferences, sin embargo, conoce ambos DocBook y JReferences (para los expertos en DocBook: todavía no SVG o MathML). A partir de ahora, puede usar este módulo para validar sus documentos. El ejemplo anterior es un documento DocBook válido.

La 5ª línea contiene la etiqueta inicial del elemento artículo. Todo claro hasta aquí. En la 7ª línea empieza lo interesante: el primer elemento jref. El elemento <jref:mode> le dice a JReferences qué tipo de número de referencia debe usar. Ya he escrito en la introducción que se suelen utilizar números superíndices. Pero existen muchas alternativas. JReferences admite [1], 1, y [Steinbeck99]. El último da el código utilizado en la referencia. El ejemplo utiliza la primera opción.

A continuación aparecen varias líneas con DocBook básico, y la siguiente línea realmente interesante es la 18. En esta línea se cita la primera referencia. Los usuarios de LaTeX usarían \cite{} para esto; la sintaxis de JReferences es <jref:cite id="AlgúnID"/>. El ID corresponde a una referencia en la base de datos, que se explicará más tarde. El siguiente párrafo de la sección contiene otras dos citas, una es de nuevo la primera referencia.

Para incluir las referencias se utiliza <jref:reflist/> en la línea 24. Este comando de Jreferences las convertirá en una lista de referencias formateada según DocBook, en el orden en el que se citen.

 

La base de datos BibTeXML

El sistema JReferences necesita una base de datos, como los ficheros *.bib en LaTeX/BibTeX. JReferences acepta BibTeXML, pero también otras (como MySQL). BibTeXML ha sido desarrollado por Vidar Gundersen y Zeger Hendrikse. El ejemplo en la distribución JReferences (0.7.2) todavía no utiliza BibTeXML, pero el ejemplo del artículo tendría un fichero BibTeXML como:

<?xml version="1.0" encoding="UTF-8"?>
<bibtex:file xmlns:bibtex="http://www.bitjungle.com/~bibtex/">

<bibtex:entry bibtex:id="Steinbeck99">
<bibtex:article>
<bibtex:title>JChemPaint - Using
  the Collaborative Forces of the Internet to
  Develop a Free Editor for 2D Chemical
  Structures</bibtex:title>
<bibtex:author>Steinbeck, C. and
                Krause, S. and
                Willighagen, E.</bibtex:author>
<bibtex:year>2000</bibtex:year>
<bibtex:volume>5</bibtex:volume>
<bibtex:pages>93-98</bibtex:pages>
</bibtex:article>
</bibtex:entry>

<bibtex:entry bibtex:id="Bachrach99">
<bibtex:article>
<bibtex:title>End-User Customized Chemistry Journal
Articles</bibtex:title>
<bibtex:author>Bachrach, S. and
                Krassavine, A. and
                Burleigh, D.</bibtex:author>
<bibtex:journal>J.Chem.Inf.Comput.Sci.</bibtex:journal>
<bibtex:year>1999</bibtex:year>
<bibtex:volume>39</bibtex:volume>
<bibtex:pages>81-85</bibtex:pages>
</bibtex:article>
</bibtex:entry>

</bibtex:file>

La segunda línea contiene la etiqueta inicial para el elemento raíz <bibtex:file>. Tal fichero contiene uno o más elementos <bibtex:entry>. Y cada entrada consiste en un tipo de referencia BibTeXML: article, book, inbook, incollection, unpublished, misc y otros. Cada referencia contiene específicos elementos de ese tipo, pero un número de ellos son comunes como <bibtex:title> y <bibtex:year>. La distribución JReferences incluye el DTD BibTeXML, de forma que cualquier editor con capacidad DTD puede editar fácilmente documentos BibTeXML. Más aún, JReferences contiene Meta DTD para Kate en KDE 3.x (vea Editando Documentos DocBook XML) que se instalan automáticamente en $HOME/.kde/share/apps/katexmlplugin.

[kate]
Editando ficheros BibTeXML con Kate, su plugin XML y BibTeXML Meta DTD de JReferences.
 

Generando una Bibliografía

Considere los dos ficheros de ejemplo anteriores. El documento DocBook se guarda como article.docbookxml, y la base de datos de referencia se guarda como references.bibtexml. JReferences todavía no contiene una herramienta como el programa bibtex, pero se puede alcanzar lo mismo con unos pocos comandos. Los siguientes comandos asumen que tiene instalado JReferences en un sistema tipo Unix, como Linux (véase debajo):

jref-clear --filedb
jref-set --filedb --bibtexml references.bibtexml
jref-number --filedb article.docbookxml > article-numbered.docbookxml

El fichero resultante, llamado article-numbered.docbookxml, es un documento DocBook XML 4.1.2 válido sin ningún elemento <jref:*> y se puede procesar por cualquier otra herramienta utilizada para convertir documentos DocBook XML, por ejemplo, PDF. (Vea por ejemplo Haciendo documentos PDF con DocBook).

[result]
El PDF resultante con referencias numeradas y una bibliografía incluida.

Esto es todo lo que necesita saber. Bueno, en realidad...

 

Estilos de formato

Queda todavía un punto interesante. BibTex acepta estilos, porque muchas publicaciones tienen requerimientos específicos sobre cómo debe estar formateada la bibliografía. JReferences contiene sólo dos estilos actualmente. El primero es un formato DocBook XML por defecto, que no es realmente un estilo. Pero también hay un estilo requerido por la American Chemical Society (ACS) que está disponible en JReferences.

El elemento <jref:reflist> tiene un atributo style con el que podrá definir el estilo a usar en lugar del estilo por defecto. Para usar el estilo ACS tendrá que cambiar la línea 23 con

<jref:reflist style="ACS"/>
 

Instalando JReferences

JReferences requiere una instalación de Java 1.3 (o superior), Xerces, Log4J y DocBook XML DTD 4.1.2. Algunas herramientas requieren otras utilidades adicionales, como python (para la conversión de BibTex a BibTeXML), y Perl (para limpiar la salida BibTex de EndNote).

Si todo eso está instalado, se puede instalar JReferences haciendo:

./configure --prefix=$HOME
make
make install

Si no se encuentra alguna herramienta, intente estas opciones: --with-xercesdir, --with-log4javadir y --with-sgmldir. Para más información sobre estas opciones, teclee "./configure --help".

 

El Proyecto

JReferences tiene unos dos años, y aunque se ha descargado muchas veces no he recibido demasiadas sugerencias. Salvo, claro está, las que han surgido de mi propia experiencia. En los últimos meses JReferences se ha utilizado satisfactoriamente para escribir un artículo científico real. Sin embargo, como todo proyecto de código abierto, cualquier comentario, informe de errores, correcciones, ideas e historias de logros serán bien recibidos en el sitio del Proyecto JReferences.

 

Referencias

 

Formulario de "talkback" para este artículo

Cada artículo tiene su propia página de "talkback". A través de esa página puedes enviar un comentario o consultar los comentarios de otros lectores
 Ir a la página de "talkback" 

Contactar con el equipo de LinuFocus
© Egon Willighagen, FDL
LinuxFocus.org
Información sobre la traducción:
en --> -- : Egon Willighagen <egonw(at)linuxfocus.org>
en --> es: Roberto Hernando (homepage)

2003-03-27, generated by lfparser version 2.34