summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/commentcnv.l8
-rw-r--r--src/commentscan.l20
-rw-r--r--src/docparser.h2
-rw-r--r--src/htmldocvisitor.cpp5
-rw-r--r--src/lexcode.l4
-rw-r--r--src/lexscanner.l4
-rw-r--r--src/markdown.cpp5
-rw-r--r--src/pre.l4
-rw-r--r--src/scanner.l12
9 files changed, 46 insertions, 18 deletions
diff --git a/src/commentcnv.l b/src/commentcnv.l
index 2d0a4aa..bf2a6fe 100644
--- a/src/commentcnv.l
+++ b/src/commentcnv.l
@@ -438,7 +438,7 @@ SLASHopt [/]*
}
BEGIN(VerbatimCode);
}
-<CComment,ReadLine>[\\@]("f$"|"f["|"f{") {
+<CComment,ReadLine>[\\@]("f$"|"f["|"f{"|"f(") {
copyToOutput(yyscanner,yytext,(int)yyleng);
yyextra->blockName=&yytext[1];
if (yyextra->blockName.at(1)=='[')
@@ -449,6 +449,10 @@ SLASHopt [/]*
{
yyextra->blockName.at(1)='}';
}
+ else if (yyextra->blockName.at(1)=='(')
+ {
+ yyextra->blockName.at(1)=')';
+ }
yyextra->lastCommentContext = YY_START;
BEGIN(Verbatim);
}
@@ -467,7 +471,7 @@ SLASHopt [/]*
<Scan>. { /* any other character */
copyToOutput(yyscanner,yytext,(int)yyleng);
}
-<Verbatim>[\\@]("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"enddocbookonly"|"endrtfonly"|"endmanonly"|"f$"|"f]"|"f}") { /* end of verbatim block */
+<Verbatim>[\\@]("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"enddocbookonly"|"endrtfonly"|"endmanonly"|"f$"|"f]"|"f}"|"f)") { /* end of verbatim block */
copyToOutput(yyscanner,yytext,(int)yyleng);
if (&yytext[1]==yyextra->blockName) // end of formula
{
diff --git a/src/commentscan.l b/src/commentscan.l
index dc16d4c..d55fdab 100644
--- a/src/commentscan.l
+++ b/src/commentscan.l
@@ -540,6 +540,7 @@ STopt [^\n@\\]*
%x InheritParam
%x ExtendsParam
%x ReadFormulaShort
+%x ReadFormulaRound
%x ReadFormulaLong
%x AnchorLabel
%x HtmlComment
@@ -555,7 +556,7 @@ STopt [^\n@\\]*
/* What can happen in while parsing a comment block:
* commands (e.g. @page, or \page)
* escaped commands (e.g. @@page or \\page).
- * formulas (e.g. \f$...\f$ \f[...\f] \f{...\f})
+ * formulas (e.g. \f$...\f$ \f[...\f] \f{...\f} \f(...\f) )
* directories (e.g. \doxygen\src\)
* autolist end. (e.g. a dot on an otherwise empty line)
* newlines.
@@ -753,6 +754,11 @@ STopt [^\n@\\]*
yyextra->formulaNewLines=0;
BEGIN(ReadFormulaShort);
}
+<Comment>{B}*{CMD}"f(" { // start of a inline formula
+ yyextra->formulaText="";
+ yyextra->formulaNewLines=0;
+ BEGIN(ReadFormulaRound);
+ }
<Comment>{B}*{CMD}"f[" { // start of a block formula
setOutput(yyscanner,OutputDoc);
yyextra->formulaText="\\[";
@@ -936,6 +942,10 @@ STopt [^\n@\\]*
addOutput(yyscanner," "+addFormula(yyscanner));
BEGIN(Comment);
}
+<ReadFormulaRound>{CMD}"f)" { // end of inline formula
+ addOutput(yyscanner," "+addFormula(yyscanner));
+ BEGIN(Comment);
+ }
<ReadFormulaLong>{CMD}"f]" { // end of block formula
yyextra->formulaText+="\\]";
addOutput(yyscanner," "+addFormula(yyscanner));
@@ -947,15 +957,15 @@ STopt [^\n@\\]*
addOutput(yyscanner," "+addFormula(yyscanner));
BEGIN(Comment);
}
-<ReadFormulaLong,ReadFormulaShort>[^\\@\n]+ { // any non-special character
+<ReadFormulaLong,ReadFormulaShort,ReadFormulaRound>[^\\@\n]+ { // any non-special character
yyextra->formulaText+=yytext;
}
-<ReadFormulaLong,ReadFormulaShort>\n { // new line
+<ReadFormulaLong,ReadFormulaShort,ReadFormulaRound>\n { // new line
yyextra->formulaNewLines++;
yyextra->formulaText+=*yytext;
yyextra->lineNr++;
}
-<ReadFormulaLong,ReadFormulaShort>. { // any other character
+<ReadFormulaLong,ReadFormulaShort,ReadFormulaRound>. { // any other character
yyextra->formulaText+=*yytext;
}
@@ -3235,7 +3245,7 @@ static yy_size_t yyread(yyscan_t yyscanner,char *buf,yy_size_t max_size)
static void checkFormula(yyscan_t yyscanner)
{
struct yyguts_t *yyg = (struct yyguts_t*)yyscanner;
- if (YY_START==ReadFormulaShort || YY_START==ReadFormulaLong)
+ if (YY_START==ReadFormulaShort || YY_START==ReadFormulaRound || YY_START==ReadFormulaLong)
{
warn(yyextra->fileName,yyextra->lineNr,"End of comment block while inside formula.");
}
diff --git a/src/docparser.h b/src/docparser.h
index a510b32..9078f6b 100644
--- a/src/docparser.h
+++ b/src/docparser.h
@@ -634,7 +634,7 @@ class DocFormula : public DocNode
QCString relPath() const { return m_relPath; }
int id() const { return m_id; }
void accept(DocVisitor *v) { v->visit(this); }
- bool isInline() { return m_text.length()>0 ? m_text.at(0)!='\\' : TRUE; }
+ bool isInline() { return m_text.length()>1 ? !(m_text.at(0)=='\\' && (m_text.at(1)=='{' || m_text.at(1)=='[')): TRUE; }
private:
QCString m_name;
diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp
index 545b96e..6f11d21 100644
--- a/src/htmldocvisitor.cpp
+++ b/src/htmldocvisitor.cpp
@@ -853,6 +853,11 @@ void HtmlDocVisitor::visit(DocFormula *f)
text = text.mid(1,text.length()-2);
m_t << "\\(";
}
+ else if (!bDisplay && !text.isEmpty())
+ {
+ closeInline=TRUE;
+ m_t << "\\(";
+ }
m_t << convertToHtml(text);
if (closeInline)
{
diff --git a/src/lexcode.l b/src/lexcode.l
index a118703..9d4c9ba 100644
--- a/src/lexcode.l
+++ b/src/lexcode.l
@@ -699,7 +699,7 @@ NONLopt [^\n]*
<DocBlock>({CMD}{CMD}){ID}/[^a-z_A-Z0-9] { // escaped command
yyextra->CCodeBuffer += yytext;
}
-<DocBlock>{CMD}("f$"|"f["|"f{") {
+<DocBlock>{CMD}("f$"|"f["|"f{"|"f(") {
yyextra->CCodeBuffer += yytext;
yyextra->docBlockName=&yytext[1];
if (yyextra->docBlockName.at(1)=='{')
@@ -769,7 +769,7 @@ NONLopt [^\n]*
BEGIN(DocBlock);
}
}
-<DocCopyBlock>[\\@]("f$"|"f]"|"f}") {
+<DocCopyBlock>[\\@]("f$"|"f]"|"f}"|"f)") {
yyextra->CCodeBuffer += yytext;
BEGIN(DocBlock);
}
diff --git a/src/lexscanner.l b/src/lexscanner.l
index f148e16..0422b1b 100644
--- a/src/lexscanner.l
+++ b/src/lexscanner.l
@@ -646,7 +646,7 @@ NONLopt [^\n]*
<DocBlock>({CMD}{CMD}){ID}/[^a-z_A-Z0-9] { // escaped command
yyextra->CCodeBuffer += yytext;
}
-<DocBlock>{CMD}("f$"|"f["|"f{") {
+<DocBlock>{CMD}("f$"|"f["|"f{"|"f(") {
yyextra->CCodeBuffer += yytext;
yyextra->docBlockName=&yytext[1];
if (yyextra->docBlockName.at(1)=='{')
@@ -715,7 +715,7 @@ NONLopt [^\n]*
BEGIN(DocBlock);
}
}
-<DocCopyBlock>[\\@]("f$"|"f]"|"f}") {
+<DocCopyBlock>[\\@]("f$"|"f]"|"f}"|"f)") {
yyextra->CCodeBuffer += yytext;
BEGIN(DocBlock);
}
diff --git a/src/markdown.cpp b/src/markdown.cpp
index 3de454b..5f2b8f6 100644
--- a/src/markdown.cpp
+++ b/src/markdown.cpp
@@ -305,6 +305,7 @@ static Alignment markersToAlignment(bool leftMarker,bool rightMarker)
// \code .. \endcode
// \msc .. \endmsc
// \f$..\f$
+// \f(..\f)
// \f[..\f]
// \f{..\f}
// \verbatim..\endverbatim
@@ -353,6 +354,10 @@ QCString Markdown::isBlockCommand(const char *data,int offset,int size)
{
return "f$";
}
+ else if (data[end]=='(')
+ {
+ return "f)";
+ }
else if (data[end]=='[')
{
return "f]";
diff --git a/src/pre.l b/src/pre.l
index 6c46f39..75b2380 100644
--- a/src/pre.l
+++ b/src/pre.l
@@ -1163,7 +1163,7 @@ WSopt [ \t\r]*
outputChar(yyscanner,'/');outputChar(yyscanner,'*');
//yyextra->commentCount++;
}
-<SkipCComment>[\\@][\\@]("f{"|"f$"|"f[") {
+<SkipCComment>[\\@][\\@]("f{"|"f$"|"f[""f(") {
outputArray(yyscanner,yytext,(int)yyleng);
}
<SkipCComment>^({B}*"*"+)?{B}{0,3}"~~~"[~]* {
@@ -1315,7 +1315,7 @@ WSopt [ \t\r]*
BEGIN(yyextra->condCtx);
}
}
-<SkipVerbatim>[\\@]("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"enddocbookonly"|"endrtfonly"|"endmanonly"|"enddot"|"endcode"|"f$"|"f]"|"f}") { /* end of verbatim block */
+<SkipVerbatim>[\\@]("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"enddocbookonly"|"endrtfonly"|"endmanonly"|"enddot"|"endcode"|"f$"|"f]"|"f}""f}") { /* end of verbatim block */
outputArray(yyscanner,yytext,(int)yyleng);
if (yytext[1]=='f' && yyextra->blockName=="f")
{
diff --git a/src/scanner.l b/src/scanner.l
index a37ff09..bfb91e2 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -4521,7 +4521,7 @@ NONLopt [^\n]*
yyextra->fullArgString+=yytext;
BEGIN(CopyArgVerbatim);
}
-<CopyArgCommentLine>{CMD}("f$"|"f["|"f{") {
+<CopyArgCommentLine>{CMD}("f$"|"f["|"f{"|"f(") {
yyextra->docBlockName=&yytext[1];
if (yyextra->docBlockName.at(1)=='[')
{
@@ -4531,10 +4531,14 @@ NONLopt [^\n]*
{
yyextra->docBlockName.at(1)='}';
}
+ if (yyextra->docBlockName.at(1)=='(')
+ {
+ yyextra->docBlockName.at(1)=')';
+ }
yyextra->fullArgString+=yytext;
BEGIN(CopyArgVerbatim);
}
-<CopyArgVerbatim>[\\@]("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"enddocbookonly"|"endmanonly"|"endrtfonly"|"enddot"|"endcode"|"f$"|"f]"|"f}")/[^a-z_A-Z0-9\-] { // end of verbatim block
+<CopyArgVerbatim>[\\@]("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"enddocbookonly"|"endmanonly"|"endrtfonly"|"enddot"|"endcode"|"f$"|"f]"|"f}"|"f)")/[^a-z_A-Z0-9\-] { // end of verbatim block
yyextra->fullArgString+=yytext;
if (yytext[1]=='f') // end of formula
{
@@ -6531,7 +6535,7 @@ NONLopt [^\n]*
<DocBlock>({CMD}{CMD}){ID}/[^a-z_A-Z0-9] { // escaped command
yyextra->docBlock << yytext;
}
-<DocBlock>{CMD}("f$"|"f["|"f{") {
+<DocBlock>{CMD}("f$"|"f["|"f{"|"f(") {
yyextra->docBlock << yytext;
yyextra->docBlockName=&yytext[1];
if (yyextra->docBlockName.at(1)=='{')
@@ -6613,7 +6617,7 @@ NONLopt [^\n]*
BEGIN(DocBlock);
}
}
-<DocCopyBlock>[\\@]("f$"|"f]"|"f}") {
+<DocCopyBlock>[\\@]("f$"|"f]"|"f}"|"f)") {
yyextra->docBlock << yytext;
BEGIN(DocBlock);
}