@@ -2405,7 +2405,9 @@ void filterLatexString(TextStream &t,const QCString &str,
24052405 else
24062406 t << static_cast <char >(c);
24072407 break ;
2408- case ' #' : t << " \\ +\\ #" ; break ;
2408+ case ' #' : if (!insideTabbing) t << " \\ +" ;
2409+ t << " \\ #" ;
2410+ break ;
24092411 case ' $' : t << " \\ $" ; break ;
24102412 case ' %' : t << " \\ %" ; break ;
24112413 case ' ^' : processEntity (t,pdfHyperlinks," $^\\ wedge$" ," \\ string^" ); break ;
@@ -2567,6 +2569,7 @@ QCString latexEscapeIndexChars(const QCString &s, bool escapeUnderscore)
25672569{
25682570 // printf("latexEscapeIndexChars(%s)\n",qPrint(s));
25692571 if (s.isEmpty ()) return s;
2572+ bool usePDFHyperLinks = Config_getBool (PDF_HYPERLINKS);
25702573 QCString tmp (s.length (), QCString::ExplicitSize);
25712574 TextStream t;
25722575 const char *p=s.data ();
@@ -2577,22 +2580,57 @@ QCString latexEscapeIndexChars(const QCString &s, bool escapeUnderscore)
25772580 {
25782581 case ' !' : t << " \" !" ; break ;
25792582 case ' "' : t << " \"\" " ; break ;
2583+ case ' \' ' : if (!escapeUnderscore) t << " \" '" ;
2584+ else t << " \\ textquotesingle{}" ;
2585+ break ;
25802586 case ' @' : t << " \" @" ; break ;
2581- case ' |' : t << " \\ texttt{\" |}" ; break ;
2587+ case ' |' : if (!escapeUnderscore)
2588+ {
2589+ if (usePDFHyperLinks) t << " \" |" ;
2590+ else t << " ||" ;
2591+ }
2592+ else t << " \\ texttt{\" |}" ;
2593+ break ;
25822594 case ' [' : t << " [" ; break ;
25832595 case ' ]' : t << " ]" ; break ;
2584- case ' {' : t << " \\ lcurly{}" ; break ;
2585- case ' }' : t << " \\ rcurly{}" ; break ;
2596+ // case '{': t << "\\lcurly{}"; break;
2597+ // case '}': t << "\\rcurly{}"; break;
25862598 case ' _' : if (!escapeUnderscore) {t << " _" ; break ;}
2599+ case ' <' : if (!escapeUnderscore && c==' <' ) {t << " <" ; break ;} // due to fall through
2600+ case ' >' : if (!escapeUnderscore && c==' >' ) {t << " >" ; break ;} // due to fall through
2601+ case ' $' : if (!escapeUnderscore && c==' $' ) {t << " $" ; break ;} // due to fall through
2602+ case ' {' : if (!escapeUnderscore && c==' {' ) {t << " \\ texttt{\\ {}" ; break ;} // due to fall through
2603+ case ' }' : if (!escapeUnderscore && c==' }' ) {t << " \\ texttt{\\ }}" ; break ;} // due to fall through
2604+ case ' ~' : if (!escapeUnderscore && c==' ~' ) {t << " ~" ; break ;} // due to fall through
2605+ case ' -' : if (!escapeUnderscore && c==' -' ) {t << " -" ; break ;} // due to fall through
2606+ case ' #' : if (!escapeUnderscore && c==' #' ) // due to fall through
2607+ {
2608+ t << (usePDFHyperLinks? " \\ #" : " #" );
2609+ break ;
2610+ }
2611+ case ' \\ ' : if (!escapeUnderscore && c==' \\ ' ) // due to fall through
2612+ {
2613+ t << (usePDFHyperLinks? " \\\\ " : " \\ " );
2614+ break ;
2615+ }
25872616 // NOTE: adding a case here, means adding it to while below as well!
25882617 default :
25892618 {
25902619 int i=0 ;
25912620 // collect as long string as possible, before handing it to docify
25922621 tmp[i++]=c;
2593- while ((c=*p) && c!=' "' && c!=' @' && c!=' [' && c!=' ]' && c!=' !' && c!=' {' && c!=' }' && c!=' |' )
2622+ while ((c=*p) && c!=' "' && c!=' @' && c!=' [' && c!=' ]' && c!=' !' && c!=' {' && c!=' }' && c!=' |' && c!= ' \' ' )
25942623 {
25952624 if (c==' _' && !escapeUnderscore) break ;
2625+ if (c==' <' && !escapeUnderscore) break ;
2626+ if (c==' >' && !escapeUnderscore) break ;
2627+ if (c==' $' && !escapeUnderscore) break ;
2628+ if (c==' ~' && !escapeUnderscore) break ;
2629+ if (c==' {' && !escapeUnderscore) break ;
2630+ if (c==' }' && !escapeUnderscore) break ;
2631+ if (c==' -' && !escapeUnderscore) break ;
2632+ if (c==' #' && !escapeUnderscore) break ;
2633+ if (c==' \\ ' && !escapeUnderscore) break ;
25962634 tmp[i++]=c;
25972635 p++;
25982636 }
0 commit comments