diff --git a/src/plaintolatexconverter.cpp b/src/plaintolatexconverter.cpp --- a/src/plaintolatexconverter.cpp +++ b/src/plaintolatexconverter.cpp @@ -18,23 +18,14 @@ */ #include "plaintolatexconverter.h" +#include PlainToLaTeXConverter::PlainToLaTeXConverter(void) -{ - // Fill the replacement map - //TODO Do it only once! - m_replaceMap.insert('$', "\\$"); - m_replaceMap.insert('%', "\\%"); - m_replaceMap.insert('^', "\\^"); - m_replaceMap.insert('&', "\\&"); - m_replaceMap.insert('_', "\\_"); - m_replaceMap.insert('#', "\\#"); - m_replaceMap.insert('{', "\\{"); - m_replaceMap.insert('}', "\\}"); - m_replaceMap.insert('~', "$\\sim$"); -} +{} + +PlainToLaTeXConverter::~PlainToLaTeXConverter(void) +{} -PlainToLaTeXConverter::~PlainToLaTeXConverter(void) {} /** * Converts plain text to LaTeX. @@ -44,23 +35,7 @@ QString PlainToLaTeXConverter::ConvertToLaTeX(const QString& toConv) const { QString result(toConv); - - // Replacing what must be... - uint sSize = result.length(); - QMap::const_iterator mapEnd = m_replaceMap.end(); - for(uint i = 0 ; i < sSize ; ++i) - { - QMap::const_iterator it = m_replaceMap.find(result.at(i)); - - if(it != mapEnd) { // The character must be replaced - result.replace(i, 1, *it); - uint len = (*it).length(); - if(1 < len) { - i += len - 1; - sSize += len - 1; - } - } - } - + result.replace(QRegularExpression("([$%^_#&{}])"), "\\\\1"); + result.replace("~", "$\\sim$"); return result; }