Crear estilos personalizados de bibliografía

Crear un estilo de bibliografía personalizado en Word mediante los pasos (y el código XML) que necesita para crear un estilo personalizado simple. Aprenda también a crear un archivo de estilo más complejo. Antes de empezar, hay cierta información que debe saber:

Los orígenes bibliográficos que cree se enumeran en el siguiente archivo local: %AppData%\Microsoft\Bibliography\Sources.xml.

Nota:

El archivo Sources.xml no existirá hasta que cree el primer origen bibliográfico en Word. Todos los estilos bibliográficos se almacenan en el perfil del usuario aquí: %AppData%\Microsoft\Bibliography\Style.

Crear un estilo de bibliografía básico

En primer lugar, cree un estilo de bibliografía básico que seguirá el estilo personalizado.

Configurar el estilo de bibliografía

Para crear un estilo de bibliografía, vamos a crear una hoja de estilos XML, es decir, un archivo .xsl denominado MiEstiloParaLibros.xsl, con el editor XML que queramos. El Bloc de notas nos servirá. Como el nombre sugiere, el ejemplo va a ser un estilo para el tipo de origen "libro".

En la parte superior del archivo, agregue el código siguiente:

<?xml version="1.0" ?> 

<!--List of the external resources that we are referencing-->
 
<xsl:stylesheet version="1.0" xmlns:xsl="https://www.w3.org/1999/XSL/Transform" xmlns:b="https://schemas.openxmlformats.org/officeDocument/2006/bibliography">
 
<!--When the bibliography or citation is in your document, it's just HTML-->
 
<xsl:output method="html" encoding="us-ascii"/>
   
<!--Match the root element, and dispatch to its children-->
   
<xsl:template match="/">

<xsl:apply-templates select="*" />

</xsl:template>

Como indican los comentarios, Word usa HTML para representar una bibliografía o una cita dentro de un documento. La mayor parte del código XML anterior es simplemente una introducción a las partes más interesantes del estilo. Por ejemplo, puede conceder al estilo un número de versión para realizar un seguimiento de los cambios que realice, como se muestra en el ejemplo siguiente.

<!--Set an optional version number for this style--> 

<xsl:template match="b:version"> 

   <xsl:text>2006.5.07</xsl:text>

</xsl:template>

Además, puede ponerle un nombre al estilo. Agregue esta etiqueta: <xsl:when test="b:StyleNameLocalized">; y, a continuación, asigne a su estilo un nombre, en el idioma que prefiera, mediante el código siguiente.

<xsl:when test="b:StyleNameLocalized/b:Lcid='1033'">

   <xsl:text>[Your Style Name]</xsl:text>
 
</xsl:when>

Esta sección contiene el nombre del estilo usado en la configuración regional. En el caso de nuestro archivo de ejemplo, queremos que el nombre del estilo de bibliografía personalizado, "Estilo de libro simple", aparezca en la lista desplegable Estilo de la pestaña Referencias. Para ello, agregue el siguiente código XML para especificar que el nombre del estilo esté en la configuración regional inglesa (Lcid determina el idioma).

<!--Defines the name of the style in the References dropdown list-->
<xsl:when test="b:StyleNameLocalized"> 
   <xsl:choose> 
      <xsl:when test="b:StyleNameLocalized/b:Lcid='1033'"> 
         <xsl:text>Simple Book Style</xsl:text> 
      </xsl:when> 
</xsl:when>

Ahora, el estilo aparecerá debajo de su propio nombre en el cuadro de lista desplegable Estilo de bibliografía de la aplicación.

Ahora, examine los detalles de estilo. Cada tipo de origen en Word (por ejemplo, libros, películas, artículos de periódico, etc.) tiene una lista integrada de campos que se pueden usar para la bibliografía. Para ver todos los campos disponibles en un tipo de origen determinado, en la pestaña Referencias elija Administrar orígenes y luego, en el cuadro de diálogo Administrador de orígenes, elija Nuevo para abrir el cuadro de diálogo Crear origen. Luego seleccione Mostrar todos los campos bibliográficos.

Un tipo de origen de libro tiene los siguientes campos disponibles:

  • Autor

  • Título

  • Año

  • Población

  • Estado o provincia

  • País o región

  • Editorial

  • Editor

  • Volumen

  • Número de volúmenes

  • Traductor

  • Título corto

  • Número estándar

  • Páginas

  • Edición

  • Comentarios

En el código, puede especificar los campos que son importantes para el estilo de bibliografía. Aunque la opción Mostrar todos los campos bibliográficos esté desactivada, estos campos aparecerán y tendrán un asterisco rojo al lado. En este ejemplo de libro, vamos a garantizar que se introduzcan los campos de autor, título, año, ciudad y publicador, así que debe aparecer un asterisco rojo al lado para avisar al usuario de que estos son los campos que se recomienda rellenar.

<!--Specifies which fields should appear in the Create Source dialog box when in a collapsed state (The Show All Bibliography Fields check box is cleared)-->

<xsl:template match="b:GetImportantFields[b:SourceType = 'Book']"> 
   <b:ImportantFields> 
      <b:ImportantField> 
         <xsl:text>b:Author/b:Author/b:NameList</xsl:text> 
      </b:ImportantField> 
      <b:ImportantField> 
         <xsl:text>b:Title</xsl:text> 
      </b:ImportantField> 
     <b:ImportantField> 
         <xsl:text>b:Year</xsl:text> 
      </b:ImportantField> 
      <b:ImportantField> 
         <xsl:text>b:City</xsl:text>
      </b:ImportantField> 
      <b:ImportantField> 
         <xsl:text>b:Publisher</xsl:text> 
      </b:ImportantField> 
   </b:ImportantFields> 
</xsl:template>

El texto de las <etiquetas xsl:text> son referencias al archivo Sources.xml. Estas referencias extraen los datos con los que se rellenarán los campos. Examine Sources.xml en \Microsoft\Bibliography\Sources.xml) para conocer mejor la correspondencia entre estas referencias y el contenido del archivo XML.

Edite el diseño.

Los resultados de las bibliografías y citas se representan en un documento de Word como HTML, de modo que para definir el aspecto de los estilos personalizados para las bibliografías y las citas en Word, tenemos que agregar código HTML a la hoja de estilos.

Supongamos que queremos aplicar el formato siguiente a cada una de las entradas de la bibliografía:

Apellido, Nombre. (Año). Título. Ciudad: Publicador

El código HTML necesario para hacerlo se incrustaría en la hoja de estilos del modo siguiente.

<!--Defines the output format for a simple Book (in the Bibliography) with important fields defined-->

<xsl:template match="b:Source[b:SourceType = 'Book']"> 

<!--Label the paragraph as an Office Bibliography paragraph-->

   <p> 
      <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Last"/> 
      <xsl:text>, </xsl:text> 
      <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:First"/> 
      <xsl:text>. (</xsl:text> 
      <xsl:value-of select="b:Year"/> 
      <xsl:text>). </xsl:text> 
      <i> 
         <xsl:value-of select="b:Title"/> 
         <xsl:text>. </xsl:text> 
      </i> 
      <xsl:value-of select="b:City"/> 
      <xsl:text>: </xsl:text> 
      <xsl:value-of select="b:Publisher"/> 
      <xsl:text>.</xsl:text> 
   </p> 
</xsl:template>

Cuando hace referencia a un origen de libro en el documento de Word, Word necesita obtener acceso a este código HTML para poder usar el estilo personalizado y mostrar el origen, por lo que deberá agregar código a la hoja de estilos personalizada para permitirle a Word hacer esto.

<!--Defines the output of the entire Bibliography-->
 
<xsl:template match="b:Bibliography"> 

   <html xmlns="https://www.w3.org/TR/REC-html40"> 
   
      <body> 

         <xsl:apply-templates select ="b:Source[b:SourceType = 'Book']"> 

         </xsl:apply-templates> 

      </body> 
   
   </html> 
</xsl:template>

Para el resultado de la cita deberá hacer lo mismo. Siga el patrón (Autor, año) para una única cita en el documento.

<!--Defines the output of the Citation-->
<xsl:template match="b:Citation/b:Source[b:SourceType = 'Book']"> 
   <html xmlns="https://www.w3.org/TR/REC-html40"> 
      <body> 
         <!-- Defines the output format as (Author, Year)--> 
         <xsl:text>(</xsl:text> 
            <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Last"/> 
         <xsl:text>, </xsl:text> 
         <xsl:value-of select="b:Year"/> 
         <xsl:text>)</xsl:text> 
      </body> 
   </html> 
</xsl:template>

Cierre el archivo con las siguientes líneas.

<xsl:template match="text()" /> </xsl:stylesheet>

Guarde el archivo como MyBookStyle.XSL y póngalo en el directorio de estilos (\Microsoft\Bibliography\Style). Reinicie Word para ver su estilo en la lista desplegable de estilo. Puede empezar a usar el nuevo estilo.

Crear un estilo complejo

Uno de los problemas que complican los estilos de bibliografía es que estos, a menudo, necesitan tener una cantidad significativa de lógica condicional. Por ejemplo, si se especifica la fecha, tendrá que mostrar la fecha, mientras que si no se especifica, puede que necesite usar una abreviatura para indicar que no hay ninguna fecha para ese origen.

Para un ejemplo más específico, en el estilo APA, si no se especifica una fecha para un origen de sitio web, la abreviatura "n.d." se usa para indicar que no hay fecha y el estilo debe hacerlo automáticamente. Aquí le mostramos un ejemplo:

Origen de sitio web APA sin fecha especificada: Kwan, Y. (n.d.). Se ha recuperado de la https://www.microsoft.com fuente de un sitio web APA con la fecha especificada: Kwan, Y (2006, 18 de enero). Recuperado de https://www.microsoft.com

Como puede ver, lo que se muestra depende de los datos especificados.

La salida de prácticamente todos los estilos debe cambiar en función de si tiene un "Autor corporativo" o un "Autor normal". Verá cómo usar una de las reglas más comunes para implementar dicha lógica en su estilo, lo que le permite mostrar un autor corporativo si se especifica el autor corporativo y un autor normal si no se especifica el autor corporativo.

Información general sobre la solución

Para mostrar a un autor corporativo cuando sea necesario, haga lo siguiente.

Para mostrar a un autor corporativo

  1. Agregue una variable para contar el número de autores corporativos en la sección de cita que hay en el código.

  2. Si el autor corporativo está escrito, muéstrelo en la cita. Si no está escrito, muestre el autor normal en la cita.

  3. Agregue una variable para contar el número de autores corporativos que hay en la sección bibliográfica del código.

  4. Si el autor corporativo está escrito, muéstrelo en la bibliografía. Si no está escrito, muestre el autor normal en la bibliografía.

Introducción

Vamos a empezar cambiando la cita. Este es el código para citas de la última vez.

<!--Defines the output of the Citation-->
<xsl:template match="b:Citation/b:Source[b:SourceType = 'Book']"> 
   <html xmlns="https://www.w3.org/TR/REC-html40"> 
      <body> 
         <!--Defines the output format as (Author, Year)-->
         <xsl:text>(</xsl:text> 
         <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Last"/>
         <xsl:text>, </xsl:text> 
         <xsl:value-of select="b:Year"/> 
         <xsl:text>)</xsl:text> 
      </body>
   </html> 
</xsl:template>

Paso 1: Definir una nueva variable en la sección de citas para contar el número de autores corporativos

Declare una nueva variable para ayudar a determinar si un autor corporativo está disponible. Esta variable es un recuento del número de veces que el campo de autor corporativo existe en el origen.

<!--Defines the output of the Citation-->
<html xmlns="https://www.w3.org/TR/REC-html40">
   <!--Count the number of Corporate Authors (can only be 0 or 1)-->
      <xsl:variable name="cCorporateAuthors"> 
         <xsl:value-of select="count(b:Author/b:Author/b:Corporate)" /> 
      </xsl:variable>

Paso 2: Comprobar que el autor corporativo está escrito

Compruebe que se rellenó el autor corporativo. Para ello, puede determinar si el recuento de autores corporativos es distinto de cero. Si existe algún autor corporativo, muéstrelo. Si no existe, muestre el autor normal.


<xsl:text>(</xsl:text> 
<xsl:choose>
<!--When the corporate author exists, display the corporate author-->
<xsl:when test ="$cCorporateAuthors!=0"> 
<xsl:value-of select="b:Author/b:Author/b:Corporate"/> 
</xsl:when>
<!-- When the corporate author does not exist, display the normal author--> 
<xsl:otherwise> 
<xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Last"/> 
</xsl:otherwise> 
</xsl:choose> 
<xsl:text>, </xsl:text>

Una vez hecho el cambio en las citas, realice el cambio en la bibliografía. Esta es la sección de bibliografía que usamos previamente en este artículo.

<!--Defines the output format for a simple Book (in the Bibliography) with important fields defined-->
<xsl: template match="b:Source[b:SourceType = 'Book']">
<!--Label the paragraph as an Office Bibliography paragraph--> 
<p> 
<xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Last"/> 
<xsl:text>, </xsl:text> 
<xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:First"/> 
<xsl:text>. (</xsl:text> 
<xsl:value-of select="b:Year"/> 
<xsl:text>). </xsl:text> 
<i>

Paso 3: Definir una nueva variable en la sección de bibliografía

Ahora también vamos a empezar agregando una variable de recuento.

<!--Defines the output format for a simple Book (in the Bibliography) with important fields defined-->
<xsl: template match="b:Source[b:SourceType = 'Book']"> 
<!--Count the number of Corporate Authors (can only be 0 or 1)-->
<xsl:variable name="cCorporateAuthors"> 
<xsl:value-of select="count(b:Author/b:Author/b:Corporate)" /> 
</xsl:variable>

Paso 4: Comprobar que el autor corporativo está escrito

Compruebe si existe un autor corporativo.

…..
<xsl:variable name="cCorporateAuthors"> 
<xsl:value-of select="count(b:Author/b:Author/b:Corporate)" /> 
</xsl:variable> 
<p> 
<xsl:choose>
<!--When the corporate author exists display the corporate author-->
<xsl:when test ="$cCorporateAuthors!=0"> 
<xsl:value-of select="b:Author/b:Author/b:Corporate"/> 
<xsl:text>. (</xsl:text> 
</xsl:when> 
<xsl:otherwise> 
<!--When the corporate author does not exist, display the normal author-->
<xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Last"/> 
<xsl:text>, </xsl:text> 
<xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:First"/> 
<xsl:text>. (</xsl:text>
</xsl:otherwise> 
</xsl:choose>

Este es el código final completo.

<?xml version="1.0" ?> 
<!--List of the external resources that we are referencing-->
<xsl:stylesheet version="1.0" xmlns:xsl="https://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:b="https://schemas.openxmlformats.org/officeDocument/2006/bibliography">
   <!--When the bibliography or citation is in your document, it's just HTML-->
   <xsl:output method="html" encoding="us-ascii"/> 
   <!--Match the root element, and dispatch to its children-->
   <xsl:template match="/"> 
      <xsl:apply-templates select="*" /> 
   </xsl:template>
   <!--Set an optional version number for this style-->
   <xsl:template match="b:version"> 
      <xsl:text>2006.5.07</xsl:text> 
   </xsl:template> 
   <!--Defines the name of the style in the References dropdown-->
   <xsl:template match="b:StyleName">     
      <xsl:text>Simple Book Style</xsl:text> 
   </xsl:template> 
   <!--Specifies which fields should appear in the Create Source dialog when in a collapsed state (The Show All Bibliography Fieldscheckbox is cleared)-->
   <xsl:template match="b:GetImportantFields[b:SourceType = 'Book']"> 
      <b:ImportantFields> 
         <b:ImportantField><xsl:text>b:Author/b:Author/b:NameList</xsl:text> </b:ImportantField> 
         <b:ImportantField> <xsl:text>b:Title</xsl:text> </b:ImportantField> 
         <b:ImportantField> <xsl:text>b:Year</xsl:text> </b:ImportantField> 
         <b:ImportantField> <xsl:text>b:City</xsl:text> </b:ImportantField> 
         <b:ImportantField> <xsl:text>b:Publisher</xsl:text> </b:ImportantField> 
      </b:ImportantFields> 
   </xsl:template>
   <!--Defines the output format for a simple Book (in the Bibliography) with important fields defined-->
   <xsl:template match="b:Source[b:SourceType = 'Book']">
   <!--Count the number of Corporate Authors (can only be 0 or 1-->
   <xsl:variable name="cCorporateAuthors">
      <xsl:value-of select="count(b:Author/b:Author/b:Corporate)" />
   </xsl:variable>
   <!--Label the paragraph as an Office Bibliography paragraph-->
   <p>
      <xsl:choose>
         <xsl:when test ="$cCorporateAuthors!=0">
         <!--When the corporate author exists display the corporate author-->
            <xsl:value-of select="b:Author/b:Author/b:Corporate"/>
            <xsl:text>. (</xsl:text>
         </xsl:when>
         <xsl:otherwise>
            <!--When the corporate author does not exist, display the normal author-->
            <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Last"/>
            <xsl:text>, </xsl:text>
            <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:First"/>
            <xsl:text>. (</xsl:text>
         </xsl:otherwise>
      </xsl:choose>
      <xsl:value-of select="b:Year"/>
      <xsl:text>). </xsl:text>
      <i>
         <xsl:value-of select="b:Title"/>
         <xsl:text>. </xsl:text>
      </i> 
         <xsl:value-of select="b:City"/>
         <xsl:text>: </xsl:text>
         <xsl:value-of select="b:Publisher"/>
         <xsl:text>.</xsl:text>
      </p>
   </xsl:template>
   <!--Defines the output of the entire Bibliography-->
   <xsl:template match="b:Bibliography"> 
      <html xmlns="https://www.w3.org/TR/REC-html40"> 
         <body>
            <xsl:apply-templates select ="*">
            </xsl:apply-templates>
         </body>
      </html>
   </xsl:template>
   <!--Defines the output of the Citation-->
   <xsl:template match="b:Citation/b:Source[b:SourceType = 'Book']">
      <html xmlns="https://www.w3.org/TR/REC-html40"> 
         <xsl:variable name="cCorporateAuthors"> 
            <xsl:value-of select="count(b:Author/b:Author/b:Corporate)" /> 
         </xsl:variable> 
         <body> 
         <!--Defines the output format as (Author, Year--> 
            <xsl:text>(</xsl:text>
            <xsl:choose> 
            <!--When the corporate author exists display the corporate author-->
               <xsl:when test ="$cCorporateAuthors!=0">
                  <xsl:value-of select="b:Author/b:Author/b:Corporate"/>
               </xsl:when>
               <!--When the corporate author does not exist, display the normal author-->
               <xsl:otherwise> 
                  <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Last"/> 
               </xsl:otherwise>
               </xsl:choose>
               <xsl:text>, </xsl:text> 
               <xsl:value-of select="b:Year"/>
               <xsl:text>)</xsl:text> 
            </body> 
         </html>
   </xsl:template>
   <xsl:template match="text()" />
</xsl:stylesheet>

Conclusión

En este artículo explicamos cómo crear un estilo personalizado de bibliografía en Word, primero mediante la creación de un estilo simple y luego mediante el uso de instrucciones condicionales para crear un estilo más complejo.

Vea también

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.