|
Packit |
1c1d7e |
/******************************************************************************
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Copyright (C) 1997-2015 by Dimitri van Heesch.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Permission to use, copy, modify, and distribute this software and its
|
|
Packit |
1c1d7e |
* documentation under the terms of the GNU General Public License is hereby
|
|
Packit |
1c1d7e |
* granted. No representations are made about the suitability of this software
|
|
Packit |
1c1d7e |
* for any purpose. It is provided "as is" without express or implied warranty.
|
|
Packit |
1c1d7e |
* See the GNU General Public License for more details.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Documents produced by Doxygen are derivative works derived from the
|
|
Packit |
1c1d7e |
* input used in their production; they are not affected by this license.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include <stdlib.h>
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include <qdir.h>
|
|
Packit |
1c1d7e |
#include "latexgen.h"
|
|
Packit |
1c1d7e |
#include "config.h"
|
|
Packit |
1c1d7e |
#include "message.h"
|
|
Packit |
1c1d7e |
#include "doxygen.h"
|
|
Packit |
1c1d7e |
#include "util.h"
|
|
Packit |
1c1d7e |
#include "diagram.h"
|
|
Packit |
1c1d7e |
#include "language.h"
|
|
Packit |
1c1d7e |
#include "version.h"
|
|
Packit |
1c1d7e |
#include "dot.h"
|
|
Packit |
1c1d7e |
#include "pagedef.h"
|
|
Packit |
1c1d7e |
#include "docparser.h"
|
|
Packit |
1c1d7e |
#include "latexdocvisitor.h"
|
|
Packit |
1c1d7e |
#include "dirdef.h"
|
|
Packit |
1c1d7e |
#include "cite.h"
|
|
Packit |
1c1d7e |
#include "groupdef.h"
|
|
Packit |
1c1d7e |
#include "classlist.h"
|
|
Packit |
1c1d7e |
#include "namespacedef.h"
|
|
Packit |
1c1d7e |
#include "filename.h"
|
|
Packit |
1c1d7e |
#include "resourcemgr.h"
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//-------------------------------
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
LatexCodeGenerator::LatexCodeGenerator(FTextStream &t,const QCString &relPath,const QCString &sourceFileName)
|
|
Packit |
1c1d7e |
: m_relPath(relPath), m_sourceFileName(sourceFileName), m_col(0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_prettyCode=Config_getBool(LATEX_SOURCE_CODE);
|
|
Packit |
1c1d7e |
setTextStream(t);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
LatexCodeGenerator::LatexCodeGenerator() : m_streamSet(FALSE), m_col(0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_prettyCode=Config_getBool(LATEX_SOURCE_CODE);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexCodeGenerator::setTextStream(FTextStream &t)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_streamSet = t.device()!=0;
|
|
Packit |
1c1d7e |
m_t.setDevice(t.device());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexCodeGenerator::setRelativePath(const QCString &path)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_relPath = path;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexCodeGenerator::setSourceFileName(const QCString &name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_sourceFileName = name;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexCodeGenerator::codify(const char *str)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (str)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
const char *p=str;
|
|
Packit |
1c1d7e |
char c;
|
|
Packit |
1c1d7e |
//char cs[5];
|
|
Packit |
1c1d7e |
int spacesToNextTabStop;
|
|
Packit |
1c1d7e |
static int tabSize = Config_getInt(TAB_SIZE);
|
|
Packit |
1c1d7e |
const int maxLineLen = 108;
|
|
Packit |
1c1d7e |
QCString result(4*maxLineLen+1); // worst case for 1 line of 4-byte chars
|
|
Packit |
1c1d7e |
int i;
|
|
Packit |
1c1d7e |
while ((c=*p))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
switch(c)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case 0x0c: p++; // remove ^L
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case '\t': spacesToNextTabStop =
|
|
Packit |
1c1d7e |
tabSize - (m_col%tabSize);
|
|
Packit |
1c1d7e |
m_t << Doxygen::spaces.left(spacesToNextTabStop);
|
|
Packit |
1c1d7e |
m_col+=spacesToNextTabStop;
|
|
Packit |
1c1d7e |
p++;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case '\n': m_t << '\n'; m_col=0; p++;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
default:
|
|
Packit |
1c1d7e |
i=0;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#undef COPYCHAR
|
|
Packit |
1c1d7e |
// helper macro to copy a single utf8 character, dealing with multibyte chars.
|
|
Packit |
1c1d7e |
#define COPYCHAR() do { \
|
|
Packit |
1c1d7e |
result[i++]=c; p++; \
|
|
Packit |
1c1d7e |
if (c<0) /* multibyte utf-8 character */ \
|
|
Packit |
1c1d7e |
{ \
|
|
Packit |
1c1d7e |
/* 1xxx.xxxx: >=2 byte character */ \
|
|
Packit |
1c1d7e |
result[i++]=*p++; \
|
|
Packit |
1c1d7e |
if (((uchar)c&0xE0)==0xE0) \
|
|
Packit |
1c1d7e |
{ \
|
|
Packit |
1c1d7e |
/* 111x.xxxx: >=3 byte character */ \
|
|
Packit |
1c1d7e |
result[i++]=*p++; \
|
|
Packit |
1c1d7e |
} \
|
|
Packit |
1c1d7e |
if (((uchar)c&0xF0)==0xF0) \
|
|
Packit |
1c1d7e |
{ \
|
|
Packit |
1c1d7e |
/* 1111.xxxx: 4 byte character */ \
|
|
Packit |
1c1d7e |
result[i++]=*p++; \
|
|
Packit |
1c1d7e |
} \
|
|
Packit |
1c1d7e |
} \
|
|
Packit |
1c1d7e |
m_col++; \
|
|
Packit |
1c1d7e |
} while(0)
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// gather characters until we find whitespace or are at
|
|
Packit |
1c1d7e |
// the end of a line
|
|
Packit |
1c1d7e |
COPYCHAR();
|
|
Packit |
1c1d7e |
if (m_col>=maxLineLen) // force line break
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "\n ";
|
|
Packit |
1c1d7e |
m_col=0;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else // copy more characters
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
while (m_col
|
|
Packit |
1c1d7e |
c!=0x0c && c!='\t' && c!='\n' && c!=' '
|
|
Packit |
1c1d7e |
)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
COPYCHAR();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (m_col>=maxLineLen) // force line break
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "\n ";
|
|
Packit |
1c1d7e |
m_col=0;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
result[i]=0; // add terminator
|
|
Packit |
1c1d7e |
//if (m_prettyCode)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
filterLatexString(m_t,result,FALSE,TRUE);
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//else
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// t << result;
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexCodeGenerator::writeCodeLink(const char *ref,const char *f,
|
|
Packit |
1c1d7e |
const char *anchor,const char *name,
|
|
Packit |
1c1d7e |
const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS);
|
|
Packit |
1c1d7e |
static bool usePDFLatex = Config_getBool(USE_PDFLATEX);
|
|
Packit |
1c1d7e |
int l = qstrlen(name);
|
|
Packit |
1c1d7e |
if (m_col+l>80)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "\n ";
|
|
Packit |
1c1d7e |
m_col=0;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (!ref && usePDFLatex && pdfHyperlinks)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "\\mbox{\\hyperlink{";
|
|
Packit |
1c1d7e |
if (f) m_t << stripPath(f);
|
|
Packit |
1c1d7e |
if (f && anchor) m_t << "_";
|
|
Packit |
1c1d7e |
if (anchor) m_t << anchor;
|
|
Packit |
1c1d7e |
m_t << "}{";
|
|
Packit |
1c1d7e |
codify(name);
|
|
Packit |
1c1d7e |
m_t << "}}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << name;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_col+=l;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexCodeGenerator::writeLineNumber(const char *ref,const char *fileName,const char *anchor,int l)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool usePDFLatex = Config_getBool(USE_PDFLATEX);
|
|
Packit |
1c1d7e |
static bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS);
|
|
Packit |
1c1d7e |
if (m_prettyCode)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString lineNumber;
|
|
Packit |
1c1d7e |
lineNumber.sprintf("%05d",l);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (fileName && !m_sourceFileName.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString lineAnchor;
|
|
Packit |
1c1d7e |
lineAnchor.sprintf("_l%05d",l);
|
|
Packit |
1c1d7e |
lineAnchor.prepend(stripExtensionGeneral(m_sourceFileName, ".tex"));
|
|
Packit |
1c1d7e |
//if (!m_prettyCode) return;
|
|
Packit |
1c1d7e |
if (usePDFLatex && pdfHyperlinks)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "\\Hypertarget{" << stripPath(lineAnchor) << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
writeCodeLink(ref,fileName,anchor,lineNumber,0);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
codify(lineNumber);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_t << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << l << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexCodeGenerator::startCodeLine(bool)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_col=0;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexCodeGenerator::endCodeLine()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
codify("\n");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexCodeGenerator::startFontClass(const char *name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "\\textcolor{" << name << "}{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexCodeGenerator::endFontClass()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
m_t << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//-------------------------------
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
LatexGenerator::LatexGenerator() : OutputGenerator()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
dir=Config_getString(LATEX_OUTPUT);
|
|
Packit |
1c1d7e |
//printf("LatexGenerator::LatexGenerator() insideTabbing=FALSE\n");
|
|
Packit |
1c1d7e |
insideTabbing=FALSE;
|
|
Packit |
1c1d7e |
firstDescItem=TRUE;
|
|
Packit |
1c1d7e |
disableLinks=FALSE;
|
|
Packit |
1c1d7e |
m_indent=0;
|
|
Packit |
1c1d7e |
templateMemberItem = FALSE;
|
|
Packit |
1c1d7e |
m_prettyCode=Config_getBool(LATEX_SOURCE_CODE);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
LatexGenerator::~LatexGenerator()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void writeLatexMakefile()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
bool generateBib = !Doxygen::citeDict->isEmpty();
|
|
Packit |
1c1d7e |
QCString dir=Config_getString(LATEX_OUTPUT);
|
|
Packit |
1c1d7e |
QCString fileName=dir+"/Makefile";
|
|
Packit |
1c1d7e |
QFile file(fileName);
|
|
Packit |
1c1d7e |
if (!file.open(IO_WriteOnly))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("Could not open file %s for writing\n",fileName.data());
|
|
Packit |
1c1d7e |
exit(1);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
// inserted by KONNO Akihisa <konno@researchers.jp> 2002-03-05
|
|
Packit |
1c1d7e |
QCString latex_command = Config_getString(LATEX_CMD_NAME);
|
|
Packit |
1c1d7e |
QCString mkidx_command = Config_getString(MAKEINDEX_CMD_NAME);
|
|
Packit |
1c1d7e |
// end insertion by KONNO Akihisa <konno@researchers.jp> 2002-03-05
|
|
Packit |
1c1d7e |
FTextStream t(&file;;
|
|
Packit |
1c1d7e |
if (!Config_getBool(USE_PDFLATEX)) // use plain old latex
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "all: refman.dvi" << endl
|
|
Packit |
1c1d7e |
<< endl
|
|
Packit |
1c1d7e |
<< "ps: refman.ps" << endl
|
|
Packit |
1c1d7e |
<< endl
|
|
Packit |
1c1d7e |
<< "pdf: refman.pdf" << endl
|
|
Packit |
1c1d7e |
<< endl
|
|
Packit |
1c1d7e |
<< "ps_2on1: refman_2on1.ps" << endl
|
|
Packit |
1c1d7e |
<< endl
|
|
Packit |
1c1d7e |
<< "pdf_2on1: refman_2on1.pdf" << endl
|
|
Packit |
1c1d7e |
<< endl
|
|
Packit |
1c1d7e |
<< "refman.ps: refman.dvi" << endl
|
|
Packit |
1c1d7e |
<< "\tdvips -o refman.ps refman.dvi" << endl
|
|
Packit |
1c1d7e |
<< endl;
|
|
Packit |
1c1d7e |
t << "refman.pdf: refman.ps" << endl;
|
|
Packit |
1c1d7e |
t << "\tps2pdf refman.ps refman.pdf" << endl << endl;
|
|
Packit |
1c1d7e |
t << "refman.dvi: clean refman.tex doxygen.sty" << endl
|
|
Packit |
1c1d7e |
<< "\techo \"Running latex...\"" << endl
|
|
Packit |
1c1d7e |
<< "\t" << latex_command << " refman.tex" << endl
|
|
Packit |
1c1d7e |
<< "\techo \"Running makeindex...\"" << endl
|
|
Packit |
1c1d7e |
<< "\t" << mkidx_command << " refman.idx" << endl;
|
|
Packit |
1c1d7e |
if (generateBib)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\techo \"Running bibtex...\"" << endl;
|
|
Packit |
1c1d7e |
t << "\tbibtex refman" << endl;
|
|
Packit |
1c1d7e |
t << "\techo \"Rerunning latex....\"" << endl;
|
|
Packit |
1c1d7e |
t << "\t" << latex_command << " refman.tex" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "\techo \"Rerunning latex....\"" << endl
|
|
Packit |
1c1d7e |
<< "\t" << latex_command << " refman.tex" << endl
|
|
Packit |
1c1d7e |
<< "\tlatex_count=8 ; \\" << endl
|
|
Packit |
1c1d7e |
<< "\twhile egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\\" << endl
|
|
Packit |
1c1d7e |
<< "\t do \\" << endl
|
|
Packit |
1c1d7e |
<< "\t echo \"Rerunning latex....\" ;\\" << endl
|
|
Packit |
1c1d7e |
<< "\t " << latex_command << " refman.tex ;\\" << endl
|
|
Packit |
1c1d7e |
<< "\t latex_count=`expr $$latex_count - 1` ;\\" << endl
|
|
Packit |
1c1d7e |
<< "\t done" << endl
|
|
Packit |
1c1d7e |
<< "\t" << mkidx_command << " refman.idx" << endl
|
|
Packit |
1c1d7e |
<< "\t" << latex_command << " refman.tex" << endl << endl
|
|
Packit |
1c1d7e |
<< "refman_2on1.ps: refman.ps" << endl
|
|
Packit |
1c1d7e |
<< "\tpsnup -2 refman.ps >refman_2on1.ps" << endl
|
|
Packit |
1c1d7e |
<< endl
|
|
Packit |
1c1d7e |
<< "refman_2on1.pdf: refman_2on1.ps" << endl
|
|
Packit |
1c1d7e |
<< "\tps2pdf refman_2on1.ps refman_2on1.pdf" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else // use pdflatex for higher quality output
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "all: refman.pdf" << endl << endl
|
|
Packit |
1c1d7e |
<< "pdf: refman.pdf" << endl << endl;
|
|
Packit |
1c1d7e |
t << "refman.pdf: clean refman.tex" << endl;
|
|
Packit |
1c1d7e |
t << "\tpdflatex refman" << endl;
|
|
Packit |
1c1d7e |
t << "\t" << mkidx_command << " refman.idx" << endl;
|
|
Packit |
1c1d7e |
if (generateBib)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\tbibtex refman" << endl;
|
|
Packit |
1c1d7e |
t << "\tpdflatex refman" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "\tpdflatex refman" << endl
|
|
Packit |
1c1d7e |
<< "\tlatex_count=8 ; \\" << endl
|
|
Packit |
1c1d7e |
<< "\twhile egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\\" << endl
|
|
Packit |
1c1d7e |
<< "\t do \\" << endl
|
|
Packit |
1c1d7e |
<< "\t echo \"Rerunning latex....\" ;\\" << endl
|
|
Packit |
1c1d7e |
<< "\t pdflatex refman ;\\" << endl
|
|
Packit |
1c1d7e |
<< "\t latex_count=`expr $$latex_count - 1` ;\\" << endl
|
|
Packit |
1c1d7e |
<< "\t done" << endl
|
|
Packit |
1c1d7e |
<< "\t" << mkidx_command << " refman.idx" << endl
|
|
Packit |
1c1d7e |
<< "\tpdflatex refman" << endl << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << endl
|
|
Packit |
1c1d7e |
<< "clean:" << endl
|
|
Packit |
1c1d7e |
<< "\trm -f "
|
|
Packit |
1c1d7e |
<< "*.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void writeMakeBat()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if defined(_MSC_VER)
|
|
Packit |
1c1d7e |
QCString dir=Config_getString(LATEX_OUTPUT);
|
|
Packit |
1c1d7e |
QCString fileName=dir+"/make.bat";
|
|
Packit |
1c1d7e |
QCString latex_command = Config_getString(LATEX_CMD_NAME);
|
|
Packit |
1c1d7e |
QCString mkidx_command = Config_getString(MAKEINDEX_CMD_NAME);
|
|
Packit |
1c1d7e |
QFile file(fileName);
|
|
Packit |
1c1d7e |
bool generateBib = !Doxygen::citeDict->isEmpty();
|
|
Packit |
1c1d7e |
if (!file.open(IO_WriteOnly))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("Could not open file %s for writing\n",fileName.data());
|
|
Packit |
1c1d7e |
exit(1);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
FTextStream t(&file;;
|
|
Packit |
1c1d7e |
t << "set Dir_Old=%cd%\n";
|
|
Packit |
1c1d7e |
t << "cd /D %~dp0\n\n";
|
|
Packit |
1c1d7e |
t << "del /s /f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf\n\n";
|
|
Packit |
1c1d7e |
if (!Config_getBool(USE_PDFLATEX)) // use plain old latex
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << latex_command << " refman.tex\n";
|
|
Packit |
1c1d7e |
t << "echo ----\n";
|
|
Packit |
1c1d7e |
t << mkidx_command << " refman.idx\n";
|
|
Packit |
1c1d7e |
if (generateBib)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "bibtex refman\n";
|
|
Packit |
1c1d7e |
t << "echo ----\n";
|
|
Packit |
1c1d7e |
t << latex_command << " refman.tex\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "setlocal enabledelayedexpansion\n";
|
|
Packit |
1c1d7e |
t << "set count=8\n";
|
|
Packit |
1c1d7e |
t << ":repeat\n";
|
|
Packit |
1c1d7e |
t << "set content=X\n";
|
|
Packit |
1c1d7e |
t << "for /F \"tokens=*\" %%T in ( 'findstr /C:\"Rerun LaTeX\" refman.log' ) do set content=\"%%~T\"\n";
|
|
Packit |
1c1d7e |
t << "if !content! == X for /F \"tokens=*\" %%T in ( 'findstr /C:\"Rerun to get cross-references right\" refman.log' ) do set content=\"%%~T\"\n";
|
|
Packit |
1c1d7e |
t << "if !content! == X goto :skip\n";
|
|
Packit |
1c1d7e |
t << "set /a count-=1\n";
|
|
Packit |
1c1d7e |
t << "if !count! EQU 0 goto :skip\n\n";
|
|
Packit |
1c1d7e |
t << "echo ----\n";
|
|
Packit |
1c1d7e |
t << latex_command << " refman.tex\n";
|
|
Packit |
1c1d7e |
t << "goto :repeat\n";
|
|
Packit |
1c1d7e |
t << ":skip\n";
|
|
Packit |
1c1d7e |
t << "endlocal\n";
|
|
Packit |
1c1d7e |
t << mkidx_command << " refman.idx\n";
|
|
Packit |
1c1d7e |
t << latex_command << " refman.tex\n";
|
|
Packit |
1c1d7e |
t << "dvips -o refman.ps refman.dvi\n";
|
|
Packit |
1c1d7e |
t << "gswin32c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite "
|
|
Packit |
1c1d7e |
"-sOutputFile=refman.pdf -c save pop -f refman.ps\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else // use pdflatex
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "pdflatex refman\n";
|
|
Packit |
1c1d7e |
t << "echo ----\n";
|
|
Packit |
1c1d7e |
t << mkidx_command << " refman.idx\n";
|
|
Packit |
1c1d7e |
if (generateBib)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "bibtex refman" << endl;
|
|
Packit |
1c1d7e |
t << "pdflatex refman" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "echo ----\n";
|
|
Packit |
1c1d7e |
t << "pdflatex refman\n\n";
|
|
Packit |
1c1d7e |
t << "setlocal enabledelayedexpansion\n";
|
|
Packit |
1c1d7e |
t << "set count=8\n";
|
|
Packit |
1c1d7e |
t << ":repeat\n";
|
|
Packit |
1c1d7e |
t << "set content=X\n";
|
|
Packit |
1c1d7e |
t << "for /F \"tokens=*\" %%T in ( 'findstr /C:\"Rerun LaTeX\" refman.log' ) do set content=\"%%~T\"\n";
|
|
Packit |
1c1d7e |
t << "if !content! == X for /F \"tokens=*\" %%T in ( 'findstr /C:\"Rerun to get cross-references right\" refman.log' ) do set content=\"%%~T\"\n";
|
|
Packit |
1c1d7e |
t << "if !content! == X goto :skip\n";
|
|
Packit |
1c1d7e |
t << "set /a count-=1\n";
|
|
Packit |
1c1d7e |
t << "if !count! EQU 0 goto :skip\n\n";
|
|
Packit |
1c1d7e |
t << "echo ----\n";
|
|
Packit |
1c1d7e |
t << "pdflatex refman\n";
|
|
Packit |
1c1d7e |
t << "goto :repeat\n";
|
|
Packit |
1c1d7e |
t << ":skip\n";
|
|
Packit |
1c1d7e |
t << "endlocal\n";
|
|
Packit |
1c1d7e |
t << mkidx_command << " refman.idx\n";
|
|
Packit |
1c1d7e |
t << "pdflatex refman\n";
|
|
Packit |
1c1d7e |
t << "cd /D %Dir_Old%\n";
|
|
Packit |
1c1d7e |
t << "set Dir_Old=\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::init()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QCString dir=Config_getString(LATEX_OUTPUT);
|
|
Packit |
1c1d7e |
QDir d(dir);
|
|
Packit |
1c1d7e |
if (!d.exists() && !d.mkdir(dir))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
err("Could not create output directory %s\n",dir.data());
|
|
Packit |
1c1d7e |
exit(1);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
writeLatexMakefile();
|
|
Packit |
1c1d7e |
writeMakeBat();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
createSubDirs(d);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void writeDefaultHeaderPart1(FTextStream &t)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// part 1
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// Handle batch mode
|
|
Packit |
1c1d7e |
if (Config_getBool(LATEX_BATCHMODE))
|
|
Packit |
1c1d7e |
t << "\\batchmode\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// Set document class depending on configuration
|
|
Packit |
1c1d7e |
QCString documentClass;
|
|
Packit |
1c1d7e |
if (Config_getBool(COMPACT_LATEX))
|
|
Packit |
1c1d7e |
documentClass = "article";
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
documentClass = "book";
|
|
Packit |
1c1d7e |
t << "\\documentclass[twoside]{" << documentClass << "}\n"
|
|
Packit |
1c1d7e |
"\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// Load required packages
|
|
Packit |
1c1d7e |
t << "% Packages required by doxygen\n"
|
|
Packit |
1c1d7e |
"\\usepackage{fixltx2e}\n" // for \textsubscript
|
|
Packit |
1c1d7e |
"\\usepackage{calc}\n"
|
|
Packit |
1c1d7e |
"\\usepackage{doxygen}\n"
|
|
Packit |
1c1d7e |
"\\usepackage[export]{adjustbox} % also loads graphicx\n";
|
|
Packit |
1c1d7e |
QStrList extraLatexStyle = Config_getList(LATEX_EXTRA_STYLESHEET);
|
|
Packit |
1c1d7e |
for (uint i=0; i
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString fileName(extraLatexStyle.at(i));
|
|
Packit |
1c1d7e |
if (!fileName.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QFileInfo fi(fileName);
|
|
Packit |
1c1d7e |
if (fi.exists())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (checkExtension(fi.fileName().data(), latexStyleExtension))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// strip the extension, it will be added by the usepackage in the tex conversion process
|
|
Packit |
1c1d7e |
t << "\\usepackage{" << stripExtensionGeneral(fi.fileName().data(), latexStyleExtension) << "}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\usepackage{" << fi.fileName().utf8() << "}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "\\usepackage{graphicx}\n"
|
|
Packit |
1c1d7e |
"\\usepackage[utf8]{inputenc}\n"
|
|
Packit |
1c1d7e |
"\\usepackage{makeidx}\n"
|
|
Packit |
1c1d7e |
"\\usepackage{multicol}\n"
|
|
Packit |
1c1d7e |
"\\usepackage{multirow}\n"
|
|
Packit |
1c1d7e |
"\\PassOptionsToPackage{warn}{textcomp}\n"
|
|
Packit |
1c1d7e |
"\\usepackage{textcomp}\n"
|
|
Packit |
1c1d7e |
"\\usepackage[nointegrals]{wasysym}\n"
|
|
Packit |
1c1d7e |
"\\usepackage[table]{xcolor}\n"
|
|
Packit |
1c1d7e |
"\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// Language support
|
|
Packit |
1c1d7e |
QCString languageSupport = theTranslator->latexLanguageSupportCommand();
|
|
Packit |
1c1d7e |
if (!languageSupport.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "% NLS support packages\n"
|
|
Packit |
1c1d7e |
<< languageSupport
|
|
Packit |
1c1d7e |
<< "\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// Define default fonts
|
|
Packit |
1c1d7e |
t << "% Font selection\n"
|
|
Packit |
1c1d7e |
"\\usepackage[T1]{fontenc}\n"
|
|
Packit |
1c1d7e |
"\\usepackage[scaled=.90]{helvet}\n"
|
|
Packit |
1c1d7e |
"\\usepackage{courier}\n"
|
|
Packit |
1c1d7e |
"\\usepackage{amssymb}\n"
|
|
Packit |
1c1d7e |
"\\usepackage{sectsty}\n"
|
|
Packit |
1c1d7e |
"\\renewcommand{\\familydefault}{\\sfdefault}\n"
|
|
Packit |
1c1d7e |
"\\allsectionsfont{%\n"
|
|
Packit |
1c1d7e |
" \\fontseries{bc}\\selectfont%\n"
|
|
Packit |
1c1d7e |
" \\color{darkgray}%\n"
|
|
Packit |
1c1d7e |
"}\n"
|
|
Packit |
1c1d7e |
"\\renewcommand{\\DoxyLabelFont}{%\n"
|
|
Packit |
1c1d7e |
" \\fontseries{bc}\\selectfont%\n"
|
|
Packit |
1c1d7e |
" \\color{darkgray}%\n"
|
|
Packit |
1c1d7e |
"}\n"
|
|
Packit |
1c1d7e |
"\\newcommand{\\+}{\\discretionary{\\mbox{\\scriptsize$\\hookleftarrow$}}{}{}}\n"
|
|
Packit |
1c1d7e |
"\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// Define page & text layout
|
|
Packit |
1c1d7e |
QCString paperName=Config_getEnum(PAPER_TYPE);
|
|
Packit |
1c1d7e |
// "a4wide" package is obsolete (see bug 563698)
|
|
Packit |
1c1d7e |
t << "% Page & text layout\n"
|
|
Packit |
1c1d7e |
"\\usepackage{geometry}\n"
|
|
Packit |
1c1d7e |
"\\geometry{%\n"
|
|
Packit |
1c1d7e |
" " << paperName << "paper,%\n"
|
|
Packit |
1c1d7e |
" top=2.5cm,%\n"
|
|
Packit |
1c1d7e |
" bottom=2.5cm,%\n"
|
|
Packit |
1c1d7e |
" left=2.5cm,%\n"
|
|
Packit |
1c1d7e |
" right=2.5cm%\n"
|
|
Packit |
1c1d7e |
"}\n";
|
|
Packit |
1c1d7e |
// \sloppy is obsolete (see bug 563698)
|
|
Packit |
1c1d7e |
// Allow a bit of overflow to go unnoticed by other means
|
|
Packit |
1c1d7e |
t << "\\tolerance=750\n"
|
|
Packit |
1c1d7e |
"\\hfuzz=15pt\n"
|
|
Packit |
1c1d7e |
"\\hbadness=750\n"
|
|
Packit |
1c1d7e |
"\\setlength{\\emergencystretch}{15pt}\n"
|
|
Packit |
1c1d7e |
"\\setlength{\\parindent}{0cm}\n"
|
|
Packit |
1c1d7e |
"\\setlength{\\parskip}{3ex plus 2ex minus 2ex}\n";
|
|
Packit |
1c1d7e |
// Redefine paragraph/subparagraph environments, using sectsty fonts
|
|
Packit |
1c1d7e |
t << "\\makeatletter\n"
|
|
Packit |
1c1d7e |
"\\renewcommand{\\paragraph}{%\n"
|
|
Packit |
1c1d7e |
" \\@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%\n"
|
|
Packit |
1c1d7e |
" \\normalfont\\normalsize\\bfseries\\SS@parafont%\n"
|
|
Packit |
1c1d7e |
" }%\n"
|
|
Packit |
1c1d7e |
"}\n"
|
|
Packit |
1c1d7e |
"\\renewcommand{\\subparagraph}{%\n"
|
|
Packit |
1c1d7e |
" \\@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%\n"
|
|
Packit |
1c1d7e |
" \\normalfont\\normalsize\\bfseries\\SS@subparafont%\n"
|
|
Packit |
1c1d7e |
" }%\n"
|
|
Packit |
1c1d7e |
"}\n"
|
|
Packit |
1c1d7e |
"\\makeatother\n"
|
|
Packit |
1c1d7e |
"\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// Headers & footers
|
|
Packit |
1c1d7e |
QGString genString;
|
|
Packit |
1c1d7e |
QCString generatedBy;
|
|
Packit |
1c1d7e |
static bool timeStamp = Config_getBool(LATEX_TIMESTAMP);
|
|
Packit |
1c1d7e |
FTextStream tg(&genString);
|
|
Packit |
1c1d7e |
if (timeStamp)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
generatedBy = theTranslator->trGeneratedAt(dateToString(TRUE), Config_getString(PROJECT_NAME));
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
generatedBy = theTranslator->trGeneratedBy();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
filterLatexString(tg, generatedBy, FALSE,FALSE,FALSE);
|
|
Packit |
1c1d7e |
t << "% Headers & footers\n"
|
|
Packit |
1c1d7e |
"\\usepackage{fancyhdr}\n"
|
|
Packit |
1c1d7e |
"\\pagestyle{fancyplain}\n"
|
|
Packit |
1c1d7e |
"\\fancyhead[LE]{\\fancyplain{}{\\bfseries\\thepage}}\n"
|
|
Packit |
1c1d7e |
"\\fancyhead[CE]{\\fancyplain{}{}}\n"
|
|
Packit |
1c1d7e |
"\\fancyhead[RE]{\\fancyplain{}{\\bfseries\\leftmark}}\n"
|
|
Packit |
1c1d7e |
"\\fancyhead[LO]{\\fancyplain{}{\\bfseries\\rightmark}}\n"
|
|
Packit |
1c1d7e |
"\\fancyhead[CO]{\\fancyplain{}{}}\n"
|
|
Packit |
1c1d7e |
"\\fancyhead[RO]{\\fancyplain{}{\\bfseries\\thepage}}\n"
|
|
Packit |
1c1d7e |
"\\fancyfoot[LE]{\\fancyplain{}{}}\n"
|
|
Packit |
1c1d7e |
"\\fancyfoot[CE]{\\fancyplain{}{}}\n"
|
|
Packit |
1c1d7e |
"\\fancyfoot[RE]{\\fancyplain{}{\\bfseries\\scriptsize " << genString << " Doxygen }}\n"
|
|
Packit |
1c1d7e |
"\\fancyfoot[LO]{\\fancyplain{}{\\bfseries\\scriptsize " << genString << " Doxygen }}\n"
|
|
Packit |
1c1d7e |
"\\fancyfoot[CO]{\\fancyplain{}{}}\n"
|
|
Packit |
1c1d7e |
"\\fancyfoot[RO]{\\fancyplain{}{}}\n"
|
|
Packit |
1c1d7e |
"\\renewcommand{\\footrulewidth}{0.4pt}\n";
|
|
Packit |
1c1d7e |
if (!Config_getBool(COMPACT_LATEX))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\renewcommand{\\chaptermark}[1]{%\n"
|
|
Packit |
1c1d7e |
" \\markboth{#1}{}%\n"
|
|
Packit |
1c1d7e |
"}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "\\renewcommand{\\sectionmark}[1]{%\n"
|
|
Packit |
1c1d7e |
" \\markright{\\thesection\\ #1}%\n"
|
|
Packit |
1c1d7e |
"}\n"
|
|
Packit |
1c1d7e |
"\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// ToC, LoF, LoT, bibliography, and index
|
|
Packit |
1c1d7e |
t << "% Indices & bibliography\n"
|
|
Packit |
1c1d7e |
"\\usepackage{natbib}\n"
|
|
Packit |
1c1d7e |
"\\usepackage[titles]{tocloft}\n"
|
|
Packit |
1c1d7e |
"\\setcounter{tocdepth}{3}\n"
|
|
Packit |
1c1d7e |
"\\setcounter{secnumdepth}{5}\n"
|
|
Packit |
1c1d7e |
"\\makeindex\n"
|
|
Packit |
1c1d7e |
"\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
writeExtraLatexPackages(t);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// Hyperlinks
|
|
Packit |
1c1d7e |
bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS);
|
|
Packit |
1c1d7e |
if (pdfHyperlinks)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "% Hyperlinks (required, but should be loaded last)\n"
|
|
Packit |
1c1d7e |
"\\usepackage{ifpdf}\n"
|
|
Packit |
1c1d7e |
"\\ifpdf\n"
|
|
Packit |
1c1d7e |
" \\usepackage[pdftex,pagebackref=true]{hyperref}\n"
|
|
Packit |
1c1d7e |
"\\else\n"
|
|
Packit |
1c1d7e |
" \\usepackage[ps2pdf,pagebackref=true]{hyperref}\n"
|
|
Packit |
1c1d7e |
"\\fi\n"
|
|
Packit |
1c1d7e |
"\\hypersetup{%\n"
|
|
Packit |
1c1d7e |
" colorlinks=true,%\n"
|
|
Packit |
1c1d7e |
" linkcolor=blue,%\n"
|
|
Packit |
1c1d7e |
" citecolor=blue,%\n"
|
|
Packit |
1c1d7e |
" unicode%\n"
|
|
Packit |
1c1d7e |
"}\n"
|
|
Packit |
1c1d7e |
"\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// Custom commands used by the header
|
|
Packit |
1c1d7e |
t << "% Custom commands\n"
|
|
Packit |
1c1d7e |
"\\newcommand{\\clearemptydoublepage}{%\n"
|
|
Packit |
1c1d7e |
" \\newpage{\\pagestyle{empty}\\cleardoublepage}%\n"
|
|
Packit |
1c1d7e |
"}\n"
|
|
Packit |
1c1d7e |
"\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// caption style definition
|
|
Packit |
1c1d7e |
t << "\\usepackage{caption}\n"
|
|
Packit |
1c1d7e |
<< "\\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top}\n\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// End of preamble, now comes the document contents
|
|
Packit |
1c1d7e |
t << "%===== C O N T E N T S =====\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\begin{document}\n";
|
|
Packit |
1c1d7e |
if (theTranslator->idLanguage()=="greek")
|
|
Packit |
1c1d7e |
t << "\\selectlanguage{greek}\n";
|
|
Packit |
1c1d7e |
t << "\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// Front matter
|
|
Packit |
1c1d7e |
t << "% Titlepage & ToC\n";
|
|
Packit |
1c1d7e |
bool usePDFLatex = Config_getBool(USE_PDFLATEX);
|
|
Packit |
1c1d7e |
if (pdfHyperlinks && usePDFLatex)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// To avoid duplicate page anchors due to reuse of same numbers for
|
|
Packit |
1c1d7e |
// the index (be it as roman numbers)
|
|
Packit |
1c1d7e |
t << "\\hypersetup{pageanchor=false,\n"
|
|
Packit |
1c1d7e |
// << " bookmarks=true,\n" // commented out to prevent warning
|
|
Packit |
1c1d7e |
<< " bookmarksnumbered=true,\n"
|
|
Packit |
1c1d7e |
<< " pdfencoding=unicode\n"
|
|
Packit |
1c1d7e |
<< " }\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "\\pagenumbering{alph}\n"
|
|
Packit |
1c1d7e |
"\\begin{titlepage}\n"
|
|
Packit |
1c1d7e |
"\\vspace*{7cm}\n"
|
|
Packit |
1c1d7e |
"\\begin{center}%\n"
|
|
Packit |
1c1d7e |
"{\\Large ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void writeDefaultHeaderPart2(FTextStream &t)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// part 2
|
|
Packit |
1c1d7e |
// Finalize project name
|
|
Packit |
1c1d7e |
t << "}\\\\\n"
|
|
Packit |
1c1d7e |
"\\vspace*{1cm}\n"
|
|
Packit |
1c1d7e |
"{\\large ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void writeDefaultHeaderPart3(FTextStream &t)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// part 3
|
|
Packit |
1c1d7e |
// Finalize project number
|
|
Packit |
1c1d7e |
t << " Doxygen " << versionString << "}\\\\\n";
|
|
Packit |
1c1d7e |
if (Config_getBool(LATEX_TIMESTAMP))
|
|
Packit |
1c1d7e |
t << "\\vspace*{0.5cm}\n"
|
|
Packit |
1c1d7e |
"{\\small " << dateToString(TRUE) << "}\\\\\n";
|
|
Packit |
1c1d7e |
t << "\\end{center}\n"
|
|
Packit |
1c1d7e |
"\\end{titlepage}\n";
|
|
Packit |
1c1d7e |
bool compactLatex = Config_getBool(COMPACT_LATEX);
|
|
Packit |
1c1d7e |
if (!compactLatex)
|
|
Packit |
1c1d7e |
t << "\\clearemptydoublepage\n";
|
|
Packit |
1c1d7e |
t << "\\pagenumbering{roman}\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// ToC
|
|
Packit |
1c1d7e |
t << "\\tableofcontents\n";
|
|
Packit |
1c1d7e |
if (!compactLatex)
|
|
Packit |
1c1d7e |
t << "\\clearemptydoublepage\n";
|
|
Packit |
1c1d7e |
t << "\\pagenumbering{arabic}\n";
|
|
Packit |
1c1d7e |
bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS);
|
|
Packit |
1c1d7e |
bool usePDFLatex = Config_getBool(USE_PDFLATEX);
|
|
Packit |
1c1d7e |
if (pdfHyperlinks && usePDFLatex)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// re-enable anchors again
|
|
Packit |
1c1d7e |
t << "\\hypersetup{pageanchor=true}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "\n"
|
|
Packit |
1c1d7e |
"%--- Begin generated contents ---\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void writeDefaultStyleSheet(FTextStream &t)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << ResourceMgr::instance().getAsString("doxygen.sty");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
static void writeDefaultFooter(FTextStream &t)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "%--- End generated contents ---\n"
|
|
Packit |
1c1d7e |
"\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// Bibliography
|
|
Packit |
1c1d7e |
Doxygen::citeDict->writeLatexBibliography(t);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// Index
|
|
Packit |
1c1d7e |
t << "% Index\n";
|
|
Packit |
1c1d7e |
QCString unit;
|
|
Packit |
1c1d7e |
if (Config_getBool(COMPACT_LATEX))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
unit = "section";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
unit = "chapter";
|
|
Packit |
1c1d7e |
t << "\\backmatter\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "\\newpage\n"
|
|
Packit |
1c1d7e |
"\\phantomsection\n"
|
|
Packit |
1c1d7e |
"\\clearemptydoublepage\n"
|
|
Packit |
1c1d7e |
"\\addcontentsline{toc}{" << unit << "}{" << theTranslator->trRTFGeneralIndex() << "}\n"
|
|
Packit |
1c1d7e |
"\\printindex\n"
|
|
Packit |
1c1d7e |
"\n"
|
|
Packit |
1c1d7e |
"\\end{document}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::writeHeaderFile(QFile &f)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FTextStream t(&f);
|
|
Packit |
1c1d7e |
t << "% Latex header for doxygen " << versionString << endl;
|
|
Packit |
1c1d7e |
writeDefaultHeaderPart1(t);
|
|
Packit |
1c1d7e |
t << "Your title here";
|
|
Packit |
1c1d7e |
writeDefaultHeaderPart2(t);
|
|
Packit |
1c1d7e |
t << "Generated by";
|
|
Packit |
1c1d7e |
writeDefaultHeaderPart3(t);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::writeFooterFile(QFile &f)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FTextStream t(&f);
|
|
Packit |
1c1d7e |
t << "% Latex footer for doxygen " << versionString << endl;
|
|
Packit |
1c1d7e |
writeDefaultFooter(t);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::writeStyleSheetFile(QFile &f)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FTextStream t(&f);
|
|
Packit |
1c1d7e |
t << "% stylesheet for doxygen " << versionString << endl;
|
|
Packit |
1c1d7e |
writeDefaultStyleSheet(t);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startFile(const char *name,const char *,const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
setEncoding(Config_getString(LATEX_OUTPUT_ENCODING));
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
QCString fileName=name;
|
|
Packit |
1c1d7e |
relPath = relativePathToRoot(fileName);
|
|
Packit |
1c1d7e |
if (fileName.right(4)!=".tex" && fileName.right(4)!=".sty") fileName+=".tex";
|
|
Packit |
1c1d7e |
startPlainFile(fileName);
|
|
Packit |
1c1d7e |
m_codeGen.setTextStream(t);
|
|
Packit |
1c1d7e |
m_codeGen.setRelativePath(relPath);
|
|
Packit |
1c1d7e |
m_codeGen.setSourceFileName(stripPath(fileName));
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endFile()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
endPlainFile();
|
|
Packit |
1c1d7e |
m_codeGen.setSourceFileName("");
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void LatexGenerator::writeIndex()
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// startFile("refman.tex");
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startProjectNumber()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\\\[1ex]\\large ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startIndexSection(IndexSections is)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
bool &compactLatex = Config_getBool(COMPACT_LATEX);
|
|
Packit |
1c1d7e |
QCString &latexHeader = Config_getString(LATEX_HEADER);
|
|
Packit |
1c1d7e |
switch (is)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case isTitlePageStart:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (latexHeader.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
writeDefaultHeaderPart1(t);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString header = fileToString(latexHeader);
|
|
Packit |
1c1d7e |
t << substituteKeywords(header,"",
|
|
Packit |
1c1d7e |
convertToLaTeX(Config_getString(PROJECT_NAME)),
|
|
Packit |
1c1d7e |
convertToLaTeX(Config_getString(PROJECT_NUMBER)),
|
|
Packit |
1c1d7e |
convertToLaTeX(Config_getString(PROJECT_BRIEF)));
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isTitlePageAuthor:
|
|
Packit |
1c1d7e |
if (latexHeader.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
writeDefaultHeaderPart2(t);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isMainPage:
|
|
Packit |
1c1d7e |
if (compactLatex) t << "\\section"; else t << "\\chapter";
|
|
Packit |
1c1d7e |
t << "{"; //Introduction}\n"
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
//case isPackageIndex:
|
|
Packit |
1c1d7e |
// if (compactLatex) t << "\\section"; else t << "\\chapter";
|
|
Packit |
1c1d7e |
// t << "{"; //Package Index}\n"
|
|
Packit |
1c1d7e |
// break;
|
|
Packit |
1c1d7e |
case isModuleIndex:
|
|
Packit |
1c1d7e |
if (compactLatex) t << "\\section"; else t << "\\chapter";
|
|
Packit |
1c1d7e |
t << "{"; //Module Index}\n"
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isDirIndex:
|
|
Packit |
1c1d7e |
if (compactLatex) t << "\\section"; else t << "\\chapter";
|
|
Packit |
1c1d7e |
t << "{"; //Directory Index}\n"
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isNamespaceIndex:
|
|
Packit |
1c1d7e |
if (compactLatex) t << "\\section"; else t << "\\chapter";
|
|
Packit |
1c1d7e |
t << "{"; //Namespace Index}\"
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isClassHierarchyIndex:
|
|
Packit |
1c1d7e |
if (compactLatex) t << "\\section"; else t << "\\chapter";
|
|
Packit |
1c1d7e |
t << "{"; //Hierarchical Index}\n"
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isCompoundIndex:
|
|
Packit |
1c1d7e |
if (compactLatex) t << "\\section"; else t << "\\chapter";
|
|
Packit |
1c1d7e |
t << "{"; //Annotated Compound Index}\n"
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isFileIndex:
|
|
Packit |
1c1d7e |
if (compactLatex) t << "\\section"; else t << "\\chapter";
|
|
Packit |
1c1d7e |
t << "{"; //Annotated File Index}\n"
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isPageIndex:
|
|
Packit |
1c1d7e |
if (compactLatex) t << "\\section"; else t << "\\chapter";
|
|
Packit |
1c1d7e |
t << "{"; //Annotated Page Index}\n"
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isModuleDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
GroupSDict::Iterator gli(*Doxygen::groupSDict);
|
|
Packit |
1c1d7e |
GroupDef *gd;
|
|
Packit |
1c1d7e |
bool found=FALSE;
|
|
Packit |
1c1d7e |
for (gli.toFirst();(gd=gli.current()) && !found;++gli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!gd->isReference())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (compactLatex) t << "\\section"; else t << "\\chapter";
|
|
Packit |
1c1d7e |
t << "{"; //Module Documentation}\n";
|
|
Packit |
1c1d7e |
found=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isDirDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
SDict<DirDef>::Iterator dli(*Doxygen::directories);
|
|
Packit |
1c1d7e |
DirDef *dd;
|
|
Packit |
1c1d7e |
bool found=FALSE;
|
|
Packit |
1c1d7e |
for (dli.toFirst();(dd=dli.current()) && !found;++dli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (dd->isLinkableInProject())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (compactLatex) t << "\\section"; else t << "\\chapter";
|
|
Packit |
1c1d7e |
t << "{"; //Module Documentation}\n";
|
|
Packit |
1c1d7e |
found=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isNamespaceDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict);
|
|
Packit |
1c1d7e |
NamespaceDef *nd;
|
|
Packit |
1c1d7e |
bool found=FALSE;
|
|
Packit |
1c1d7e |
for (nli.toFirst();(nd=nli.current()) && !found;++nli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (nd->isLinkableInProject())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (compactLatex) t << "\\section"; else t << "\\chapter";
|
|
Packit |
1c1d7e |
t << "{"; // Namespace Documentation}\n":
|
|
Packit |
1c1d7e |
found=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isClassDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ClassSDict::Iterator cli(*Doxygen::classSDict);
|
|
Packit |
1c1d7e |
ClassDef *cd=0;
|
|
Packit |
1c1d7e |
bool found=FALSE;
|
|
Packit |
1c1d7e |
for (cli.toFirst();(cd=cli.current()) && !found;++cli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (cd->isLinkableInProject() &&
|
|
Packit |
1c1d7e |
cd->templateMaster()==0 &&
|
|
Packit |
1c1d7e |
!cd->isEmbeddedInOuterScope()
|
|
Packit |
1c1d7e |
)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (compactLatex) t << "\\section"; else t << "\\chapter";
|
|
Packit |
1c1d7e |
t << "{"; //Compound Documentation}\n";
|
|
Packit |
1c1d7e |
found=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isFileDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
bool isFirst=TRUE;
|
|
Packit |
1c1d7e |
FileNameListIterator fnli(*Doxygen::inputNameList);
|
|
Packit |
1c1d7e |
FileName *fn;
|
|
Packit |
1c1d7e |
for (fnli.toFirst();(fn=fnli.current());++fnli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FileNameIterator fni(*fn);
|
|
Packit |
1c1d7e |
FileDef *fd;
|
|
Packit |
1c1d7e |
for (;(fd=fni.current());++fni)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (fd->isLinkableInProject())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (isFirst)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (compactLatex) t << "\\section"; else t << "\\chapter";
|
|
Packit |
1c1d7e |
t << "{"; //File Documentation}\n";
|
|
Packit |
1c1d7e |
isFirst=FALSE;
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isExampleDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (compactLatex) t << "\\section"; else t << "\\chapter";
|
|
Packit |
1c1d7e |
t << "{"; //Example Documentation}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isPageDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (compactLatex) t << "\\section"; else t << "\\chapter";
|
|
Packit |
1c1d7e |
t << "{"; //Page Documentation}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isPageDocumentation2:
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isEndIndex:
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endIndexSection(IndexSections is)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//static bool compactLatex = Config_getBool(COMPACT_LATEX);
|
|
Packit |
1c1d7e |
static bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
|
|
Packit |
1c1d7e |
static QCString latexHeader = Config_getString(LATEX_HEADER);
|
|
Packit |
1c1d7e |
static QCString latexFooter = Config_getString(LATEX_FOOTER);
|
|
Packit |
1c1d7e |
switch (is)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case isTitlePageStart:
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isTitlePageAuthor:
|
|
Packit |
1c1d7e |
if (latexHeader.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
writeDefaultHeaderPart3(t);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isMainPage:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//QCString indexName=Config_getBool(GENERATE_TREEVIEW)?"main":"index";
|
|
Packit |
1c1d7e |
QCString indexName="index";
|
|
Packit |
1c1d7e |
t << "}\n\\label{index}";
|
|
Packit |
1c1d7e |
if (Config_getBool(PDF_HYPERLINKS)) t << "\\hypertarget{index}{}";
|
|
Packit |
1c1d7e |
t << "\\input{" << indexName << "}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isModuleIndex:
|
|
Packit |
1c1d7e |
t << "}\n\\input{modules}\n";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isDirIndex:
|
|
Packit |
1c1d7e |
t << "}\n\\input{dirs}\n";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isNamespaceIndex:
|
|
Packit |
1c1d7e |
t << "}\n\\input{namespaces}\n";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isClassHierarchyIndex:
|
|
Packit |
1c1d7e |
t << "}\n\\input{hierarchy}\n";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isCompoundIndex:
|
|
Packit |
1c1d7e |
t << "}\n\\input{annotated}\n";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isFileIndex:
|
|
Packit |
1c1d7e |
t << "}\n\\input{files}\n";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isPageIndex:
|
|
Packit |
1c1d7e |
t << "}\n\\input{pages}\n";
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isModuleDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
GroupSDict::Iterator gli(*Doxygen::groupSDict);
|
|
Packit |
1c1d7e |
GroupDef *gd;
|
|
Packit |
1c1d7e |
bool found=FALSE;
|
|
Packit |
1c1d7e |
for (gli.toFirst();(gd=gli.current()) && !found;++gli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!gd->isReference())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}\n\\input{" << gd->getOutputFileBase() << "}\n";
|
|
Packit |
1c1d7e |
found=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
for (;(gd=gli.current());++gli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!gd->isReference())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//if (compactLatex) t << "\\input"; else t << "\\include";
|
|
Packit |
1c1d7e |
t << "\\include";
|
|
Packit |
1c1d7e |
t << "{" << gd->getOutputFileBase() << "}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isDirDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
SDict<DirDef>::Iterator dli(*Doxygen::directories);
|
|
Packit |
1c1d7e |
DirDef *dd;
|
|
Packit |
1c1d7e |
bool found=FALSE;
|
|
Packit |
1c1d7e |
for (dli.toFirst();(dd=dli.current()) && !found;++dli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (dd->isLinkableInProject())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}\n\\input{" << dd->getOutputFileBase() << "}\n";
|
|
Packit |
1c1d7e |
found=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
for (;(dd=dli.current());++dli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (dd->isLinkableInProject())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//if (compactLatex) t << "\\input"; else t << "\\include";
|
|
Packit |
1c1d7e |
t << "\\input";
|
|
Packit |
1c1d7e |
t << "{" << dd->getOutputFileBase() << "}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isNamespaceDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
NamespaceSDict::Iterator nli(*Doxygen::namespaceSDict);
|
|
Packit |
1c1d7e |
NamespaceDef *nd;
|
|
Packit |
1c1d7e |
bool found=FALSE;
|
|
Packit |
1c1d7e |
for (nli.toFirst();(nd=nli.current()) && !found;++nli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (nd->isLinkableInProject())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}\n\\input{" << nd->getOutputFileBase() << "}\n";
|
|
Packit |
1c1d7e |
found=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
while ((nd=nli.current()))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (nd->isLinkableInProject())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//if (compactLatex) t << "\\input"; else t << "\\include";
|
|
Packit |
1c1d7e |
t << "\\input";
|
|
Packit |
1c1d7e |
t << "{" << nd->getOutputFileBase() << "}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
++nli;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isClassDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
ClassSDict::Iterator cli(*Doxygen::classSDict);
|
|
Packit |
1c1d7e |
ClassDef *cd=0;
|
|
Packit |
1c1d7e |
bool found=FALSE;
|
|
Packit |
1c1d7e |
for (cli.toFirst();(cd=cli.current()) && !found;++cli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (cd->isLinkableInProject() &&
|
|
Packit |
1c1d7e |
cd->templateMaster()==0 &&
|
|
Packit |
1c1d7e |
!cd->isEmbeddedInOuterScope()
|
|
Packit |
1c1d7e |
)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}\n\\input{" << cd->getOutputFileBase() << "}\n";
|
|
Packit |
1c1d7e |
found=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
for (;(cd=cli.current());++cli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (cd->isLinkableInProject() &&
|
|
Packit |
1c1d7e |
cd->templateMaster()==0 &&
|
|
Packit |
1c1d7e |
!cd->isEmbeddedInOuterScope()
|
|
Packit |
1c1d7e |
)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//if (compactLatex) t << "\\input"; else t << "\\include";
|
|
Packit |
1c1d7e |
t << "\\input";
|
|
Packit |
1c1d7e |
t << "{" << cd->getOutputFileBase() << "}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isFileDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
bool isFirst=TRUE;
|
|
Packit |
1c1d7e |
FileNameListIterator fnli(*Doxygen::inputNameList);
|
|
Packit |
1c1d7e |
FileName *fn;
|
|
Packit |
1c1d7e |
for (fnli.toFirst();(fn=fnli.current());++fnli)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FileNameIterator fni(*fn);
|
|
Packit |
1c1d7e |
FileDef *fd;
|
|
Packit |
1c1d7e |
for (;(fd=fni.current());++fni)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (fd->isLinkableInProject())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (isFirst)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}\n\\input{" << fd->getOutputFileBase() << "}\n";
|
|
Packit |
1c1d7e |
if (sourceBrowser && m_prettyCode && fd->generateSourceFile())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//t << "\\include{" << fd->getSourceFileBase() << "}\n";
|
|
Packit |
1c1d7e |
t << "\\input{" << fd->getSourceFileBase() << "}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
isFirst=FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//if (compactLatex) t << "\\input" ; else t << "\\include";
|
|
Packit |
1c1d7e |
t << "\\input" ;
|
|
Packit |
1c1d7e |
t << "{" << fd->getOutputFileBase() << "}\n";
|
|
Packit |
1c1d7e |
if (sourceBrowser && m_prettyCode && fd->generateSourceFile())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//t << "\\include{" << fd->getSourceFileBase() << "}\n";
|
|
Packit |
1c1d7e |
t << "\\input{" << fd->getSourceFileBase() << "}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isExampleDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}\n";
|
|
Packit |
1c1d7e |
PageSDict::Iterator pdi(*Doxygen::exampleSDict);
|
|
Packit |
1c1d7e |
PageDef *pd=pdi.toFirst();
|
|
Packit |
1c1d7e |
if (pd)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\input{" << pd->getOutputFileBase() << "}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
for (++pdi;(pd=pdi.current());++pdi)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//if (compactLatex) t << "\\input" ; else t << "\\include";
|
|
Packit |
1c1d7e |
t << "\\input";
|
|
Packit |
1c1d7e |
t << "{" << pd->getOutputFileBase() << "}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isPageDocumentation:
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}\n";
|
|
Packit |
1c1d7e |
#if 0
|
|
Packit |
1c1d7e |
PageSDict::Iterator pdi(*Doxygen::pageSDict);
|
|
Packit |
1c1d7e |
PageDef *pd=pdi.toFirst();
|
|
Packit |
1c1d7e |
bool first=TRUE;
|
|
Packit |
1c1d7e |
for (pdi.toFirst();(pd=pdi.current());++pdi)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!pd->getGroupDef() && !pd->isReference())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (compactLatex) t << "\\section"; else t << "\\chapter";
|
|
Packit |
1c1d7e |
t << "{" << pd->title();
|
|
Packit |
1c1d7e |
t << "}\n";
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (compactLatex || first) t << "\\input" ; else t << "\\include";
|
|
Packit |
1c1d7e |
t << "{" << pd->getOutputFileBase() << "}\n";
|
|
Packit |
1c1d7e |
first=FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isPageDocumentation2:
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
case isEndIndex:
|
|
Packit |
1c1d7e |
if (latexFooter.isEmpty())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
writeDefaultFooter(t);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QCString footer = fileToString(latexFooter);
|
|
Packit |
1c1d7e |
t << substituteKeywords(footer,"",
|
|
Packit |
1c1d7e |
convertToLaTeX(Config_getString(PROJECT_NAME)),
|
|
Packit |
1c1d7e |
convertToLaTeX(Config_getString(PROJECT_NUMBER)),
|
|
Packit |
1c1d7e |
convertToLaTeX(Config_getString(PROJECT_BRIEF)));
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::writePageLink(const char *name, bool /*first*/)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//bool &compactLatex = Config_getBool(COMPACT_LATEX);
|
|
Packit |
1c1d7e |
// next is remove for bug615957
|
|
Packit |
1c1d7e |
//if (compactLatex || first) t << "\\input" ; else t << "\\include";
|
|
Packit |
1c1d7e |
t << "\\input" ;
|
|
Packit |
1c1d7e |
t << "{" << name << "}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::writeStyleInfo(int part)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (part > 0)
|
|
Packit |
1c1d7e |
return;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
startPlainFile("doxygen.sty");
|
|
Packit |
1c1d7e |
writeDefaultStyleSheet(t);
|
|
Packit |
1c1d7e |
endPlainFile();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::newParagraph()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << endl << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startParagraph(const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << endl << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endParagraph()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << endl << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::writeString(const char *text)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << text;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startIndexItem(const char *ref,const char *fn)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\item ";
|
|
Packit |
1c1d7e |
if (!ref && fn)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\contentsline{section}{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endIndexItem(const char *ref,const char *fn)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!ref && fn)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}{\\pageref{" << stripPath(fn) << "}}{}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void LatexGenerator::writeIndexFileItem(const char *,const char *text)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// t << "\\item\\contentsline{section}{";
|
|
Packit |
1c1d7e |
// docify(text);
|
|
Packit |
1c1d7e |
// t << "}{\\pageref{" << stripPath(text) << "}}" << endl;
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startHtmlLink(const char *url)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (Config_getBool(PDF_HYPERLINKS))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\href{";
|
|
Packit |
1c1d7e |
t << url;
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "{\\tt ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endHtmlLink()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void LatexGenerator::writeMailLink(const char *url)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// if (Config_getBool(PDF_HYPERLINKS))
|
|
Packit |
1c1d7e |
// {
|
|
Packit |
1c1d7e |
// t << "\\href{mailto:";
|
|
Packit |
1c1d7e |
// t << url;
|
|
Packit |
1c1d7e |
// t << "}";
|
|
Packit |
1c1d7e |
// }
|
|
Packit |
1c1d7e |
// t << "{\\tt ";
|
|
Packit |
1c1d7e |
// docify(url);
|
|
Packit |
1c1d7e |
// t << "}";
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::writeStartAnnoItem(const char *,const char *,
|
|
Packit |
1c1d7e |
const char *path,const char *name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\item\\contentsline{section}{\\bf ";
|
|
Packit |
1c1d7e |
if (path) docify(path);
|
|
Packit |
1c1d7e |
docify(name);
|
|
Packit |
1c1d7e |
t << "} ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::writeEndAnnoItem(const char *name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}{\\pageref{" << stripPath(name) << "}}{}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startIndexKey()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\item\\contentsline{section}{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endIndexKey()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startIndexValue(bool hasBrief)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
if (hasBrief) t << "\\\\*";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endIndexValue(const char *name,bool /*hasBrief*/)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//if (hasBrief) t << ")";
|
|
Packit |
1c1d7e |
t << "}{\\pageref{" << stripPath(name) << "}}{}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void LatexGenerator::writeClassLink(const char *,const char *,
|
|
Packit |
1c1d7e |
// const char *,const char *name)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// t << "{\\bf ";
|
|
Packit |
1c1d7e |
// docify(name);
|
|
Packit |
1c1d7e |
// t << "}";
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startTextLink(const char *f,const char *anchor)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS);
|
|
Packit |
1c1d7e |
if (!disableLinks && pdfHyperlinks)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\mbox{\\hyperlink{";
|
|
Packit |
1c1d7e |
if (f) t << stripPath(f);
|
|
Packit |
1c1d7e |
if (anchor) t << "_" << anchor;
|
|
Packit |
1c1d7e |
t << "}{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\textbf{ ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endTextLink()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS);
|
|
Packit |
1c1d7e |
if (!disableLinks && pdfHyperlinks)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::writeObjectLink(const char *ref, const char *f,
|
|
Packit |
1c1d7e |
const char *anchor, const char *text)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS);
|
|
Packit |
1c1d7e |
if (!disableLinks && !ref && pdfHyperlinks)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\mbox{\\hyperlink{";
|
|
Packit |
1c1d7e |
if (f) t << stripPath(f);
|
|
Packit |
1c1d7e |
if (f && anchor) t << "_";
|
|
Packit |
1c1d7e |
if (anchor) t << anchor;
|
|
Packit |
1c1d7e |
t << "}{";
|
|
Packit |
1c1d7e |
docify(text);
|
|
Packit |
1c1d7e |
t << "}}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\textbf{ ";
|
|
Packit |
1c1d7e |
docify(text);
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startPageRef()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " \\doxyref{}{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endPageRef(const char *clname, const char *anchor)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}{";
|
|
Packit |
1c1d7e |
if (clname) t << clname;
|
|
Packit |
1c1d7e |
if (anchor) t << "_" << anchor;
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startTitleHead(const char *fileName)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS);
|
|
Packit |
1c1d7e |
static bool usePDFLatex = Config_getBool(USE_PDFLATEX);
|
|
Packit |
1c1d7e |
if (usePDFLatex && pdfHyperlinks && fileName)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\hypertarget{" << stripPath(fileName) << "}{}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (Config_getBool(COMPACT_LATEX))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\subsection{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\section{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endTitleHead(const char *fileName,const char *name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
if (name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\label{" << stripPath(fileName) << "}\\index{";
|
|
Packit |
1c1d7e |
t << latexEscapeLabelName(name,insideTabbing);
|
|
Packit |
1c1d7e |
t << "@{";
|
|
Packit |
1c1d7e |
t << latexEscapeIndexChars(name,insideTabbing);
|
|
Packit |
1c1d7e |
t << "}}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startTitle()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (Config_getBool(COMPACT_LATEX))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\subsection{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\section{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startGroupHeader(int extraIndentLevel)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (Config_getBool(COMPACT_LATEX))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
extraIndentLevel++;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
if (extraIndentLevel==3)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\subparagraph*{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (extraIndentLevel==2)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\paragraph{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else if (extraIndentLevel==1)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\subsubsection{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else // extraIndentLevel==0
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\subsection{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
disableLinks=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endGroupHeader(int)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
disableLinks=FALSE;
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startMemberHeader(const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (Config_getBool(COMPACT_LATEX))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\subsubsection*{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\subsection*{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
disableLinks=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endMemberHeader()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
disableLinks=FALSE;
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startMemberDoc(const char *clname,
|
|
Packit |
1c1d7e |
const char *memname,
|
|
Packit |
1c1d7e |
const char *,
|
|
Packit |
1c1d7e |
const char *title,
|
|
Packit |
1c1d7e |
int memCount,
|
|
Packit |
1c1d7e |
int memTotal,
|
|
Packit |
1c1d7e |
bool showInline)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (memname && memname[0]!='@')
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\index{";
|
|
Packit |
1c1d7e |
if (clname)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << latexEscapeLabelName(clname,insideTabbing);
|
|
Packit |
1c1d7e |
t << "@{";
|
|
Packit |
1c1d7e |
t << latexEscapeIndexChars(clname,insideTabbing);
|
|
Packit |
1c1d7e |
t << "}!";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << latexEscapeLabelName(memname,insideTabbing);
|
|
Packit |
1c1d7e |
t << "@{";
|
|
Packit |
1c1d7e |
t << latexEscapeIndexChars(memname,insideTabbing);
|
|
Packit |
1c1d7e |
t << "}}" << endl;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "\\index{";
|
|
Packit |
1c1d7e |
t << latexEscapeLabelName(memname,insideTabbing);
|
|
Packit |
1c1d7e |
t << "@{";
|
|
Packit |
1c1d7e |
t << latexEscapeIndexChars(memname,insideTabbing);
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
if (clname)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "!";
|
|
Packit |
1c1d7e |
t << latexEscapeLabelName(clname,insideTabbing);
|
|
Packit |
1c1d7e |
t << "@{";
|
|
Packit |
1c1d7e |
t << latexEscapeIndexChars(clname,insideTabbing);
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
static const char *levelLab[] = { "subsubsection","paragraph","subparagraph", "subparagraph" };
|
|
Packit |
1c1d7e |
static bool compactLatex = Config_getBool(COMPACT_LATEX);
|
|
Packit |
1c1d7e |
static bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS);
|
|
Packit |
1c1d7e |
int level=0;
|
|
Packit |
1c1d7e |
if (showInline) level+=2;
|
|
Packit |
1c1d7e |
if (compactLatex) level++;
|
|
Packit |
1c1d7e |
t << "\\" << levelLab[level];
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
t << "{";
|
|
Packit |
1c1d7e |
if (pdfHyperlinks)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\texorpdfstring{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << latexEscapeIndexChars(title,insideTabbing);
|
|
Packit |
1c1d7e |
if (pdfHyperlinks)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}{" << latexEscapePDFString(title) << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
if (memTotal>1)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\hspace{0.1cm}{\\footnotesize\\ttfamily [" << memCount << "/" << memTotal << "]}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
t << "\n{\\footnotesize\\ttfamily ";
|
|
Packit |
1c1d7e |
//disableLinks=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endMemberDoc(bool)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
disableLinks=FALSE;
|
|
Packit |
1c1d7e |
t << "}\n\n";
|
|
Packit |
1c1d7e |
//if (Config_getBool(COMPACT_LATEX)) t << "\\hfill";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startDoxyAnchor(const char *fName,const char *,
|
|
Packit |
1c1d7e |
const char *anchor, const char *,
|
|
Packit |
1c1d7e |
const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS);
|
|
Packit |
1c1d7e |
static bool usePDFLatex = Config_getBool(USE_PDFLATEX);
|
|
Packit |
1c1d7e |
t << "\\mbox{";
|
|
Packit |
1c1d7e |
if (usePDFLatex && pdfHyperlinks)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\Hypertarget{";
|
|
Packit |
1c1d7e |
if (fName) t << stripPath(fName);
|
|
Packit |
1c1d7e |
if (anchor) t << "_" << anchor;
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "\\label{";
|
|
Packit |
1c1d7e |
if (fName) t << stripPath(fName);
|
|
Packit |
1c1d7e |
if (anchor) t << "_" << anchor;
|
|
Packit |
1c1d7e |
t << "}} " << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endDoxyAnchor(const char *fName,const char *anchor)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::writeAnchor(const char *fName,const char *name)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//printf("LatexGenerator::writeAnchor(%s,%s)\n",fName,name);
|
|
Packit |
1c1d7e |
t << "\\label{" << stripPath(name) << "}" << endl;
|
|
Packit |
1c1d7e |
static bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS);
|
|
Packit |
1c1d7e |
static bool usePDFLatex = Config_getBool(USE_PDFLATEX);
|
|
Packit |
1c1d7e |
if (usePDFLatex && pdfHyperlinks)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (fName)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\Hypertarget{" << stripPath(fName) << "_" << stripPath(name) << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\Hypertarget{" << stripPath(name) << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
//void LatexGenerator::writeLatexLabel(const char *clName,const char *anchor)
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// writeDoxyAnchor(0,clName,anchor,0);
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::addIndexItem(const char *s1,const char *s2)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (s1)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\index{";
|
|
Packit |
1c1d7e |
t << latexEscapeLabelName(s1,insideTabbing);
|
|
Packit |
1c1d7e |
t << "@{";
|
|
Packit |
1c1d7e |
t << latexEscapeIndexChars(s1,insideTabbing);
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
if (s2)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "!";
|
|
Packit |
1c1d7e |
t << latexEscapeLabelName(s2,insideTabbing);
|
|
Packit |
1c1d7e |
t << "@{";
|
|
Packit |
1c1d7e |
t << latexEscapeIndexChars(s2,insideTabbing);
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startSection(const char *lab,const char *,SectionInfo::SectionType type)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
static bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS);
|
|
Packit |
1c1d7e |
static bool usePDFLatex = Config_getBool(USE_PDFLATEX);
|
|
Packit |
1c1d7e |
if (usePDFLatex && pdfHyperlinks)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\hypertarget{" << stripPath(lab) << "}{}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "\\";
|
|
Packit |
1c1d7e |
if (Config_getBool(COMPACT_LATEX))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
switch(type)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case SectionInfo::Page: t << "subsection"; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Section: t << "subsubsection"; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Subsection: t << "paragraph"; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Subsubsection: t << "subparagraph"; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Paragraph: t << "subparagraph"; break;
|
|
Packit |
1c1d7e |
default: ASSERT(0); break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
switch(type)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
case SectionInfo::Page: t << "section"; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Section: t << "subsection"; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Subsection: t << "subsubsection"; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Subsubsection: t << "paragraph"; break;
|
|
Packit |
1c1d7e |
case SectionInfo::Paragraph: t << "subparagraph"; break;
|
|
Packit |
1c1d7e |
default: ASSERT(0); break;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endSection(const char *lab,SectionInfo::SectionType)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}\\label{" << lab << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::docify(const char *str)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
filterLatexString(t,str,insideTabbing,FALSE,FALSE);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::writeChar(char c)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
char cs[2];
|
|
Packit |
1c1d7e |
cs[0]=c;
|
|
Packit |
1c1d7e |
cs[1]=0;
|
|
Packit |
1c1d7e |
docify(cs);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startClassDiagram()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//if (Config_getBool(COMPACT_LATEX)) t << "\\subsubsection"; else t << "\\subsection";
|
|
Packit |
1c1d7e |
//t << "{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endClassDiagram(const ClassDiagram &d,
|
|
Packit |
1c1d7e |
const char *fileName,const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
d.writeFigure(t,dir,fileName);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startAnonTypeScope(int indent)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (indent==0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\begin{tabbing}" << endl;
|
|
Packit |
1c1d7e |
t << "xx\\=xx\\=xx\\=xx\\=xx\\=xx\\=xx\\=xx\\=xx\\=\\kill" << endl;
|
|
Packit |
1c1d7e |
insideTabbing=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_indent=indent;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endAnonTypeScope(int indent)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (indent==0)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << endl << "\\end{tabbing}";
|
|
Packit |
1c1d7e |
insideTabbing=FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
m_indent=indent;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startMemberTemplateParams()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (templateMemberItem)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{\\footnotesize ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endMemberTemplateParams(const char *,const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (templateMemberItem)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}\\\\";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startMemberItem(const char *,int annoType,const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//printf("LatexGenerator::startMemberItem(%d)\n",annType);
|
|
Packit |
1c1d7e |
if (!insideTabbing)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\item " << endl;
|
|
Packit |
1c1d7e |
templateMemberItem = (annoType == 3);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endMemberItem()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (insideTabbing)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\\\";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
templateMemberItem = FALSE;
|
|
Packit |
1c1d7e |
t << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startMemberDescription(const char *,const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!insideTabbing)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\begin{DoxyCompactList}\\small\\item\\em ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
for (int i=0;i<m_indent+2;i++) t << "\\>";
|
|
Packit |
1c1d7e |
t << "{\\em ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endMemberDescription()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!insideTabbing)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//t << "\\item\\end{DoxyCompactList}";
|
|
Packit |
1c1d7e |
t << "\\end{DoxyCompactList}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}\\\\\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::writeNonBreakableSpace(int)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//printf("writeNonBreakbleSpace()\n");
|
|
Packit |
1c1d7e |
if (insideTabbing)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\>";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "~";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// ----------------------------------------------
|
|
Packit |
1c1d7e |
// nesting of functions below:
|
|
Packit |
1c1d7e |
// startDescTable()
|
|
Packit |
1c1d7e |
// - startDescTableRow()
|
|
Packit |
1c1d7e |
// - startDescTableTitle()
|
|
Packit |
1c1d7e |
// - endDescTabelTitle()
|
|
Packit |
1c1d7e |
// - startDescTableData()
|
|
Packit |
1c1d7e |
// - endDescTableData()
|
|
Packit |
1c1d7e |
// - endDescTableRow()
|
|
Packit |
1c1d7e |
// - startDescTableRow()
|
|
Packit |
1c1d7e |
// - ...
|
|
Packit |
1c1d7e |
// - endDescTableRow()
|
|
Packit |
1c1d7e |
// endDescTable()
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startDescTable(const char *title)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\begin{DoxyEnumFields}{" << title << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endDescTable()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\end{DoxyEnumFields}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startDescTableRow()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// this is needed to prevent the \hypertarget, \label, and \index commands from messing up
|
|
Packit |
1c1d7e |
// the row height (based on http://tex.stackexchange.com/a/186102)
|
|
Packit |
1c1d7e |
t << "\\raisebox{\\heightof{T}}[0pt][0pt]{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endDescTableRow()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startDescTableTitle()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endDescTableTitle()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startDescTableData()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "&";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endDescTableData()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\\\\n\\hline\n" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::lastIndexPage()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startMemberList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (!insideTabbing)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\begin{DoxyCompactItemize}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endMemberList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
//printf("LatexGenerator::endMemberList(%d)\n",insideTabbing);
|
|
Packit |
1c1d7e |
if (!insideTabbing)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\end{DoxyCompactItemize}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startMemberGroupHeader(bool hasHeader)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (hasHeader) t << "\\begin{Indent}";
|
|
Packit |
1c1d7e |
t << "\\textbf{ ";
|
|
Packit |
1c1d7e |
// changed back to rev 756 due to bug 660501
|
|
Packit |
1c1d7e |
//if (Config_getBool(COMPACT_LATEX))
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// t << "\\subparagraph*{";
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
//else
|
|
Packit |
1c1d7e |
//{
|
|
Packit |
1c1d7e |
// t << "\\paragraph*{";
|
|
Packit |
1c1d7e |
//}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endMemberGroupHeader()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
// changed back to rev 756 due to bug 660501
|
|
Packit |
1c1d7e |
t << "}\\par" << endl;
|
|
Packit |
1c1d7e |
//t << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startMemberGroupDocs()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{\\em ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endMemberGroupDocs()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startMemberGroup()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endMemberGroup(bool hasHeader)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (hasHeader)t << "\\end{Indent}";
|
|
Packit |
1c1d7e |
t << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startDotGraph()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
newParagraph();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endDotGraph(const DotClassGraph &g)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString(LATEX_OUTPUT),fileName,relPath);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startInclDepGraph()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endInclDepGraph(const DotInclDepGraph &g)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString(LATEX_OUTPUT),fileName,relPath);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startGroupCollaboration()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endGroupCollaboration(const DotGroupCollaboration &g)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString(LATEX_OUTPUT),fileName,relPath);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startCallGraph()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endCallGraph(const DotCallGraph &g)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString(LATEX_OUTPUT),fileName,relPath);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startDirDepGraph()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endDirDepGraph(const DotDirDeps &g)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString(LATEX_OUTPUT),fileName,relPath);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startDescription()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\begin{description}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endDescription()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\end{description}" << endl;
|
|
Packit |
1c1d7e |
firstDescItem=TRUE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startDescItem()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
firstDescItem=TRUE;
|
|
Packit |
1c1d7e |
t << "\\item[";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endDescItem()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (firstDescItem)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "]" << endl;
|
|
Packit |
1c1d7e |
firstDescItem=FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
lineBreak();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startSimpleSect(SectionTypes,const char *file,
|
|
Packit |
1c1d7e |
const char *anchor,const char *title)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\begin{Desc}\n\\item[";
|
|
Packit |
1c1d7e |
if (file)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
writeObjectLink(0,file,anchor,title);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
docify(title);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "]";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endSimpleSect()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\end{Desc}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startParamList(ParamListTypes,const char *title)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\begin{Desc}\n\\item[";
|
|
Packit |
1c1d7e |
docify(title);
|
|
Packit |
1c1d7e |
t << "]";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endParamList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\end{Desc}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startParameterList(bool openBracket)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
/* start of ParameterType ParameterName list */
|
|
Packit |
1c1d7e |
if (openBracket) t << "(";
|
|
Packit |
1c1d7e |
t << "\\begin{DoxyParamCaption}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endParameterList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startParameterType(bool first,const char *key)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\item[{";
|
|
Packit |
1c1d7e |
if (!first && key) t << key;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endParameterType()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}]";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startParameterName(bool /*oneArgOnly*/)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endParameterName(bool last,bool /*emptyList*/,bool closeBracket)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << " }";
|
|
Packit |
1c1d7e |
if (last)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\end{DoxyParamCaption}";
|
|
Packit |
1c1d7e |
if (closeBracket) t << ")";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::exceptionEntry(const char* prefix,bool closeBracket)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (prefix)
|
|
Packit |
1c1d7e |
t << " " << prefix;
|
|
Packit |
1c1d7e |
else if (closeBracket)
|
|
Packit |
1c1d7e |
t << ")";
|
|
Packit |
1c1d7e |
t << " ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::writeDoc(DocNode *n,Definition *ctx,MemberDef *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
LatexDocVisitor *visitor =
|
|
Packit |
1c1d7e |
new LatexDocVisitor(t,*this,ctx?ctx->getDefFileExtension():QCString(""),insideTabbing);
|
|
Packit |
1c1d7e |
n->accept(visitor);
|
|
Packit |
1c1d7e |
delete visitor;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startConstraintList(const char *header)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\begin{Desc}\n\\item[";
|
|
Packit |
1c1d7e |
docify(header);
|
|
Packit |
1c1d7e |
t << "]";
|
|
Packit |
1c1d7e |
t << "\\begin{description}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startConstraintParam()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\item[{\\em ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endConstraintParam()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startConstraintType()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "} : {\\em ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endConstraintType()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}]";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startConstraintDocs()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endConstraintDocs()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endConstraintList()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\end{description}" << endl;
|
|
Packit |
1c1d7e |
t << "\\end{Desc}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startCodeFragment()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\n\\begin{DoxyCode}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endCodeFragment()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\end{DoxyCode}\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startInlineHeader()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (Config_getBool(COMPACT_LATEX))
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\paragraph*{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\subsubsection*{";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endInlineHeader()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::lineBreak(const char *)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (insideTabbing)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\\\\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\newline\n";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startMemberDocSimple(bool isEnum)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (isEnum)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\begin{DoxyEnumFields}{";
|
|
Packit |
1c1d7e |
docify(theTranslator->trEnumerationValues());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\begin{DoxyFields}{";
|
|
Packit |
1c1d7e |
docify(theTranslator->trCompoundMembers());
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
t << "}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endMemberDocSimple(bool isEnum)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
if (isEnum)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\end{DoxyEnumFields}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
else
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\end{DoxyFields}" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startInlineMemberType()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
insideTabbing = TRUE; // to prevent \+ from causing unwanted breaks
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endInlineMemberType()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "&" << endl;
|
|
Packit |
1c1d7e |
insideTabbing = FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startInlineMemberName()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
insideTabbing = TRUE; // to prevent \+ from causing unwanted breaks
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endInlineMemberName()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "&" << endl;
|
|
Packit |
1c1d7e |
insideTabbing = FALSE;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startInlineMemberDoc()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endInlineMemberDoc()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\\\\n\\hline\n" << endl;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::startLabels()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "\\hspace{0.3cm}";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::writeLabel(const char *l,bool isLast)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
t << "{\\ttfamily [" << l << "]}";
|
|
Packit |
1c1d7e |
if (!isLast) t << ", ";
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void LatexGenerator::endLabels()
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|