diff options
Diffstat (limited to 'src/latexgen.cpp')
-rw-r--r-- | src/latexgen.cpp | 115 |
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() |