diff --git a/src/dict/slob.cc b/src/dict/slob.cc
index 3b35052b..e7494af6 100644
--- a/src/dict/slob.cc
+++ b/src/dict/slob.cc
@@ -579,7 +579,6 @@ class SlobDictionary: public BtreeIndexing::BtreeDictionary
BtreeIndex resourceIndex;
IdxHeader idxHeader;
SlobFile sf;
- QString texCgiPath, texCachePath;
string idxFileName;
@@ -701,21 +700,10 @@ SlobDictionary::SlobDictionary( string const & id, string const & indexFile, vec
// Full-text search parameters
ftsIdxName = indexFile + Dictionary::getFtsSuffix();
-
- texCgiPath = Config::getProgramDataDir() + "/mimetex.cgi";
- if ( QFileInfo( texCgiPath ).exists() ) {
- QString dirName = QString::fromStdString( getId() );
- QDir( QDir::tempPath() ).mkdir( dirName );
- texCachePath = QDir::tempPath() + "/" + dirName;
- }
- else
- texCgiPath.clear();
}
SlobDictionary::~SlobDictionary()
{
- if ( !texCachePath.isEmpty() )
- Utils::Fs::removeDirectory( texCachePath );
}
void SlobDictionary::loadIcon() noexcept
@@ -837,141 +825,12 @@ string SlobDictionary::convert( const string & in, RefEntry const & entry )
}
newText.clear();
-
- // Handle TeX formulas via mimetex.cgi
-
- if ( !texCgiPath.isEmpty() ) {
- QRegularExpression texImage( R"lit(<\s*img\s+class="([^"]+)"\s*([^>]*)alt="([^"]+)"[^>]*>)lit" );
- QRegularExpression regFrac( "\\\\[dt]frac" );
- QRegularExpression regSpaces( R"(\s+([\{\(\[\}\)\]]))" );
-
- QRegExp multReg( R"(\*\{(\d+)\}([^\{]|\{([^\}]+)\}))", Qt::CaseSensitive, QRegExp::RegExp2 );
-
- QString arrayDesc( "\\begin{array}{" );
- pos = 0;
- unsigned texCount = 0;
- QString imgName;
-
- QRegularExpressionMatchIterator it = texImage.globalMatch( text );
- QString newText;
- while ( it.hasNext() ) {
- QRegularExpressionMatch match = it.next();
-
- newText += text.mid( pos, match.capturedStart() - pos );
- pos = match.capturedEnd();
-
- QStringList list = match.capturedTexts();
-
-
- if ( list[ 1 ].compare( "tex" ) == 0 || list[ 1 ].compare( "mwe-math-fallback-image-inline" ) == 0
- || list[ 1 ].endsWith( " tex" ) ) {
- QString name;
- name = name.asprintf( "%04X%04X%04X.gif", entry.itemIndex, entry.binIndex, texCount );
- imgName = texCachePath + "/" + name;
-
- if ( !QFileInfo( imgName ).exists() ) {
-
- // Replace some TeX commands which don't support by mimetex.cgi
-
- QString tex = list[ 3 ];
- tex.replace( regSpaces, "\\1" );
- tex.replace( regFrac, "\\frac" );
- tex.replace( "\\leqslant", "\\leq" );
- tex.replace( "\\geqslant", "\\geq" );
- tex.replace( "\\infin", "\\infty" );
- tex.replace( "\\iff", "\\Longleftrightarrow" );
- tex.replace( "\\tbinom", "\\binom" );
- tex.replace( "\\implies", "\\Longrightarrow" );
- tex.replace( "{aligned}", "{align*}" );
- tex.replace( "\\Subset", "\\subset" );
- tex.replace( "\\xrightarrow", "\\longrightarrow^" );
- tex.remove( "\\scriptstyle" );
- tex.remove( "\\mathop" );
- tex.replace( "\\bigg|", "|" );
-
- // Format array descriptions (mimetex now don't support *{N}x constructions in it)
-
- int pos1 = 0;
- while ( pos1 >= 0 ) {
- pos1 = tex.indexOf( arrayDesc, pos1, Qt::CaseInsensitive );
- if ( pos1 >= 0 ) {
- // Retrieve array description
- QString desc, newDesc;
- int n = 0;
- int nstart = pos1 + arrayDesc.size();
- int i;
- for ( i = 0; i + nstart < tex.size(); i++ ) {
- if ( tex[ i + nstart ] == '{' )
- n += 1;
- if ( tex[ i + nstart ] == '}' )
- n -= 1;
- if ( n < 0 )
- break;
- }
- if ( i > 0 && i + nstart + 1 < tex.size() )
- desc = tex.mid( nstart, i );
-
- if ( !desc.isEmpty() ) {
- // Expand multipliers: "*{5}x" -> "xxxxx"
-
- newDesc = desc;
- QString newStr;
- int pos2 = 0;
- while ( pos2 >= 0 ) {
- pos2 = multReg.indexIn( newDesc, pos2 );
- if ( pos2 >= 0 ) {
- QStringList list = multReg.capturedTexts();
- int n = list[ 1 ].toInt();
- for ( int i = 0; i < n; i++ )
- newStr += list[ 3 ].isEmpty() ? list[ 2 ] : list[ 3 ];
- newDesc.replace( pos2, list[ 0 ].size(), newStr );
- pos2 += newStr.size();
- }
- else
- break;
- }
- tex.replace( pos1 + arrayDesc.size(), desc.size(), newDesc );
- pos1 += arrayDesc.size() + newDesc.size();
- }
- else
- pos1 += arrayDesc.size();
- }
- else
- break;
- }
-
- QString command = texCgiPath + " -e " + imgName + " \"" + tex + "\"";
- QProcess::execute( command, QStringList() );
- }
-
- QString tag = QString( R"(";
-
- newText += tag;
-
-
- texCount += 1;
- }
- else
- newText += list[ 0 ];
- }
- if ( pos ) {
- newText += text.mid( pos );
- text = newText;
- }
- newText.clear();
- }
- #ifdef Q_OS_WIN32
- else {
// Increase equations scale
text = QString::fromLatin1( "" + text;
- }
#endif
// Fix outstanding elements
diff --git a/website/docs/dictformats.md b/website/docs/dictformats.md
index 59971181..3f1832ab 100644
--- a/website/docs/dictformats.md
+++ b/website/docs/dictformats.md
@@ -70,7 +70,7 @@ Main file of DictD dictionary (.dict) or Xdxf dictionary (.xdxf) can be compress
### Slob
-GoldenDict can render formulas in TeX format via Mimetex program. Just place "mimetex.cgi" file beside GoldenDict executable file.
+GoldenDict can render formulas in TeX format with the built-in web engine.
### GLS