diff options
Diffstat (limited to 'src/latexdocvisitor.cpp')
-rw-r--r-- | src/latexdocvisitor.cpp | 148 |
1 files changed, 19 insertions, 129 deletions
diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp index bc8e5a5..7daa1d0 100644 --- a/src/latexdocvisitor.cpp +++ b/src/latexdocvisitor.cpp @@ -135,135 +135,25 @@ void LatexDocVisitor::visit(DocWhiteSpace *w) void LatexDocVisitor::visit(DocSymbol *s) { if (m_hide) return; - switch(s->symbol()) - { - case DocSymbol::BSlash: m_t << "\\textbackslash{}"; break; - case DocSymbol::At: m_t << "@"; break; - case DocSymbol::Less: if (m_insidePre) m_t << "<"; else m_t << "$<$"; - break; - case DocSymbol::Greater: if (m_insidePre) m_t << ">"; else m_t << "$>$"; break; - case DocSymbol::Amp: m_t << "\\&"; break; - case DocSymbol::Dollar: m_t << "\\$"; break; - case DocSymbol::Hash: m_t << "\\#"; break; - case DocSymbol::DoubleColon: m_t << "::"; break; - case DocSymbol::Percent: m_t << "\\%"; break; - case DocSymbol::Pipe: m_t << "$|$"; break; - case DocSymbol::Copy: m_t << "\\copyright{}"; break; - case DocSymbol::Tm: m_t << "\\texttrademark{}"; break; - case DocSymbol::Reg: m_t << "\\textregistered{}"; break; - case DocSymbol::Apos: m_t << "'"; break; - case DocSymbol::Quot: m_t << "\""; break; - case DocSymbol::Lsquo: m_t << "`"; break; - case DocSymbol::Rsquo: m_t << "'"; break; - case DocSymbol::Ldquo: m_t << "``"; break; - case DocSymbol::Rdquo: m_t << "''"; break; - case DocSymbol::Ndash: m_t << "--"; break; - case DocSymbol::Mdash: m_t << "---"; break; - case DocSymbol::Uml: - if (s->letter()=='i') - m_t << "\\\"{\\i}"; - else - m_t << "\\\"{" << s->letter() << "}"; - break; - case DocSymbol::Acute: - if (s->letter()=='i') - m_t << "\\'{\\i}"; - else - m_t << "\\'{" << s->letter() << "}"; - break; - case DocSymbol::Grave: - if (s->letter()=='i') - m_t << "\\`{\\i}"; - else - m_t << "\\`{" << s->letter() << "}"; - break; - case DocSymbol::Circ: - if (s->letter()=='i') - m_t << "\\^{\\i}"; - else - m_t << "\\^{" << s->letter() << "}"; - break; - case DocSymbol::Slash: if (tolower(s->letter())=='o') - m_t << "{\\" << s->letter() << "}"; - else - m_t << s->letter(); - break; - case DocSymbol::Tilde: m_t << "\\~{" << s->letter() << "}"; break; - case DocSymbol::Szlig: m_t << "{\\ss}"; break; - case DocSymbol::Cedil: m_t << "\\c{" << s->letter() << "}"; break; - case DocSymbol::Ring: m_t << "\\" << s->letter() << s->letter(); break; - case DocSymbol::Nbsp: m_t << "~"; break; - case DocSymbol::AElig: m_t << "{\\AE}"; break; - case DocSymbol::Aelig: m_t << "{\\ae}"; break; - case DocSymbol::GrkGamma: m_t << "{$\\Gamma$}"; break; - case DocSymbol::GrkDelta: m_t << "{$\\Delta$}"; break; - case DocSymbol::GrkTheta: m_t << "{$\\Theta$}"; break; - case DocSymbol::GrkLambda: m_t << "{$\\Lambda$}"; break; - case DocSymbol::GrkXi: m_t << "{$\\Xi$}"; break; - case DocSymbol::GrkPi: m_t << "{$\\Pi$}"; break; - case DocSymbol::GrkSigma: m_t << "{$\\Sigma$}"; break; - case DocSymbol::GrkUpsilon: m_t << "{$\\Upsilon$}"; break; - case DocSymbol::GrkPhi: m_t << "{$\\Phi$}"; break; - case DocSymbol::GrkPsi: m_t << "{$\\Psi$}"; break; - case DocSymbol::GrkOmega: m_t << "{$\\Omega$}"; break; - case DocSymbol::Grkalpha: m_t << "{$\\alpha$}"; break; - case DocSymbol::Grkbeta: m_t << "{$\\beta$}"; break; - case DocSymbol::Grkgamma: m_t << "{$\\gamma$}"; break; - case DocSymbol::Grkdelta: m_t << "{$\\delta$}"; break; - case DocSymbol::Grkepsilon: m_t << "{$\\varepsilon$}"; break; - case DocSymbol::Grkzeta: m_t << "{$\\zeta$}"; break; - case DocSymbol::Grketa: m_t << "{$\\eta$}"; break; - case DocSymbol::Grktheta: m_t << "{$\\theta$}"; break; - case DocSymbol::Grkiota: m_t << "{$\\iota$}"; break; - case DocSymbol::Grkkappa: m_t << "{$\\kappa$}"; break; - case DocSymbol::Grklambda: m_t << "{$\\lambda$}"; break; - case DocSymbol::Grkmu: m_t << "{$\\mu$}"; break; - case DocSymbol::Grknu: m_t << "{$\\nu$}"; break; - case DocSymbol::Grkxi: m_t << "{$\\xi$}"; break; - case DocSymbol::Grkpi: m_t << "{$\\pi$}"; break; - case DocSymbol::Grkrho: m_t << "{$\\rho$}"; break; - case DocSymbol::Grksigma: m_t << "{$\\sigma$}"; break; - case DocSymbol::Grktau: m_t << "{$\\tau$}"; break; - case DocSymbol::Grkupsilon: m_t << "{$\\upsilon$}"; break; - case DocSymbol::Grkphi: m_t << "{$\\varphi$}"; break; - case DocSymbol::Grkchi: m_t << "{$\\chi$}"; break; - case DocSymbol::Grkpsi: m_t << "{$\\psi$}"; break; - case DocSymbol::Grkomega: m_t << "{$\\omega$}"; break; - case DocSymbol::Grkvarsigma: m_t << "{$\\varsigma$}"; break; - case DocSymbol::Section: m_t << "{$\\S$}"; break; - case DocSymbol::Degree: m_t << "\\textdegree"; break; - case DocSymbol::Prime: m_t << "'"; break; - case DocSymbol::DoublePrime: m_t << "''"; break; - case DocSymbol::Infinity: m_t << "{$\\infty$}"; break; - case DocSymbol::EmptySet: m_t << "{$\\emptyset$}"; break; - case DocSymbol::PlusMinus: m_t << "{$\\pm$}"; break; - case DocSymbol::Times: m_t << "{$\\times$}"; break; - case DocSymbol::Minus: m_t << "-"; break; - case DocSymbol::CenterDot: m_t << "{$\\cdot$}"; break; - case DocSymbol::Partial: m_t << "{$\\partial$}"; break; - case DocSymbol::Nabla: m_t << "{$\\nabla$}"; break; - case DocSymbol::SquareRoot: m_t << "{$\\surd$}"; break; - case DocSymbol::Perpendicular: m_t << "{$\\perp$}"; break; - case DocSymbol::Sum: m_t << "{$\\sum$}"; break; - case DocSymbol::Integral: m_t << "{$\\int$}"; break; - case DocSymbol::Product: m_t << "{$\\prod$}"; break; - case DocSymbol::Similar: m_t << "{$\\sim$}"; break; - case DocSymbol::Approx: m_t << "{$\\approx$}"; break; - case DocSymbol::NotEqual: m_t << "{$\\ne$}"; break; - case DocSymbol::Equivalent: m_t << "{$\\equiv$}"; break; - case DocSymbol::Proportional: m_t << "{$\\propto$}"; break; - case DocSymbol::LessEqual: m_t << "{$\\le$}"; break; - case DocSymbol::GreaterEqual: m_t << "{$\\ge$}"; break; - case DocSymbol::LeftArrow: m_t << "{$\\leftarrow$}"; break; - case DocSymbol::RightArrow: m_t << "{$\\rightarrow$}"; break; - case DocSymbol::SetIn: m_t << "{$\\in$}"; break; - case DocSymbol::SetNotIn: m_t << "{$\\notin$}"; break; - case DocSymbol::LeftCeil: m_t << "{$\\lceil$}"; break; - case DocSymbol::RightCeil: m_t << "{$\\rceil$}"; break; - case DocSymbol::LeftFloor: m_t << "{$\\lfloor$}"; break; - case DocSymbol::RightFloor: m_t << "{$\\rfloor$}"; break; - default: - err("unknown symbol found\n"); + const char *res = get_symbol_latex(s->symbol()); + if (res) + { + if (((s->symbol() == DocSymbol::Sym_lt) || (s->symbol() == DocSymbol::Sym_Less))&& (!m_insidePre)) + { + m_t << "$<$"; + } + else if (((s->symbol() == DocSymbol::Sym_gt) || (s->symbol() == DocSymbol::Sym_Greater)) && (!m_insidePre)) + { + m_t << "$>$"; + } + else + { + m_t << res; + } + } + else + { + err("LaTeX: non supported HTML-entity found: &%s;\n",get_symbol_item(s->symbol())); } } |