Commit fd91442b authored by albert-github's avatar albert-github
Browse files

Bug 687576 - Add support for LATEX_EXTRA_STYLESHEET

Added the possibility for  LATEX_EXTRA_STYLESHEET analogous to  HTML_EXTRA_STYLESHEET. Special attention has been paid to the extension as ".sty" is automatically added by the \usepackage
parent 200b828e
Loading
Loading
Loading
Loading
+18 −5
Original line number Original line Diff line number Diff line
@@ -2534,6 +2534,19 @@ EXTRA_PACKAGES=times
 used inside the footer.
 used inside the footer.
 
 
 <br>Note: Only use a user-defined footer if you know what you are doing!
 <br>Note: Only use a user-defined footer if you know what you are doing!
]]>
      </docs>
    </option>
    <option type='list' id='LATEX_EXTRA_STYLESHEET' format='file' defval='' depends='GENERATE_LATEX'>
      <docs>
<![CDATA[
 The \c LATEX_EXTRA_STYLESHEET tag can be used to specify additional 
 user-defined \f$\mbox{\LaTeX}\f$ style sheets that are included after the standard 
 style sheets created by doxygen. Using this option one can overrule 
 certain style aspects. Doxygen will copy the style sheet files to 
 the output directory.
 \note The order of the extra style sheet files is of importance (e.g. the last
 style sheet in the list overrules the setting of the previous ones in the list).
]]>
]]>
      </docs>
      </docs>
    </option>
    </option>
+28 −0
Original line number Original line Diff line number Diff line
@@ -9161,6 +9161,33 @@ static void readTagFile(Entry *root,const char *tl)
  parseTagFile(root,fi.absFilePath().utf8());
  parseTagFile(root,fi.absFilePath().utf8());
}
}


//----------------------------------------------------------------------------
static void copyLatexStyleSheet()
{
  QStrList latexExtraStyleSheet = Config_getList("LATEX_EXTRA_STYLESHEET");
  for (uint i=0; i<latexExtraStyleSheet.count(); ++i)
  {
    QCString fileName(latexExtraStyleSheet.at(i));
    if (!fileName.isEmpty())
    {
      QFileInfo fi(fileName);
      if (!fi.exists())
      {
        err("Style sheet '%s' specified by LATEX_EXTRA_STYLESHEET does not exist!\n",fileName.data());
      }
      else
      {
        QCString destFileName = Config_getString("LATEX_OUTPUT")+"/"+fi.fileName().data();
        if (!checkExtension(fi.fileName().data(), latexStyleExtension))
        {
          destFileName += latexStyleExtension;
        }
        copyFile(fileName, destFileName);
      }
    }
  }
}

//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
static void copyStyleSheet()
static void copyStyleSheet()
{
{
@@ -11365,6 +11392,7 @@ void generateOutput()
    g_outputList->add(new LatexGenerator);
    g_outputList->add(new LatexGenerator);
    LatexGenerator::init();
    LatexGenerator::init();


    copyLatexStyleSheet();
    // copy static stuff
    // copy static stuff
    copyExtraFiles("LATEX_EXTRA_FILES","LATEX_OUTPUT");
    copyExtraFiles("LATEX_EXTRA_FILES","LATEX_OUTPUT");
  }
  }
+23 −2
Original line number Original line Diff line number Diff line
@@ -269,8 +269,29 @@ static void writeDefaultHeaderPart1(FTextStream &t)
  t << "% Packages required by doxygen\n"
  t << "% Packages required by doxygen\n"
       "\\usepackage{fixltx2e}\n" // for \textsubscript
       "\\usepackage{fixltx2e}\n" // for \textsubscript
       "\\usepackage{calc}\n"
       "\\usepackage{calc}\n"
       "\\usepackage{doxygen}\n"
       "\\usepackage{doxygen}\n";
       "\\usepackage{graphicx}\n"
       QStrList extraLatexStyle = Config_getList("LATEX_EXTRA_STYLESHEET");
       for (uint i=0; i<extraLatexStyle.count(); ++i)
       {
         QCString fileName(extraLatexStyle.at(i));
         if (!fileName.isEmpty())
         {
           QFileInfo fi(fileName);
           if (fi.exists())
           {
             if (checkExtension(fi.fileName().data(), latexStyleExtension))
             {
               // strip the extension, it will be added by the usepackage in the tex conversion process
               t << "\\usepackage{" << stripExtensionGeneral(fi.fileName().data(), latexStyleExtension) << "}\n";
             }
             else
             {
               t << "\\usepackage{" << fi.fileName().utf8() << "}\n";
             }
           }
         }
       }
  t << "\\usepackage{graphicx}\n"
       "\\usepackage[utf8]{inputenc}\n"
       "\\usepackage[utf8]{inputenc}\n"
       "\\usepackage{makeidx}\n"
       "\\usepackage{makeidx}\n"
       "\\usepackage{multicol}\n"
       "\\usepackage{multicol}\n"
+2 −0
Original line number Original line Diff line number Diff line
@@ -22,6 +22,8 @@


class QFile;
class QFile;


static const char *latexStyleExtension = ".sty";

/** Generator for LaTeX output. */
/** Generator for LaTeX output. */
class LatexGenerator : public OutputGenerator
class LatexGenerator : public OutputGenerator
{
{
+17 −3
Original line number Original line Diff line number Diff line
@@ -6559,16 +6559,30 @@ QCString rtfFormatBmkStr(const char *name)
  return *tag;
  return *tag;
}
}


QCString stripExtension(const char *fName)
bool checkExtension(const char *fName, const char *ext)
{
  return (QCString(fName).right(QCString(ext).length())==ext);
}

//QCString stripExtension(const char *fName, const char *ext)
QCString stripExtensionGeneral(const char *fName, const char *ext)
{
{
  QCString result=fName;
  QCString result=fName;
  if (result.right(Doxygen::htmlFileExtension.length())==Doxygen::htmlFileExtension)
  //if (result.right(Doxygen::htmlFileExtension.length())==Doxygen::htmlFileExtension)
  //{
    //result=result.left(result.length()-Doxygen::htmlFileExtension.length());
  //}
  if (result.right(QCString(ext).length())==QCString(ext))
  {
  {
    result=result.left(result.length()-Doxygen::htmlFileExtension.length());
    result=result.left(result.length()-QCString(ext).length());
  }
  }
  return result;
  return result;
}
}


QCString stripExtension(const char *fName)
{
  return stripExtensionGeneral(fName, Doxygen::htmlFileExtension);
}


void replaceNamespaceAliases(QCString &scope,int i)
void replaceNamespaceAliases(QCString &scope,int i)
{
{
Loading