summaryrefslogtreecommitdiffstats
path: root/src/util.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/util.cpp')
-rw-r--r--src/util.cpp34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/util.cpp b/src/util.cpp
index b387a84..b524863 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -6865,11 +6865,37 @@ void filterLatexString(FTextStream &t,const char *str,
}
}
+static void reFilterLatexString(FTextStream &t,const char *str)
+{
+ if (str==0) return;
+ const unsigned char *p=(const unsigned char *)str;
+ unsigned char c;
+ unsigned char pc='\0';
+ while (*p)
+ {
+ c=*p++;
+
+ switch(c)
+ {
+ case '\\':
+ if (*p == '+') p++;
+ else t << '\\';
+ break;
+ default:
+ t << (char)c;
+ break;
+ }
+ pc = c;
+ }
+}
+
QCString latexEscapeLabelName(const char *s,bool insideTabbing)
{
QGString result;
+ QGString result1;
QCString tmp(qstrlen(s)+1);
FTextStream t(&result);
+ FTextStream t1(&result1);
const char *p=s;
char c;
int i;
@@ -6899,7 +6925,13 @@ QCString latexEscapeLabelName(const char *s,bool insideTabbing)
break;
}
}
- return result.data();
+ if (!insideTabbing)
+ {
+ reFilterLatexString(t1,result.data());
+ return result1.data();
+ }
+ else
+ return result.data();
}
QCString latexEscapeIndexChars(const char *s,bool insideTabbing)