Стили библиографии не отображаются в некоторых версиях слова - PullRequest
0 голосов
/ 06 октября 2019

Добрый день.

Я делаю несколько пользовательских стилей библиографии для Word. Проблема в том, что коды появляются и работают в моем Word 2016 в Windows и в другой версии Office 365 для Mac. Но они не отображаются на двух других Macbook, на которых я их пробовал, и на Office 365. (Сначала я думал, что это из-за прав доступа к файлам на Mac, но это не решило проблему https://answers.microsoft.com/en-us/mac/forum/macoffice2016-macword/word-2016-for-mac-os-x-yosemite-numeric/200b578a-4007-4226-aad6-8132e2958298)

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0" 
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
   xmlns:msxsl="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"/>

   <xsl:template match="*" mode="outputHtml2">
      <xsl:apply-templates mode="outputHtml"/>
  </xsl:template>


   <!--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.9.29</xsl:text>
         </xsl:when>

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

         <xsl:when test="b:StyleNameLocalized">
            <xsl:choose>
               <xsl:when test="b:StyleNameLocalized/b:Lcid='1033'">
                  <xsl:text>David Teste</xsl:text>
               </xsl:when>
               <xsl:when test="b:StyleNameLocalized/b:Lcid='2070'">
                  <xsl:text>David Teste</xsl:text>
               </xsl:when>
            </xsl:choose>
         </xsl:when>
      </xsl:choose>

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

   </xsl:template>


   <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:ShortTitle</xsl:text>
         </b:ImportantField>
         <b:ImportantField>
            <xsl:text>b:Publisher</xsl:text>
         </b:ImportantField>
         <b:ImportantField>
            <xsl:text>b:Edition</xsl:text>
         </b:ImportantField>
         <b:ImportantField>
            <xsl:text>b:Year</xsl:text>
         </b:ImportantField>
         <b:ImportantField>
            <xsl:text>b:Pages</xsl:text>
         </b:ImportantField>
      </b:ImportantFields>
   </xsl:template>

   <xsl:template match="b:GetImportantFields[b:SourceType = 'BookSection']">
      <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:ShortTitle</xsl:text>
         </b:ImportantField>
         <b:ImportantField>
            <xsl:text>b:BookTitle</xsl:text>
         </b:ImportantField>
         <b:ImportantField>
            <xsl:text>b:Publisher</xsl:text>
         </b:ImportantField>
         <b:ImportantField>
            <xsl:text>b:Edition</xsl:text>
         </b:ImportantField>
         <b:ImportantField>
            <xsl:text>b:Year</xsl:text>
         </b:ImportantField>
         <b:ImportantField>
            <xsl:text>b:Pages</xsl:text>
         </b:ImportantField>
         <b:ImportantField>
            <xsl:text>b:Comments</xsl:text>
         </b:ImportantField>
      </b:ImportantFields>
   </xsl:template>

   <xsl:template match="b:GetImportantFields[b:SourceType = 'ArticleInAPeriodical']">
      <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:ShortTitle</xsl:text>
         </b:ImportantField>
         <b:ImportantField>
            <xsl:text>b:PeriodicalTitle</xsl:text>
         </b:ImportantField>
         <b:ImportantField>
            <xsl:text>b:Edition</xsl:text>
         </b:ImportantField>
         <b:ImportantField>
            <xsl:text>b:Month</xsl:text>
         </b:ImportantField>
         <b:ImportantField>
            <xsl:text>b:Year</xsl:text>
         </b:ImportantField>
         <b:ImportantField>
            <xsl:text>b:Pages</xsl:text>
         </b:ImportantField>
         <b:ImportantField>
            <xsl:text>b:Comments</xsl:text>
         </b:ImportantField>
      </b:ImportantFields>
   </xsl:template>



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


   <xsl:template match="b:Source[b:SourceType = 'Book']">
      <xsl:if test = "string-length(b:Tag) >= 9">
         <p>
            <span style='text-transform: uppercase;'>
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Middle"/>
            </span>
            <xsl:text> </xsl:text>
            <span style='text-transform: uppercase;'>
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Last"/>
            </span>
            <xsl:text>, </xsl:text>
            <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:First"/>
            <xsl:text>, </xsl:text>
            <i>
               <xsl:value-of select="b:Title"/>
               <xsl:text>, </xsl:text>
            </i>
            <xsl:value-of select="b:Publisher"/>
            <xsl:text>, </xsl:text>
            <xsl:value-of select="b:Edition"/>
            <xsl:text>.ª ed., </xsl:text>
            <xsl:value-of select="b:Year"/>
         </p>
      </xsl:if>

   </xsl:template>


   <xsl:template match="b:Source[b:SourceType = 'BookSection']">
      <!--Label the paragraph as an Office Bibliography paragraph-->
      <xsl:if test = "string-length(b:Tag) >= 9">
         <p>
            <span style='text-transform: uppercase;'>
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Middle"/>
            </span>
            <xsl:text> </xsl:text>
            <span style='text-transform: uppercase;'>
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Last"/>
            </span>
            <xsl:text>, </xsl:text>
            <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:First"/>
            <xsl:text>, </xsl:text>
            <i>
               <xsl:value-of select="b:Title"/>
               <xsl:text>, </xsl:text>
            </i>
            <xsl:value-of select="b:Publisher"/>
            <xsl:text>, </xsl:text>
            <xsl:value-of select="b:Edition"/>
            <xsl:text>.ª ed., </xsl:text>
            <xsl:value-of select="b:Year"/>
            <xsl:text>, pp. </xsl:text>
            <xsl:value-of select="b:Comments"/>
         </p>
      </xsl:if>
   </xsl:template>

   <xsl:template match="b:Source[b:SourceType = 'ArticleInAPeriodical']">
      <xsl:if test = "string-length(b:Tag) >= 9">
         <p>
            <span style='text-transform: uppercase;'>
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Middle"/>
            </span>
            <xsl:text> </xsl:text>
            <span style='text-transform: uppercase;'>
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Last"/>
            </span>
            <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:Title"/>
            <xsl:text>", </xsl:text>
            <i>
               <span style='text-transform: uppercase;'>
                  <xsl:value-of select="b:PeriodicalTitle"/>
               </span>
            </i>
            <xsl:text>, n.º </xsl:text>
            <xsl:value-of select="b:Edition"/>
            <xsl:text>, </xsl:text>
            <xsl:value-of select="b:Month"/>
            <xsl:text>, </xsl:text>
            <xsl:value-of select="b:Year"/>
            <xsl:text>, pp. </xsl:text>
            <xsl:value-of select="b:Comments"/>
         </p>
      </xsl:if>
   </xsl:template>

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


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

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

         <body>

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

            </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">
         <body>
            <xsl:if test = "9 > string-length(b:Tag)">
               <!-- Defines the output format as (Author, Year)-->
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:First"/>
               <xsl:text> </xsl:text>
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Middle"/>
               <xsl:text> </xsl:text>
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Last"/>
               <xsl:text>, </xsl:text>
               <i>
                  <xsl:value-of select="b:ShortTitle"/>
                  <xsl:text>..., </xsl:text>
                  <xsl:text>ob. cit.</xsl:text>
               </i>
               <xsl:text>, pp. </xsl:text>
               <xsl:value-of select="b:Pages"/>
            </xsl:if>
            <xsl:if test = "string-length(b:Tag) >= 9">
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:First"/>
               <xsl:text> </xsl:text>
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Middle"/>
               <xsl:text> </xsl:text>
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Last"/>
               <xsl:text>, </xsl:text>
               <i>
                  <xsl:value-of select="b:Title"/>
                  <xsl:text>, </xsl:text>
               </i>
               <xsl:value-of select="b:Publisher"/>
               <xsl:text>, </xsl:text>
               <xsl:value-of select="b:Edition"/>
               <xsl:text>.ª ed., </xsl:text>
               <xsl:value-of select="b:Year"/>
               <xsl:text>, pp. </xsl:text>
               <xsl:value-of select="b:Pages"/>
            </xsl:if>

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

   <!--Defines the output of the Citation-->

   <xsl:template match="b:Citation/b:Source[b:SourceType = 'BookSection']">
      <html xmlns="https://www.w3.org/TR/REC-html40">
         <body>
            <xsl:if test = "9 > string-length(b:Tag)">
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:First"/>
               <xsl:text> </xsl:text>
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Middle"/>
               <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:ShortTitle"/>
               <xsl:text>...", </xsl:text>
               <i>
                  <xsl:text>ob. cit.</xsl:text>
               </i>
               <xsl:text>, pp. </xsl:text>
               <xsl:value-of select="b:Pages"/>
            </xsl:if>
            <xsl:if test = "string-length(b:Tag) >= 9">
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:First"/>
               <xsl:text> </xsl:text>
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Middle"/>
               <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:Title"/>
               <xsl:text>", </xsl:text>
               <i>
                  <xsl:value-of select="b:BookTitle"/>
                  <xsl:text>, </xsl:text>
               </i>
               <xsl:value-of select="b:Publisher"/>
               <xsl:text>, </xsl:text>
               <xsl:value-of select="b:Edition"/>
               <xsl:text>.ª ed., </xsl:text>
               <xsl:value-of select="b:Year"/>
               <xsl:text>, pp. </xsl:text>
               <xsl:value-of select="b:Pages"/>
            </xsl:if>
         </body>
      </html>
   </xsl:template>


   <!--Defines the output of the Citation-->
   <xsl:template match="b:Citation/b:Source[b:SourceType = 'ArticleInAPeriodical']">
      <html xmlns="https://www.w3.org/TR/REC-html40">
         <body>
            <!-- Defines the output format as (Author, Year)-->
            <xsl:if test = "9 > string-length(b:Tag)">
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:First"/>
               <xsl:text> </xsl:text>
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Middle"/>
               <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:ShortTitle"/>
               <xsl:text>...", </xsl:text>
               <i>
                  <xsl:text>ob. cit.</xsl:text>
               </i>
               <xsl:text>, pp. </xsl:text>
               <xsl:value-of select="b:Pages"/>
            </xsl:if>
            <xsl:if test = "string-length(b:Tag) >= 9">
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:First"/>
               <xsl:text> </xsl:text>
               <xsl:value-of select="b:Author/b:Author/b:NameList/b:Person/b:Middle"/>
               <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:Title"/>
               <xsl:text>", </xsl:text>
               <i>
                  <xsl:value-of select="b:PeriodicalTitle"/>
               </i>
               <xsl:text>, n.º </xsl:text>
               <xsl:value-of select="b:Edition"/>
               <xsl:text>, </xsl:text>
               <xsl:value-of select="b:Month"/>
               <xsl:text>, </xsl:text>
               <xsl:value-of select="b:Year"/>
               <xsl:text>, pp. </xsl:text>
               <xsl:value-of select="b:Pages"/>
            </xsl:if>
         </body>
      </html>
   </xsl:template>



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

Это коды.

Кто-нибудь сталкивался с чем-то подобным раньше? Может кто-нибудь помочь? Спасибо.

1 Ответ

0 голосов
/ 10 октября 2019

Для текущей (2016/2019) версии Word на Mac (у меня v. 16.29 (19090802)), например, после

         <xsl:when test="b:Version">
            <xsl:text>2019.9.29</xsl:text>
         </xsl:when>

вам нужно будет вставить код, подобный этому:

         <xsl:when test="b:OfficeStyleKey">
            <xsl:text>David Teste</xsl:text>
         </xsl:when>

Этот тест, по-видимому, не требовался начиная с версии Office 2010 для Windows. Я удивлен, что это все еще необходимо на Mac, поскольку другая основная особенность Библиографии для Mac (различные ссылки на сноски), кажется, была удалена. Вполне возможно, что у вас установлена ​​более поздняя версия Mac Word, чем у меня, где вам не нужен этот код, но у вас также есть копии версии 2011 года, где она все еще может понадобиться.

NB в этой версииWord правильная папка для этих файлов .xsl стиля библиографии выглядит как

~ / Library / Group Containers / UBF8T346G9.Office / Пользовательский контент / Цитирования

(«~» означает верхний уровеньпапка пользователя, например / Macintosh HD / Users / myusername)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...