3 votos

¿Cómo añadir un nuevo estilo de citación y bibliografía a Microsoft Word?

En Microsoft Word, hay 12 estilos de citación y bibliografía disponibles, como se muestra en la siguiente captura de pantalla:

The 12 Citation & Bibliography Styles available in Microsoft Word.

Sin embargo, no parece haber una manera fácil de añadir un estilo de citación y bibliografía personalizado o nuevo. Y, por desgracia, mi universidad utiliza su propio estilo de citación y bibliografía, que es un estilo Chicago ligeramente modificado. Básicamente, utilizan un ampersand, &, en lugar de "y" para referirse a dos autores, por ejemplo. Y ponen el año después del autor o autores sin un punto intermedio en la bibliografía.

Así que básicamente necesito añadir un nuevo estilo de citación y bibliografía a Microsoft Word que sea una copia del estilo Chicago pero con estas dos ligeras diferencias.

Mis investigaciones al respecto sugieren que esto es posible a través de archivos XML. He editado archivos XML antes, pero ¿dónde está el archivo XML del estilo Chicago, por ejemplo? [Edición: La ruta parece ser %APPDATA%. \Microsoft\Bibliography )

¿Y qué partes debo cambiar en el estilo Chicago para convertir la "y" entre autores en un ampersand "&", y para eliminar el punto entre el autor o autores y el año en la bibliografía (no existe en las citas en línea)?

El estilo APA utiliza el ampersand pero, por desgracia, el resto de su formato es significativamente diferente al de Chicago, y en general Chicago se acerca más a mi estilo objetivo. He intentado comparar los archivos APASixthEditionOfficeOnline.xsl y CHICAGO.XSL para ver si puedo detectar las diferencias que me den una pista de lo que tengo que cambiar, dado que APA utiliza el ampersand y Chicago utiliza "and", pero desgraciadamente mi nivel de conocimientos de XML, combinado con el tamaño de esos archivos, me ha impedido detectar la(s) parte(s) que hay que cambiar. Además, ambos estilos ponen un punto después del autor o autores en la bibliografía.

Gracias por cualquier ayuda o consejo con esto.

3voto

yokki Puntos 231

Es difícil trabajar con las hojas de estilo .xsl incorporadas, así que lo que sigue son sólo algunas sugerencias. La principal dificultad es identificar el punto apropiado para el cambio - dependiendo de lo que es, usted puede puede hacer un solo cambio, o puede que tenga que hacer muchos cambios bastante similares. Esto se debe principalmente a que estas hojas de estilo tratan de implementar un conjunto bastante grande de "pequeñas" reglas. Independientemente de cómo lo haga un implementador, siempre va a ser difícil identificar el punto en el que cambiar una plantilla XSL dentro de la hoja de estilos va a tener el impacto adecuado. Utilizar un lenguaje que no es especialmente familiar y no proporcionar documentación interna no ayuda.

Otro problema desafortunado es que usted puede tener que proporcionar su .xsl modificado a cualquier otra persona que necesite trabajar en su documento.

Pero, por ejemplo, te sugeriría que empezaras guardando una copia de Chicago.xsl en la carpeta que has identificado (la que está en tu área de usuario, no la que está bajo Archivos de Programa o Archivos de Programa (86). Llámalo Xhicago.xsl, quizás.

Entonces, cuando reinicie Word, debería ver dos estilos idénticos en el desplegable correspondiente. Ahora abra el .xsl en un editor adecuado (actualmente utilizo Visual Studio Code, con plugins adecuados para .xml y otros tipos de archivos).

Dicho esto, al menos podrías probar lo siguiente, ya que puede ayudarte a establecer si es suficiente para tus necesidades actuales.

Te sugiero que empieces guardando una copia de Chicago.xsl en la carpeta que has identificado (la que está en tu área de usuario, no la que está bajo Archivos de Programa o Archivos de Programa (86). Llámalo Xhicago.xsl, quizás.

Entonces, cuando reinicie Word, debería ver dos estilos idénticos en el desplegable correspondiente. Ahora abra un documento de prueba que ya contenga algunas citas y una bibliografía, y cambie entre las dos hojas de estilo Chicago utilizando el menú desplegable de Word. No deberías ver ningún cambio en la salida, pero Word puede parpadear un poco.

Abra el archivo Xhicago.xsl en un editor adecuado (actualmente utilizo Visual Studio Code, con plugins adecuados para .xml y otros tipos de archivos).

IMO lo primero que hay que cambiar es el XmlVersion para poder ver la diferencia entre el Chicago original y el nuevo. Busca

b:XmlVersion

y deberías ver un código como este (si estás usando una versión significativamente diferente de Chicago.xsl puede que veas alguna diferencia con respecto a lo que yo veo).

<xsl:when test="b:XslVersion">

  <xsl:text>16</xsl:text>

</xsl:when>

Cambia el 16 por (digamos) el 18 (creo que Microsoft puede haber avanzado desde mi versión ya) y luego guarda el .xsl. Aquí generalmente no necesito cerrarlo mientras pruebo los cambios. Personalmente también escribiría un comentario XML - aparte de cualquier otra cosa, realmente te ayuda a encontrar las cosas que cambiaste. e.g.

<xsl:when test="b:XslVersion">

  <!-- 20200402 changed 16 to 18 -->

  <xsl:text>18</xsl:text>

</xsl:when>

Personalmente también prefiero envolver el código antiguo dentro por si lo vuelvo a necesitar.

Ahora, reinicie Word de nuevo y vuelva a abrir su documento de prueba. Deberías poder ver dos estilos "Chicago" diferentes en el desplegable, con dos números de versión diferentes.

A continuación, en el .xsl, busque

  <xsl:template name="templ_str_AndUnCap" >

y deberías ver un trozo de código como este:

  <xsl:template name="templ_str_AndUnCap" >
    <xsl:param name="LCID" />
    <xsl:variable name="_LCID">
      <xsl:call-template name="localLCID">
        <xsl:with-param name="LCID" select="$LCID"/>
      </xsl:call-template>
    </xsl:variable>
    <xsl:value-of select="/*/b:Locals/b:Local[@LCID=$_LCID]/b:Strings/b:AndUnCap"/>
  </xsl:template>

Lo que hace esto es establecer una variable local que contiene la palabra que el .xsl utilizará cuando necesite una "y", al menos cuando esté utilizando un ID de idioma inglés.

Cada vez que Word quiere generar el texto de una cita o de toda la bibliografía, pasa un archivo XML al .xsl. Ese archivo contiene todas las citas relevantes, y también un montón de otras configuraciones. Algunos de ellos son ajustes generales, como "debe haber una 'y' antes del autor final en una lista de autores", y otros son ajustes asociados con diferentes hojas de estilo incorporadas. Además, puede haber ajustes para muchos códigos de idioma diferentes. Así, por ejemplo, el XML puede contener "and" para el inglés pero "et" para el francés. Por lo que sé, no hay ningún lugar que permita configurar estos ajustes: están codificados en algún lugar de Word.

Por lo tanto, antes de cambiar este código, hay que tener en cuenta cuál puede ser el impacto.

En primer lugar, por lo que sé, la palabra "and" sólo está definida en un elemento del XML entrante. Por lo tanto, si quiere "y" para una lista de Autores, pero no para "Traductores", no puede confiar en que el XML entrante se lo proporcione. El cambio que voy a sugerir cambiará "y" por "&" en cada lugar donde el .xsl hace referencia a este valor entrante. Además, no va a tener en cuenta el ID del idioma. Pero aquí está mi código sugerido:

<xsl:template name="templ_str_AndUnCap" >
    <xsl:param name="LCID" />
    <xsl:variable name="_LCID">
      <xsl:call-template name="localLCID">
        <xsl:with-param name="LCID" select="$LCID"/>
      </xsl:call-template>
    </xsl:variable>
    <!--20200402 use &amp; instead of <xsl:value-of select="/*/b:Locals/b:Local[@LCID=$_LCID]/b:Strings/b:AndUnCap"/>-->
    <xsl:text>&amp;</xsl:text>
  </xsl:template>

Ahora guarde el .xsl de nuevo. Cuando cambie al estilo Chicago y vuelva al estilo Xhicago, debería ver los cambios reflejados en la Bibliografía (aunque es posible que tenga que actualizar la Bibliografía). Si has hecho cualquier errores de codificación lo más probable es que no veas ningún cambio, y de hecho la próxima vez que reinicies Word, probablemente tampoco verás el estilo Xhicago en la lista - Word no cargará la hoja a menos que sea un .xsl válido y tenga algunas plantillas especiales que Word espera.

Sin embargo, si todo funciona y tienes un Libro con autores

Ionawr, Chwefror, Mawrth and Ebrill

en Chicago en la cita debería ver

Ionawr, Chwefror, Mawrth and Ebrill

y en la Bibliografía debería ver

Ionawr, Chwefror, Mawrth, and Ebrill

En Xhicago debería ver

Ionawr, Chwefror, Mawrth & Ebrill

y

Ionawr, Chwefror, Mawrth, & Ebrill

respectivamente.

Ahora no me gustaría mucho esa coma después de Lucas, y probablemente puedes deshacerte de ella (de nuevo, con un impacto quizás más amplio de lo que podrías esperar) buscando

  <xsl:template name="templ_prop_NoCommaBeforeAnd" >

y cambiar el texto por

  <xsl:template name="templ_prop_NoCommaBeforeAnd" >
    <xsl:param name="LCID" />
    <xsl:variable name="_LCID">
      <xsl:call-template name="localLCID">
        <xsl:with-param name="LCID" select="$LCID"/>
      </xsl:call-template>
    </xsl:variable>
    <!-- 20200402 hard code this one
    <xsl:value-of select="/*/b:Locals/b:Local[@LCID=$_LCID]/b:General/b:NoCommaBeforeAnd"/>
    -->
    <xsl:text>yes</xsl:text>
  </xsl:template>

Guárdalo y pruébalo.

Por último, deshacerse del punto entre los autores y el año es problemático por más razones de las que hemos discutido anteriormente. por ejemplo, no es necesariamente un "punto antes del año". por ejemplo, ¿qué pasa si no hay un año? (y ni siquiera hemos hablado de la situación en la que hay "et. al." en lugar de los nombres reales de los autores).

Lo que puede arreglar esto para una lista de autores de libros es buscar

<xsl:variable name="theAuthorSufixDot">

y cambiar el código a

<xsl:variable name="theAuthorSufixDot">
  <!--this may be enough to suppress the dot between the authors and the year
  <xsl:call-template name="appendField_Dot">
    <xsl:with-param name="field" select="$theAuthorSufix"/>
  </xsl:call-template>
  -->
  <xsl:value-of select="$theAuthorSufix" />
</xsl:variable>

Por otra parte, probablemente merezca la pena comprobar si alguien de tu universidad ha hecho ya este trabajo. Ciertamente he hecho pequeñas modificaciones para la gente de vez en cuando, pero no creo que conseguirlo todo derecho a todo situaciones para todo "culturas" es realmente una propuesta práctica sin dedicar mucho tiempo al problema. Aunque creo que la estructura interna del XML que Word pasa al XSL puede estar descrita en la norma ISO 29500 para el .docx, encontré toda esta área muy confusa y decidí que lo único que ayudaría sería tener una hoja de estilos que iterara a través de todo el XML que Word está proporcionando. Estoy seguro de que se podría mejorar de muchas maneras, pero aquí está mi "explore.xsl". Obviamente, no puedes usarlo como una hoja normal, pero lo pones en la misma carpeta que los otros archivos .xsl y cambias a él de la forma habitual en Word.

Por cierto, la documentación de Microsoft sobre lo que hay que poner en un .xsl es ya bastante antigua. No creo que explique muy bien que algunas de las "opciones" implementadas por código dentro de la "opción" principal, por ejemplo

<xsl:when test="b:XslVersion">

eran necesarios en versiones anteriores de Word, pero no lo son en las posteriores, y viceversa. Además, en un momento dado, la versión de Word para Mac admitía un diseño de Notas al pie de página diferente del diseño normal de Citas. Sin embargo, eso desapareció en Mac Word 2016 y no creo que haya vuelto.

Por último, encontrará otros archivos .XSL utilizados por el sistema de Bibliografía en las carpetas de Microsoft Office bajo Archivos de Programa (o la versión (86)). Por lo que sé, no se utilizan en la producción de los textos de Citation y Bib, sólo se utilizan para algunos o todos los cuadros de diálogo relacionados con la Bibliografía que utiliza Word.

Pero aquí está ese explore.xsl:

urn:schemas-microsoft-com:xslt" 
   xmlns:b="http://schemas.openxmlformats.org/officeDocument/2006/bibliography" 
   xmlns:t="http://www.microsoft.com/temp">
   <xsl:output method="html" encoding="utf-8"/>

   <!--Match the root element, and dispatch to its children-->

   <xsl:template match="/">
      <!--<xsl:apply-templates select="*" />-->
      <xsl:choose>
         <xsl:when test="b:Version">
            <xsl:text>2019.10.16</xsl:text>
         </xsl:when>

         <xsl:when test="b:XslVersion">
            <xsl:text>2</xsl:text>
         </xsl:when>

         <xsl:when test="b:StyleNameLocalized">
            <xsl:text>explore</xsl:text>
         </xsl:when>

      <!--<xsl:variable name="book_Title">
         <xsl:value-of select="(b:Title)" />
      </xsl:variable>-->

         <xsl:when test="b:Citation">
            <xsl:call-template name="output-data"/>
         </xsl:when>

         <xsl:when test="b:Bibliography">
            <xsl:call-template name="output-data"/>
         </xsl:when>

      </xsl:choose>

   </xsl:template>

   <xsl:template name="output-data" >
      <html xmlns="http://www.w3.org/TR/REC-html40">
         <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
         </head>
         <body>
            <table>
               <tr>
                  <td>Name</td><td>Value</td>
               </tr>
               <xsl:apply-templates select="node()" />
            </table>
         </body>
      </html>
   </xsl:template>

    <xsl:template match="node()"> 
      <xsl:if test="text()"> 
      <tr>
         <td>
         <!--From the Answer by Daniel Haley in 
            https://stackoverflow.com/questions/953197/how-do-you-output-the-current-element-path-in-xslt -->
            <xsl:for-each select="ancestor-or-self::*">
               <xsl:value-of select="concat('/',local-name())"/>
               <!--Predicate is only output when needed.-->
               <xsl:if test="(preceding-sibling::*|following-sibling::*)[local-name()=local-name(current())]">
                  <xsl:value-of select="concat('[',count(preceding-sibling::*[local-name()=local-name(current())])+1,']')"/>
               </xsl:if>
            </xsl:for-each>
         </td>
         <td>
            <xsl:value-of select="text()"/>
         </td>
      </tr>
      </xsl:if>
      <xsl:apply-templates select="@*"/>
      <xsl:apply-templates select="node()"/>

    </xsl:template>

   <xsl:template match="@*">
      <tr>
         <td>
            <xsl:text>@</xsl:text>
            <xsl:value-of select="name(.)"/>
         </td>
         <td>
            <xsl:value-of select="text()"/>
         </td>
      </tr>
   </xsl:template>

</xsl:stylesheet>

0 votos

¿Qué demonios? ¡¿Por qué alguien borró mi comentario de agradecimiento?! ¡¿Cómo exactamente mi comentario estaba rompiendo las reglas?! Solo estaba agradeciendo a yokki por una respuesta que obviamente requirió una cantidad insana de tiempo para investigar, escribir y armar. ¿Qué diablos está pasando aquí?

0 votos

Sería muy extraño e incómodo que el superusuario "prefiriera" que uno no agradeciera al editor de una buena respuesta en un comentario sobre esa respuesta.

0 votos

Sí, puedo entenderlo. Estos comentarios entre nosotros ahora mismo seguro que merecen ser borrados más adelante, sobre todo porque son varios. Sólo creo que un comentario de agradecimiento no debería estar mal visto. Mientras un usuario no esté realmente publicando 3 comentarios, por ejemplo, sólo para dar las gracias, creo que el agradecimiento por las respuestas útiles es una retroalimentación buena y útil para los editores de respuestas, y también "añade a la conversación". Demuestra, por ejemplo, que el editor de la pregunta no se ha "conformado" con una respuesta, sino que le ha gustado.

1voto

DavidPostill Puntos 30286

Básicamente necesito añadir un nuevo estilo de citación y bibliografía

Puedes instalar estilos adicionales. Uno de ellos podría ser más adecuado para usted:

  • Asociación Brasileña de Normas Técnicas (ABNT)
  • Association for Computing Machinery (ACM)
  • Sociedad Médica Americana (ACS)
  • Asociación Médica Americana (AMA)
  • Asociación Americana de Sociología (ASA)
  • Consejo de Editores de Ciencia (CSE)
  • Harvard - AGPS
  • Harvard - Anglia
  • Harvard - Exeter
  • Harvard - Leeds
  • Humana Press
  • IEEE
  • Lecture Notes in Computer Science (LNCS)
  • Asociación de Investigación de las Humanidades Modernas (ARHM)
  • Naturaleza
  • Vancouver

Fuente Instalar estilos de referencia adicionales de Word (Mac + Windows)

También puede utilizar un estilo personalizado para obtener el formato exacto que desee. Consulte los siguientes enlaces para obtener más detalles:

1voto

Johan Leino Puntos 2533

Mis investigaciones al respecto sugieren que esto es posible a través de archivos XML. Ya he editado archivos XML, pero ¿dónde está el archivo XML del estilo Chicago, por ejemplo?

Se encuentra dentro de Bibliography/Style en C:\Program Files (x86)\Microsoft Office\Office16\Bibliography\Style para Office 2016. La ruta exacta variará en función de la versión de Office que tenga instalada.

Crear estilos de bibliografía personalizados indica todo lo que se requiere para un nuevo estilo de citación. Dado que el proceso requiere varios archivos XML, sería difícil citar el enlace, pero de todos modos la pregunta no era cómo crear su propio estilo.

0 votos

@Rok - En realidad nunca dije que fuera fácil definir tu propio estilo de citación. Simplemente preguntaste dónde se almacenaban los archivos, lo cual proporcioné, la documentación fue un intento de educarte completamente en todo el proceso

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: