summaryrefslogtreecommitdiffstats
path: root/src/latexgen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/latexgen.cpp')
-rw-r--r--src/latexgen.cpp115
1 files changed, 64 insertions, 51 deletions
diff --git a/src/latexgen.cpp b/src/latexgen.cpp
index e6c6861..cdda22c 100644
--- a/src/latexgen.cpp
+++ b/src/latexgen.cpp
@@ -223,6 +223,7 @@ void LatexCodeGenerator::writeLineNumber(const char *ref,const char *fileName,co
{
m_t << l << " ";
}
+ m_col=0;
}
@@ -265,11 +266,11 @@ void LatexCodeGenerator::setDoxyCodeOpen(bool val)
LatexGenerator::LatexGenerator() : OutputGenerator()
{
- dir=Config_getString(LATEX_OUTPUT);
- //printf("LatexGenerator::LatexGenerator() insideTabbing=FALSE\n");
- insideTabbing=FALSE;
- firstDescItem=TRUE;
- disableLinks=FALSE;
+ m_dir=Config_getString(LATEX_OUTPUT);
+ //printf("LatexGenerator::LatexGenerator() m_insideTabbing=FALSE\n");
+ m_insideTabbing=FALSE;
+ m_firstDescItem=TRUE;
+ m_disableLinks=FALSE;
m_indent=0;
templateMemberItem = FALSE;
m_prettyCode=Config_getBool(LATEX_SOURCE_CODE);
@@ -287,8 +288,7 @@ static void writeLatexMakefile()
QFile file(fileName);
if (!file.open(IO_WriteOnly))
{
- err("Could not open file %s for writing\n",fileName.data());
- exit(1);
+ term("Could not open file %s for writing\n",fileName.data());
}
// inserted by KONNO Akihisa <konno@researchers.jp> 2002-03-05
QCString latex_command = theTranslator->latexCommandName();
@@ -386,8 +386,7 @@ static void writeMakeBat()
bool generateBib = !Doxygen::citeDict->isEmpty();
if (!file.open(IO_WriteOnly))
{
- err("Could not open file %s for writing\n",fileName.data());
- exit(1);
+ term("Could not open file %s for writing\n",fileName.data());
}
FTextStream t(&file);
t << "set Dir_Old=%cd%\n";
@@ -467,8 +466,7 @@ void LatexGenerator::init()
QDir d(dir);
if (!d.exists() && !d.mkdir(dir))
{
- err("Could not create output directory %s\n",dir.data());
- exit(1);
+ term("Could not create output directory %s\n",dir.data());
}
writeLatexMakefile();
@@ -623,6 +621,11 @@ static void writeDefaultHeaderPart1(FTextStream &t)
"}\n"
"\\makeatother\n"
"\n";
+ //
+ t << "\\makeatletter\n"
+ "\\newcommand\\hrulefilll{\\leavevmode\\leaders\\hrule\\hskip 0pt plus 1filll\\kern\\z@}\n"
+ "\\makeatother\n"
+ "\n";
// Headers & footers
QGString genString;
@@ -688,6 +691,16 @@ static void writeDefaultHeaderPart1(FTextStream &t)
writeExtraLatexPackages(t);
writeLatexSpecialFormulaChars(t);
+ QCString macroFile = Config_getString(FORMULA_MACROFILE);
+ if (!macroFile.isEmpty())
+ {
+ QCString dir=Config_getString(LATEX_OUTPUT);
+ QFileInfo fi(macroFile);
+ macroFile=fi.absFilePath().utf8();
+ QCString stripMacroFile = fi.fileName().data();
+ copyFile(macroFile,dir + "/" + stripMacroFile);
+ t << "\\input{" << stripMacroFile << "}" << endl;
+ }
// Hyperlinks
bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS);
@@ -873,11 +886,11 @@ void LatexGenerator::startFile(const char *name,const char *,const char *)
setEncoding(Config_getString(LATEX_OUTPUT_ENCODING));
#endif
QCString fileName=name;
- relPath = relativePathToRoot(fileName);
+ m_relPath = relativePathToRoot(fileName);
if (fileName.right(4)!=".tex" && fileName.right(4)!=".sty") fileName+=".tex";
startPlainFile(fileName);
m_codeGen.setTextStream(t);
- m_codeGen.setRelativePath(relPath);
+ m_codeGen.setRelativePath(m_relPath);
m_codeGen.setSourceFileName(stripPath(fileName));
}
@@ -1468,7 +1481,7 @@ void LatexGenerator::endIndexValue(const char *name,bool /*hasBrief*/)
void LatexGenerator::startTextLink(const char *f,const char *anchor)
{
static bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS);
- if (!disableLinks && pdfHyperlinks)
+ if (!m_disableLinks && pdfHyperlinks)
{
t << "\\mbox{\\hyperlink{";
if (f) t << stripPath(f);
@@ -1484,7 +1497,7 @@ void LatexGenerator::startTextLink(const char *f,const char *anchor)
void LatexGenerator::endTextLink()
{
static bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS);
- if (!disableLinks && pdfHyperlinks)
+ if (!m_disableLinks && pdfHyperlinks)
{
t << "}";
}
@@ -1495,7 +1508,7 @@ void LatexGenerator::writeObjectLink(const char *ref, const char *f,
const char *anchor, const char *text)
{
static bool pdfHyperlinks = Config_getBool(PDF_HYPERLINKS);
- if (!disableLinks && !ref && pdfHyperlinks)
+ if (!m_disableLinks && !ref && pdfHyperlinks)
{
t << "\\mbox{\\hyperlink{";
if (f) t << stripPath(f);
@@ -1593,12 +1606,12 @@ void LatexGenerator::startGroupHeader(int extraIndentLevel)
{
t << "\\doxysubsection{";
}
- disableLinks=TRUE;
+ m_disableLinks=TRUE;
}
void LatexGenerator::endGroupHeader(int)
{
- disableLinks=FALSE;
+ m_disableLinks=FALSE;
t << "}" << endl;
}
@@ -1612,12 +1625,12 @@ void LatexGenerator::startMemberHeader(const char *,int)
{
t << "\\doxysubsection*{";
}
- disableLinks=TRUE;
+ m_disableLinks=TRUE;
}
void LatexGenerator::endMemberHeader()
{
- disableLinks=FALSE;
+ m_disableLinks=FALSE;
t << "}" << endl;
}
@@ -1683,12 +1696,12 @@ void LatexGenerator::startMemberDoc(const char *clname,
}
t << "}";
t << "\n{\\footnotesize\\ttfamily ";
- //disableLinks=TRUE;
+ //m_disableLinks=TRUE;
}
void LatexGenerator::endMemberDoc(bool)
{
- disableLinks=FALSE;
+ m_disableLinks=FALSE;
t << "}\n\n";
//if (Config_getBool(COMPACT_LATEX)) t << "\\hfill";
}
@@ -1809,7 +1822,7 @@ void LatexGenerator::endSection(const char *lab,SectionInfo::SectionType)
void LatexGenerator::docify(const char *str)
{
- filterLatexString(t,str,insideTabbing,FALSE,FALSE);
+ filterLatexString(t,str,m_insideTabbing,FALSE,FALSE);
}
void LatexGenerator::writeChar(char c)
@@ -1829,7 +1842,7 @@ void LatexGenerator::startClassDiagram()
void LatexGenerator::endClassDiagram(const ClassDiagram &d,
const char *fileName,const char *)
{
- d.writeFigure(t,dir,fileName);
+ d.writeFigure(t,m_dir,fileName);
}
@@ -1839,7 +1852,7 @@ void LatexGenerator::startAnonTypeScope(int indent)
{
t << "\\begin{tabbing}" << endl;
t << "xx\\=xx\\=xx\\=xx\\=xx\\=xx\\=xx\\=xx\\=xx\\=\\kill" << endl;
- insideTabbing=TRUE;
+ m_insideTabbing=TRUE;
}
m_indent=indent;
}
@@ -1849,7 +1862,7 @@ void LatexGenerator::endAnonTypeScope(int indent)
if (indent==0)
{
t << endl << "\\end{tabbing}";
- insideTabbing=FALSE;
+ m_insideTabbing=FALSE;
}
m_indent=indent;
}
@@ -1873,7 +1886,7 @@ void LatexGenerator::endMemberTemplateParams(const char *,const char *)
void LatexGenerator::startMemberItem(const char *,int annoType,const char *)
{
//printf("LatexGenerator::startMemberItem(%d)\n",annType);
- if (!insideTabbing)
+ if (!m_insideTabbing)
{
t << "\\item " << endl;
templateMemberItem = (annoType == 3);
@@ -1882,7 +1895,7 @@ void LatexGenerator::startMemberItem(const char *,int annoType,const char *)
void LatexGenerator::endMemberItem()
{
- if (insideTabbing)
+ if (m_insideTabbing)
{
t << "\\\\";
}
@@ -1892,7 +1905,7 @@ void LatexGenerator::endMemberItem()
void LatexGenerator::startMemberDescription(const char *,const char *,bool)
{
- if (!insideTabbing)
+ if (!m_insideTabbing)
{
t << "\\begin{DoxyCompactList}\\small\\item\\em ";
}
@@ -1905,7 +1918,7 @@ void LatexGenerator::startMemberDescription(const char *,const char *,bool)
void LatexGenerator::endMemberDescription()
{
- if (!insideTabbing)
+ if (!m_insideTabbing)
{
//t << "\\item\\end{DoxyCompactList}";
t << "\\end{DoxyCompactList}";
@@ -1919,8 +1932,8 @@ void LatexGenerator::endMemberDescription()
void LatexGenerator::writeNonBreakableSpace(int)
{
- //printf("writeNonBreakbleSpace()\n");
- if (insideTabbing)
+ //printf("writeNonBreakableSpace()\n");
+ if (m_insideTabbing)
{
t << "\\>";
}
@@ -1935,7 +1948,7 @@ void LatexGenerator::writeNonBreakableSpace(int)
// startDescTable()
// - startDescTableRow()
// - startDescTableTitle()
-// - endDescTabelTitle()
+// - endDescTableTitle()
// - startDescTableData()
// - endDescTableData()
// - endDescTableRow()
@@ -1993,7 +2006,7 @@ void LatexGenerator::lastIndexPage()
void LatexGenerator::startMemberList()
{
- if (!insideTabbing)
+ if (!m_insideTabbing)
{
t << "\\begin{DoxyCompactItemize}" << endl;
}
@@ -2001,8 +2014,8 @@ void LatexGenerator::startMemberList()
void LatexGenerator::endMemberList()
{
- //printf("LatexGenerator::endMemberList(%d)\n",insideTabbing);
- if (!insideTabbing)
+ //printf("LatexGenerator::endMemberList(%d)\n",m_insideTabbing);
+ if (!m_insideTabbing)
{
t << "\\end{DoxyCompactItemize}" << endl;
}
@@ -2058,7 +2071,7 @@ void LatexGenerator::startDotGraph()
void LatexGenerator::endDotGraph(DotClassGraph &g)
{
- g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString(LATEX_OUTPUT),fileName,relPath);
+ g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString(LATEX_OUTPUT),m_fileName,m_relPath);
}
void LatexGenerator::startInclDepGraph()
@@ -2067,7 +2080,7 @@ void LatexGenerator::startInclDepGraph()
void LatexGenerator::endInclDepGraph(DotInclDepGraph &g)
{
- g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString(LATEX_OUTPUT),fileName,relPath);
+ g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString(LATEX_OUTPUT),m_fileName,m_relPath);
}
void LatexGenerator::startGroupCollaboration()
@@ -2076,7 +2089,7 @@ void LatexGenerator::startGroupCollaboration()
void LatexGenerator::endGroupCollaboration(DotGroupCollaboration &g)
{
- g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString(LATEX_OUTPUT),fileName,relPath);
+ g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString(LATEX_OUTPUT),m_fileName,m_relPath);
}
void LatexGenerator::startCallGraph()
@@ -2085,7 +2098,7 @@ void LatexGenerator::startCallGraph()
void LatexGenerator::endCallGraph(DotCallGraph &g)
{
- g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString(LATEX_OUTPUT),fileName,relPath);
+ g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString(LATEX_OUTPUT),m_fileName,m_relPath);
}
void LatexGenerator::startDirDepGraph()
@@ -2094,7 +2107,7 @@ void LatexGenerator::startDirDepGraph()
void LatexGenerator::endDirDepGraph(DotDirDeps &g)
{
- g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString(LATEX_OUTPUT),fileName,relPath);
+ g.writeGraph(t,GOF_EPS,EOF_LaTeX,Config_getString(LATEX_OUTPUT),m_fileName,m_relPath);
}
void LatexGenerator::startDescription()
@@ -2105,21 +2118,21 @@ void LatexGenerator::startDescription()
void LatexGenerator::endDescription()
{
t << "\\end{description}" << endl;
- firstDescItem=TRUE;
+ m_firstDescItem=TRUE;
}
void LatexGenerator::startDescItem()
{
- firstDescItem=TRUE;
+ m_firstDescItem=TRUE;
t << "\\item[";
}
void LatexGenerator::endDescItem()
{
- if (firstDescItem)
+ if (m_firstDescItem)
{
t << "]" << endl;
- firstDescItem=FALSE;
+ m_firstDescItem=FALSE;
}
else
{
@@ -2200,7 +2213,7 @@ void LatexGenerator::exceptionEntry(const char* prefix,bool closeBracket)
void LatexGenerator::writeDoc(DocNode *n,const Definition *ctx,const MemberDef *)
{
LatexDocVisitor *visitor =
- new LatexDocVisitor(t,*this,ctx?ctx->getDefFileExtension():QCString(""),insideTabbing);
+ new LatexDocVisitor(t,*this,ctx?ctx->getDefFileExtension():QCString(""),m_insideTabbing);
n->accept(visitor);
delete visitor;
}
@@ -2280,7 +2293,7 @@ void LatexGenerator::endInlineHeader()
void LatexGenerator::lineBreak(const char *)
{
- if (insideTabbing)
+ if (m_insideTabbing)
{
t << "\\\\\n";
}
@@ -2321,24 +2334,24 @@ void LatexGenerator::endMemberDocSimple(bool isEnum)
void LatexGenerator::startInlineMemberType()
{
- insideTabbing = TRUE; // to prevent \+ from causing unwanted breaks
+ m_insideTabbing = TRUE; // to prevent \+ from causing unwanted breaks
}
void LatexGenerator::endInlineMemberType()
{
t << "&" << endl;
- insideTabbing = FALSE;
+ m_insideTabbing = FALSE;
}
void LatexGenerator::startInlineMemberName()
{
- insideTabbing = TRUE; // to prevent \+ from causing unwanted breaks
+ m_insideTabbing = TRUE; // to prevent \+ from causing unwanted breaks
}
void LatexGenerator::endInlineMemberName()
{
t << "&" << endl;
- insideTabbing = FALSE;
+ m_insideTabbing = FALSE;
}
void LatexGenerator::startInlineMemberDoc()