JKQTMathtext: added several new symbols that were missing so far
Before Width: | Height: | Size: 675 B After Width: | Height: | Size: 872 B |
Before Width: | Height: | Size: 838 B After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 710 B After Width: | Height: | Size: 921 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 695 B After Width: | Height: | Size: 832 B |
Before Width: | Height: | Size: 647 B After Width: | Height: | Size: 756 B |
Before Width: | Height: | Size: 929 B After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 371 B After Width: | Height: | Size: 475 B |
Before Width: | Height: | Size: 461 B After Width: | Height: | Size: 671 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 615 B After Width: | Height: | Size: 717 B |
Before Width: | Height: | Size: 575 B After Width: | Height: | Size: 765 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1022 B After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 491 B After Width: | Height: | Size: 580 B |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 945 B After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 663 B After Width: | Height: | Size: 785 B |
After Width: | Height: | Size: 539 B |
After Width: | Height: | Size: 223 B |
After Width: | Height: | Size: 276 B |
Before Width: | Height: | Size: 707 B After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 305 B After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 324 B After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 514 B After Width: | Height: | Size: 1.7 KiB |
BIN
doc/images/jkqtmathtext/symbols/jkqtmathtext_symbols_bigodot.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 536 B After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 273 B |
Before Width: | Height: | Size: 347 B After Width: | Height: | Size: 1.6 KiB |
BIN
doc/images/jkqtmathtext/symbols/jkqtmathtext_symbols_dashv.png
Normal file
After Width: | Height: | Size: 179 B |
After Width: | Height: | Size: 592 B |
BIN
doc/images/jkqtmathtext/symbols/jkqtmathtext_symbols_ell.png
Normal file
After Width: | Height: | Size: 430 B |
Before Width: | Height: | Size: 659 B After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 512 B After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 412 B After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 496 B After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 667 B After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 999 B After Width: | Height: | Size: 1.7 KiB |
BIN
doc/images/jkqtmathtext/symbols/jkqtmathtext_symbols_lozenge.png
Normal file
After Width: | Height: | Size: 404 B |
Before Width: | Height: | Size: 735 B After Width: | Height: | Size: 1.1 KiB |
BIN
doc/images/jkqtmathtext/symbols/jkqtmathtext_symbols_mho.png
Normal file
After Width: | Height: | Size: 501 B |
Before Width: | Height: | Size: 501 B After Width: | Height: | Size: 837 B |
BIN
doc/images/jkqtmathtext/symbols/jkqtmathtext_symbols_models.png
Normal file
After Width: | Height: | Size: 187 B |
BIN
doc/images/jkqtmathtext/symbols/jkqtmathtext_symbols_nvdash.png
Normal file
After Width: | Height: | Size: 386 B |
Before Width: | Height: | Size: 836 B After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 772 B After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 622 B After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 337 B After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 423 B After Width: | Height: | Size: 1.6 KiB |
BIN
doc/images/jkqtmathtext/symbols/jkqtmathtext_symbols_vdash.png
Normal file
After Width: | Height: | Size: 186 B |
BIN
doc/images/jkqtmathtext/symbols/jkqtmathtext_symbols_vddash.png
Normal file
After Width: | Height: | Size: 191 B |
BIN
doc/images/jkqtmathtext/symbols/jkqtmathtext_symbols_vvdash.png
Normal file
After Width: | Height: | Size: 220 B |
BIN
doc/images/jkqtmathtext/symbols/jkqtmathtext_symbols_wp.png
Normal file
After Width: | Height: | Size: 575 B |
@ -321,6 +321,24 @@ bool JKQTMathTextSymbolNode::isSubSuperscriptBelowAboveSymbol(const QString &sym
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool JKQTMathTextSymbolNode::isExtendedWidthSymbol(const QString &symbolName)
|
||||||
|
{
|
||||||
|
fillSymbolTables();
|
||||||
|
if (symbols.contains(symbolName)) {
|
||||||
|
return has(symbols[symbolName].globalFlags, ExtendWidthInMathmode) || has(symbols[symbolName].globalFlags, SmallExtendWidthInMathmode);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
int JKQTMathTextSymbolNode::getSymbolLength(const QString &symbolName)
|
||||||
|
{
|
||||||
|
fillSymbolTables();
|
||||||
|
if (symbols.contains(symbolName)) {
|
||||||
|
return symbols[symbolName].props.value(MTFEStandard, symbols[symbolName].props.value(MTFEUnicode, SymbolProps())).symbol.size();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
JKQTMathTextSymbolNode::SymbolProps::SymbolProps():
|
JKQTMathTextSymbolNode::SymbolProps::SymbolProps():
|
||||||
@ -486,7 +504,7 @@ void JKQTMathTextSymbolNode::fillSymbolTables()
|
|||||||
symbols["o"]=SimpleTextSymbol(QChar(0xF8)).addHtml("ø");
|
symbols["o"]=SimpleTextSymbol(QChar(0xF8)).addHtml("ø");
|
||||||
symbols["O"]=SimpleTextSymbol(QChar(0xD8)).addHtml("Ø");
|
symbols["O"]=SimpleTextSymbol(QChar(0xD8)).addHtml("Ø");
|
||||||
{ auto s=UprightSymbolUnicode(QChar(0x212B)).addUprightStd(QChar(0xC5));
|
{ auto s=UprightSymbolUnicode(QChar(0x212B)).addUprightStd(QChar(0xC5));
|
||||||
symbols["Angstrom"]=s; symbols["Angstroem"]=s; }
|
symbols["Angstrom"]=s; symbols["angstrom"]=s; }
|
||||||
{ auto s=UnicodeSymbol(QChar(0x2136)).addHtml("ℶ");
|
{ auto s=UnicodeSymbol(QChar(0x2136)).addHtml("ℶ");
|
||||||
symbols["Beth"]=s; symbols["Bet"]=s; symbols["beth"]=s; symbols["bet"]=s; }
|
symbols["Beth"]=s; symbols["Bet"]=s; symbols["beth"]=s; symbols["bet"]=s; }
|
||||||
symbols["Box"]=UprightSymbolUnicode(QChar(0x25A1));
|
symbols["Box"]=UprightSymbolUnicode(QChar(0x25A1));
|
||||||
@ -516,7 +534,11 @@ void JKQTMathTextSymbolNode::fillSymbolTables()
|
|||||||
symbols["bullet"]=s; symbols["textbullet"]=s; }
|
symbols["bullet"]=s; symbols["textbullet"]=s; }
|
||||||
symbols["cdots"]=UnicodeSymbol(QChar(0x22EF)).addHtml("···").addStd(QString(3, QChar(0xB7)));
|
symbols["cdots"]=UnicodeSymbol(QChar(0x22EF)).addHtml("···").addStd(QString(3, QChar(0xB7)));
|
||||||
{ auto s=UnicodeSymbol(QChar(0x2103)).addUprightStd("°C").addUprightHtml("°C");
|
{ auto s=UnicodeSymbol(QChar(0x2103)).addUprightStd("°C").addUprightHtml("°C");
|
||||||
symbols["celsius"]=s; symbols["degC"]=s; }
|
symbols["celsius"]=s; symbols["degC"]=s; symbols["degreeCelsius"]=s; }
|
||||||
|
symbols["ell"]=UprightSymbolUnicode(QChar(0x2113), "ℓ");
|
||||||
|
symbols["wp"]=UprightSymbolUnicode(QChar(0x2118), "℘");
|
||||||
|
symbols["mho"]=UprightSymbolUnicode(QChar(0x2127), "℧");
|
||||||
|
symbols["lozenge"]=UprightSymbolUnicode(QChar(0x25CA), "◊");
|
||||||
symbols["cent"]=SimpleTextSymbol(QChar(0xA2), "¢");
|
symbols["cent"]=SimpleTextSymbol(QChar(0xA2), "¢");
|
||||||
symbols["checkmark"]=UprightSymbolStd(QChar(0x2713)).addUprightHtml("✓");
|
symbols["checkmark"]=UprightSymbolStd(QChar(0x2713)).addUprightHtml("✓");
|
||||||
symbols["circ"]=UprightSymbolStd(QChar(0x2218)).addUprightHtml("∘").addStd("o", ItalicOff,0.7, -0.25);
|
symbols["circ"]=UprightSymbolStd(QChar(0x2218)).addUprightHtml("∘").addStd("o", ItalicOff,0.7, -0.25);
|
||||||
@ -535,6 +557,7 @@ void JKQTMathTextSymbolNode::fillSymbolTables()
|
|||||||
{ auto s=SimpleTextSymbol(QChar(0x24), "$");
|
{ auto s=SimpleTextSymbol(QChar(0x24), "$");
|
||||||
symbols["dollar"]=s; symbols["$"]=s; }
|
symbols["dollar"]=s; symbols["$"]=s; }
|
||||||
symbols["dprime"]=UnicodeSymbol(QChar(0x2033)).addHtml("″").addStd("''");
|
symbols["dprime"]=UnicodeSymbol(QChar(0x2033)).addHtml("″").addStd("''");
|
||||||
|
symbols["complement"] = SymbolFullProps(SymbolProps("C", Upright|BoldOff), "C", Upright|BoldOff).addUnicode(QChar(0x2201), Upright|BoldOff);
|
||||||
symbols["ee"] = SymbolFullProps(SymbolProps("e", Upright|BoldOff), "e", Upright|BoldOff);
|
symbols["ee"] = SymbolFullProps(SymbolProps("e", Upright|BoldOff), "e", Upright|BoldOff);
|
||||||
{ auto s=UnicodeSymbol(QChar(0x2026)).addHtml("…").addWinSymbol(QChar(0xBC)).addStd("...");
|
{ auto s=UnicodeSymbol(QChar(0x2026)).addHtml("…").addWinSymbol(QChar(0xBC)).addStd("...");
|
||||||
symbols["ellipsis"]=s; symbols["dots"]=s; symbols["ldots"]=s; }
|
symbols["ellipsis"]=s; symbols["dots"]=s; symbols["ldots"]=s; }
|
||||||
@ -574,6 +597,8 @@ void JKQTMathTextSymbolNode::fillSymbolTables()
|
|||||||
symbols["pound"]=SimpleTextSymbol(QChar(0xA3), "£");
|
symbols["pound"]=SimpleTextSymbol(QChar(0xA3), "£");
|
||||||
symbols["pound"]=UnicodeSymbol(QChar(0x00A3));
|
symbols["pound"]=UnicodeSymbol(QChar(0x00A3));
|
||||||
symbols["prime"]=UnicodeSymbol(QChar(0x2032)).addHtml("′").addStd("'");
|
symbols["prime"]=UnicodeSymbol(QChar(0x2032)).addHtml("′").addStd("'");
|
||||||
|
symbols["arcminute"]=UnicodeSymbol(QChar(0x2032)).addHtml("′").addStd("'");
|
||||||
|
symbols["arcsecond"]=UnicodeSymbol(QChar(0x2033)).addHtml("&dprime;").addStd("'");
|
||||||
symbols["rangle"]=UprightSymbolUnicode(QChar(0x232A)).addWinSymbol(QChar(0xF1));
|
symbols["rangle"]=UprightSymbolUnicode(QChar(0x232A)).addWinSymbol(QChar(0xF1));
|
||||||
symbols["rceil"]=UprightSymbolUnicode(QChar(0x2309)).addHtml("⌉").addWinSymbol(QChar(0xF9));
|
symbols["rceil"]=UprightSymbolUnicode(QChar(0x2309)).addHtml("⌉").addWinSymbol(QChar(0xF9));
|
||||||
{ auto s=SimpleTextSymbol(QChar(0xAE), "®");
|
{ auto s=SimpleTextSymbol(QChar(0xAE), "®");
|
||||||
@ -618,45 +643,45 @@ void JKQTMathTextSymbolNode::fillSymbolTables()
|
|||||||
* STANDARD MathOperator Strings
|
* STANDARD MathOperator Strings
|
||||||
**************************************************************************************/
|
**************************************************************************************/
|
||||||
symbols["Pr"] = MathOperatorText("Pr");
|
symbols["Pr"] = MathOperatorText("Pr");
|
||||||
symbols["acos"] = MathOperatorText("acos").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["acos"] = MathOperatorText("acos");
|
||||||
symbols["arccos"] = MathOperatorText("arccos").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["arccos"] = MathOperatorText("arccos");
|
||||||
symbols["arcsin"] = MathOperatorText("arcsin").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["arcsin"] = MathOperatorText("arcsin");
|
||||||
symbols["arctan"] = MathOperatorText("arctan").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["arctan"] = MathOperatorText("arctan");
|
||||||
symbols["arg"] = MathOperatorText("arg").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["arg"] = MathOperatorText("arg").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
||||||
symbols["argmax"] = MathOperatorText("arg max", "arg max").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["argmax"] = MathOperatorText("arg max", "arg max").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
||||||
symbols["argmin"] = MathOperatorText("arg min", "arg min").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["argmin"] = MathOperatorText("arg min", "arg min").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
||||||
symbols["asin"] = MathOperatorText("asin").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["asin"] = MathOperatorText("asin");
|
||||||
symbols["atan"] = MathOperatorText("atan").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["atan"] = MathOperatorText("atan");
|
||||||
symbols["cos"] = MathOperatorText("cos").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["cos"] = MathOperatorText("cos");
|
||||||
symbols["cosh"] = MathOperatorText("cosh").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["cosh"] = MathOperatorText("cosh");
|
||||||
symbols["cot"] = MathOperatorText("cot").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["cot"] = MathOperatorText("cot");
|
||||||
symbols["coth"] = MathOperatorText("coth").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["coth"] = MathOperatorText("coth");
|
||||||
symbols["coth"] = MathOperatorText("coth").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["coth"] = MathOperatorText("coth");
|
||||||
symbols["deg"] = MathOperatorText("deg").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["deg"] = MathOperatorText("deg");
|
||||||
symbols["det"] = MathOperatorText("det").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["det"] = MathOperatorText("det");
|
||||||
symbols["dim"] = MathOperatorText("dim").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["dim"] = MathOperatorText("dim");
|
||||||
symbols["exp"] = MathOperatorText("exp").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["exp"] = MathOperatorText("exp");
|
||||||
symbols["gcd"] = MathOperatorText("gcd").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["gcd"] = MathOperatorText("gcd");
|
||||||
symbols["hom"] = MathOperatorText("hom").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["hom"] = MathOperatorText("hom");
|
||||||
symbols["ker"] = MathOperatorText("ker").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["ker"] = MathOperatorText("ker");
|
||||||
symbols["lb"] = MathOperatorText("lb").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["lb"] = MathOperatorText("lb");
|
||||||
symbols["ld"] = MathOperatorText("ld").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["ld"] = MathOperatorText("ld");
|
||||||
symbols["lim"] = MathOperatorText("lim").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["lim"] = MathOperatorText("lim").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
||||||
symbols["liminf"] = MathOperatorText("lim inf", "lim inf").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["liminf"] = MathOperatorText("lim inf", "lim inf").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
||||||
symbols["limsup"] = MathOperatorText("lim sup", "lim sup").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["limsup"] = MathOperatorText("lim sup", "lim sup").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
||||||
symbols["ln"] = MathOperatorText("ln").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["ln"] = MathOperatorText("ln");
|
||||||
symbols["log"] = MathOperatorText("log").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["log"] = MathOperatorText("log");
|
||||||
symbols["max"] = MathOperatorText("max").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["max"] = MathOperatorText("max").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
||||||
symbols["median"] = MathOperatorText("median").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["median"] = MathOperatorText("median");
|
||||||
symbols["min"] = MathOperatorText("min").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["min"] = MathOperatorText("min").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
||||||
symbols["mod"] = MathOperatorText("mod").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["mod"] = MathOperatorText("mod");
|
||||||
symbols["sec"] = MathOperatorText("sec").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["sec"] = MathOperatorText("sec");
|
||||||
symbols["sgn"] = MathOperatorText("sgn").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["sgn"] = MathOperatorText("sgn");
|
||||||
symbols["sign"] = MathOperatorText("sign").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["sign"] = MathOperatorText("sign");
|
||||||
symbols["sin"] = MathOperatorText("sin").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["sin"] = MathOperatorText("sin");
|
||||||
symbols["sinh"] = MathOperatorText("sinh").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["sinh"] = MathOperatorText("sinh");
|
||||||
symbols["tan"] = MathOperatorText("tan").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["tan"] = MathOperatorText("tan");
|
||||||
symbols["tanh"] = MathOperatorText("tanh").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["tanh"] = MathOperatorText("tanh");
|
||||||
|
|
||||||
/**************************************************************************************
|
/**************************************************************************************
|
||||||
* STANDARD MathOperator Symbols
|
* STANDARD MathOperator Symbols
|
||||||
@ -683,10 +708,16 @@ void JKQTMathTextSymbolNode::fillSymbolTables()
|
|||||||
symbols["bbR"]=MathOperatorSymbolUnicode(QChar(0x211D));
|
symbols["bbR"]=MathOperatorSymbolUnicode(QChar(0x211D));
|
||||||
symbols["bbZ"]=MathOperatorSymbolUnicode(QChar(0x2124));
|
symbols["bbZ"]=MathOperatorSymbolUnicode(QChar(0x2124));
|
||||||
symbols["because"]=MathOperatorSymbolUnicode(QChar(0x2235)).addMathOperatorHtml("∵");
|
symbols["because"]=MathOperatorSymbolUnicode(QChar(0x2235)).addMathOperatorHtml("∵");
|
||||||
symbols["bigcap"]=NarrowMathOperatorSymbolUnicode(QChar(0x22C2)).addMathOperatorHtml("∫").addMathOperatorWinSymbol(QChar(0xC7), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["bigcap"]=NarrowMathOperatorSymbolUnicode(QChar(0x22C2)).addMathOperatorHtml("⋂").addMathOperatorWinSymbol(QChar(0xC7), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
||||||
symbols["bigcup"]=NarrowMathOperatorSymbolUnicode(QChar(0x22C3)).addMathOperatorHtml("∫").addMathOperatorWinSymbol(QChar(0xC8), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["bigcup"]=NarrowMathOperatorSymbolUnicode(QChar(0x22C3)).addMathOperatorHtml("⋃").addMathOperatorWinSymbol(QChar(0xC8), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
||||||
symbols["bighat"]=NarrowMathOperatorSymbolUnicode(QChar(0x22C0)).addMathOperatorHtml("∫").addMathOperatorWinSymbol(QChar(0xD9), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
{ auto s=NarrowMathOperatorSymbolUnicode(QChar(0x22C0)).addMathOperatorHtml("⋀").addMathOperatorWinSymbol(QChar(0xD9), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
||||||
symbols["bigvee"]=NarrowMathOperatorSymbolUnicode(QChar(0x22C1)).addMathOperatorHtml("∫").addMathOperatorWinSymbol(QChar(0xDA), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
symbols["bigwedge"]=s; symbols["bighat"]=s; }
|
||||||
|
symbols["bigvee"]=NarrowMathOperatorSymbolUnicode(QChar(0x22C1)).addMathOperatorHtml("⋁").addMathOperatorWinSymbol(QChar(0xDA), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
||||||
|
symbols["bigotimes"]=NarrowMathOperatorSymbolUnicode(QChar(0x2A02)).addMathOperatorHtml("⨂").addMathOperatorWinSymbol(QChar(0xC4), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
||||||
|
symbols["bigoplus"]=NarrowMathOperatorSymbolUnicode(QChar(0x2A01)).addMathOperatorHtml("⨁").addMathOperatorWinSymbol(QChar(0xC5), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
||||||
|
symbols["bigodot"]=NarrowMathOperatorSymbolUnicode(QChar(0x2A00)).addMathOperatorHtml("⨀").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
||||||
|
symbols["biguplus"]=NarrowMathOperatorSymbolUnicode(QChar(0x2A04)).addMathOperatorHtml("⨄").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
||||||
|
symbols["bigsqcup"]=NarrowMathOperatorSymbolUnicode(QChar(0x2A06)).addMathOperatorHtml("⨆").addGlobalFlags(SubSuperscriptBelowAboveSymbol);
|
||||||
{ auto s=MathOperatorSymbolUnicode(QChar(0x22A5)).addMathOperatorHtml("⊥");
|
{ auto s=MathOperatorSymbolUnicode(QChar(0x22A5)).addMathOperatorHtml("⊥");
|
||||||
symbols["bot"]=s; symbols["perp"]=s; }
|
symbols["bot"]=s; symbols["perp"]=s; }
|
||||||
{ auto s=MathOperatorSymbolUnicode(QChar(0x2229)).addMathOperatorHtml("∩").addMathOperatorWinSymbol(QChar(0xC7));
|
{ auto s=MathOperatorSymbolUnicode(QChar(0x2229)).addMathOperatorHtml("∩").addMathOperatorWinSymbol(QChar(0xC7));
|
||||||
@ -792,6 +823,12 @@ void JKQTMathTextSymbolNode::fillSymbolTables()
|
|||||||
symbols["vartriangleleft"]=MathOperatorSymbolUnicode(QChar(0x22B2)).addMathOperatorHtml("⊲");
|
symbols["vartriangleleft"]=MathOperatorSymbolUnicode(QChar(0x22B2)).addMathOperatorHtml("⊲");
|
||||||
symbols["vdots"]=MathOperatorSymbolUnicode(QChar(0x22EE)).addMathOperatorHtml("⋮");
|
symbols["vdots"]=MathOperatorSymbolUnicode(QChar(0x22EE)).addMathOperatorHtml("⋮");
|
||||||
symbols["vee"]=MathOperatorSymbolUnicode(QChar(0x2228)).addMathOperatorHtml("∨").addMathOperatorWinSymbol(QChar(0xDA));
|
symbols["vee"]=MathOperatorSymbolUnicode(QChar(0x2228)).addMathOperatorHtml("∨").addMathOperatorWinSymbol(QChar(0xDA));
|
||||||
|
symbols["vdash"]=MathOperatorSymbolUnicode(QChar(0x22A2)).addMathOperatorHtml("⊢");
|
||||||
|
symbols["dashv"]=MathOperatorSymbolUnicode(QChar(0x22A3)).addMathOperatorHtml("⊣");
|
||||||
|
symbols["vDash"]=MathOperatorSymbolUnicode(QChar(0x22A8)).addMathOperatorHtml("⊨");
|
||||||
|
symbols["nvdash"]=MathOperatorSymbolUnicode(QChar(0x22AC)).addMathOperatorHtml("⊬");
|
||||||
|
symbols["Vdash"]=MathOperatorSymbolUnicode(QChar(0x22A9)).addMathOperatorHtml("⊩");
|
||||||
|
symbols["models"]=MathOperatorSymbolUnicode(QChar(0x22A7)).addMathOperatorHtml("⊧");
|
||||||
symbols["wedge"]=MathOperatorSymbolUnicode(QChar(0x2227)).addMathOperatorHtml("∧").addMathOperatorWinSymbol(QChar(0xD9));
|
symbols["wedge"]=MathOperatorSymbolUnicode(QChar(0x2227)).addMathOperatorHtml("∧").addMathOperatorWinSymbol(QChar(0xD9));
|
||||||
|
|
||||||
|
|
||||||
|
@ -85,8 +85,12 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextSymbolNode: public JKQTMathTextNode {
|
|||||||
static bool hasSymbol(const QString& symbolName);
|
static bool hasSymbol(const QString& symbolName);
|
||||||
/** \brief return a list of all defined symbols */
|
/** \brief return a list of all defined symbols */
|
||||||
static QStringList getSymbols();
|
static QStringList getSymbols();
|
||||||
/** \brief checks whether the given symbol name can be prepresented by this type of node */
|
/** \brief checks whether the given symbol name codes for an instruction that has SymbolFullProps::SubSuperscriptBelowAboveSymbol , i.e. JKQTMathTextNode::isSubSuperscriptAboveBelowNode() \c ==true */
|
||||||
static bool isSubSuperscriptBelowAboveSymbol(const QString& symbolName);
|
static bool isSubSuperscriptBelowAboveSymbol(const QString& symbolName);
|
||||||
|
/** \brief checks whether the given symbol has global flags SymbolFullProps::ExtendWidthInMathmode or SymbolFullProps::SmallExtendWidthInMathmode defined */
|
||||||
|
static bool isExtendedWidthSymbol(const QString& symbolName);
|
||||||
|
/** \brief returns the length of the symbol string for the given symbol */
|
||||||
|
static int getSymbolLength(const QString& symbolName);
|
||||||
protected:
|
protected:
|
||||||
/** \copydoc JKQTMathTextNode::getSizeInternal() */
|
/** \copydoc JKQTMathTextNode::getSizeInternal() */
|
||||||
virtual void getSizeInternal(QPainter& painter, JKQTMathTextEnvironment currentEv, double& width, double& baselineHeight, double& overallHeight, double& strikeoutPos, const JKQTMathTextNodeSize* prevNodeSize=nullptr) override;
|
virtual void getSizeInternal(QPainter& painter, JKQTMathTextEnvironment currentEv, double& width, double& baselineHeight, double& overallHeight, double& strikeoutPos, const JKQTMathTextNodeSize* prevNodeSize=nullptr) override;
|
||||||
|
@ -126,27 +126,37 @@ int main(int argc, char* argv[])
|
|||||||
QFile fileListF(outputDir.absoluteFilePath(listsymbols));
|
QFile fileListF(outputDir.absoluteFilePath(listsymbols));
|
||||||
if (fileListF.open(QFile::WriteOnly|QFile::Text)) {
|
if (fileListF.open(QFile::WriteOnly|QFile::Text)) {
|
||||||
QTextStream fileList(&fileListF);
|
QTextStream fileList(&fileListF);
|
||||||
QStringList symbols=JKQTMathTextSymbolNode::getSymbols();
|
QStringList symbolsAll=JKQTMathTextSymbolNode::getSymbols();
|
||||||
std::sort(symbols.begin(), symbols.end(), [](const QString& a, const QString& b) { const QString al=a.toLower(); const QString bl=b.toLower(); if (al==bl) { return a<b; } else return al<bl; });
|
QSet<QString> symbolsRemaining(symbolsAll.begin(), symbolsAll.end());
|
||||||
|
std::sort(symbolsAll.begin(), symbolsAll.end(), [](const QString& a, const QString& b) { const QString al=a.toLower(); const QString bl=b.toLower(); if (al==bl) { return a<b; } else return al<bl; });
|
||||||
static QStringList greekLetterNames=QStringList()<<"alpha"<<"beta"<<"gamma"<<"delta"<<"epsilon"<<"zeta"<<"eta"<<"theta"<<"iota"<<"kappa"<<"lambda"<<"mu"<<"nu"<<"xi"<<"pi"<<"rho"<<"sigma"<<"tau"<<"upsilon"<<"phi"<<"chi"<<"psi"<<"omega";
|
static QStringList greekLetterNames=QStringList()<<"alpha"<<"beta"<<"gamma"<<"delta"<<"epsilon"<<"zeta"<<"eta"<<"theta"<<"iota"<<"kappa"<<"lambda"<<"mu"<<"nu"<<"xi"<<"pi"<<"rho"<<"sigma"<<"tau"<<"upsilon"<<"phi"<<"chi"<<"psi"<<"omega";
|
||||||
static QStringList arrowNames=QStringList()<<"arrow"<<"harpoon"<<"mapsto";
|
static QStringList arrowNames=QStringList()<<"arrow"<<"harpoon"<<"mapsto";
|
||||||
int i=1;
|
int i=1;
|
||||||
fileList<<"/*!\n"
|
fileList<<"/*!\n"
|
||||||
" \\defgroup jkqtmathtext_supportedlatexsymbols Supported LaTeX-Symbols\n"
|
" \\defgroup jkqtmathtext_supportedlatexsymbols Supported LaTeX-Symbols\n"
|
||||||
" \\ingroup jkqtmathtext_general\n\n";
|
" \\ingroup jkqtmathtext_general\n\n\\tableofcontents\n\n";
|
||||||
|
fileList<<" \\section jkqtmathtext_supportedlatexsymbols_greek Greek Letters\n";
|
||||||
fileList<<" The following table lists all greek letters and their variants available in JKQTMathParser. They are defined in the node-class JKQTMathTextSymbolNode:\n";
|
fileList<<" The following table lists all greek letters and their variants available in JKQTMathParser. They are defined in the node-class JKQTMathTextSymbolNode:\n";
|
||||||
fileList<<" <table>\n";
|
fileList<<" <table>\n";
|
||||||
fileList<<" <tr>\n";
|
fileList<<" <tr>\n";
|
||||||
for (const QString& gletter: greekLetterNames) {
|
for (const QString& gletter: greekLetterNames) {
|
||||||
QString code="";
|
QString code="";
|
||||||
for (const QString& symbol: symbols) {
|
for (const QString& symbol: symbolsAll) {
|
||||||
if (symbol.size()>0 && (symbol.toLower()==gletter || symbol.toLower()=="var"+gletter) && symbol[0].isLetter()) {
|
if (symbol.size()>0 && (symbol.toLower()==gletter || symbol.toLower()=="var"+gletter) && symbol[0].isLetter()) {
|
||||||
code+="\\"+symbol+"\\;";
|
code+="\\"+symbol+"\\;";
|
||||||
|
symbolsRemaining.remove(symbol);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (const QString& symbol: symbols) {
|
for (const QString& symbol: symbolsAll) {
|
||||||
if (symbol.size()>0 && (symbol.toLower()=="up"+gletter || symbol.toLower()=="upvar"+gletter) && symbol[0].isLetter()) {
|
if (symbol.size()>0 && (symbol.toLower()=="up"+gletter || symbol.toLower()=="upvar"+gletter) && symbol[0].isLetter()) {
|
||||||
code+="\\"+symbol+"\\;";
|
code+="\\"+symbol+"\\;";
|
||||||
|
symbolsRemaining.remove(symbol);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (const QString& symbol: symbolsAll) {
|
||||||
|
if (symbol.size()>0 && (symbol.toLower()=="text"+gletter || symbol.toLower()=="textvar"+gletter) && symbol[0].isLetter()) {
|
||||||
|
code+="\\"+symbol+"\\;";
|
||||||
|
symbolsRemaining.remove(symbol);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
QString symbol_lower;
|
QString symbol_lower;
|
||||||
@ -158,25 +168,33 @@ int main(int argc, char* argv[])
|
|||||||
outputFilename.append("jkqtmathtext_greek_"+symbol_lower+".png");
|
outputFilename.append("jkqtmathtext_greek_"+symbol_lower+".png");
|
||||||
cmdoptions.append(QMap<QString,QString>());
|
cmdoptions.append(QMap<QString,QString>());
|
||||||
//std::cout<<" - "<<latex.last().toStdString()<<": "<<outputFilename.last().toStdString()<<"\n";
|
//std::cout<<" - "<<latex.last().toStdString()<<": "<<outputFilename.last().toStdString()<<"\n";
|
||||||
code=code.replace("\\;", "");
|
code=code.replace("\\;", " ");
|
||||||
code=code.replace("\\", "\\\\");
|
code=code.replace("\\", "\\\\");
|
||||||
fileList<<" <td><code>"<<code<<"</code>:\n <td> \\image html jkqtmathtext/symbols/"<<outputFilename.last()<<"\n";
|
fileList<<" <td><code>"<<code<<"</code>:\n <td> \\image html jkqtmathtext/symbols/"<<outputFilename.last()<<"\n";
|
||||||
if (i%2==0) {
|
//if (i%2==0) {
|
||||||
fileList<<" </tr>\n <tr>\n";
|
fileList<<" </tr>\n <tr>\n";
|
||||||
}
|
//}
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
fileList<<" </tr>";
|
fileList<<" </tr>";
|
||||||
fileList<<" </table>\n\n\n";
|
fileList<<" </table>\n\n\n";
|
||||||
|
|
||||||
|
|
||||||
|
fileList<<" \\section jkqtmathtext_supportedlatexsymbols_arrows Arrows\n";
|
||||||
fileList<<" The following table lists all arrow-typed symbols available in JKQTMathParser. They are defined in the node-class JKQTMathTextSymbolNode:\n";
|
fileList<<" The following table lists all arrow-typed symbols available in JKQTMathParser. They are defined in the node-class JKQTMathTextSymbolNode:\n";
|
||||||
fileList<<" <table>\n";
|
fileList<<" <table>\n";
|
||||||
fileList<<" <tr>\n";
|
fileList<<" <tr>\n";
|
||||||
|
i=1;
|
||||||
|
std::sort(symbolsAll.begin(), symbolsAll.end(), [](const QString& a, const QString& b) { if (a.contains("harpoon") && !b.contains("harpoon")) return false;
|
||||||
|
else if (a.isLower() && b.isUpper()) return true;
|
||||||
|
else if (a.isUpper() && b.isLower()) return false;
|
||||||
|
else return a<b;
|
||||||
|
});
|
||||||
for (const QString& arrow: arrowNames) {
|
for (const QString& arrow: arrowNames) {
|
||||||
QString code="";
|
QString code="";
|
||||||
for (const QString& symbol: symbols) {
|
for (const QString& symbol: symbolsAll) {
|
||||||
if (symbol.size()>0 && symbol.toLower().contains(arrow) && symbol[0].isLetter()) {
|
if (symbol.size()>0 && symbol.toLower().contains(arrow) && symbol[0].isLetter()) {
|
||||||
|
symbolsRemaining.remove(symbol);
|
||||||
QString symbol_lower;
|
QString symbol_lower;
|
||||||
for (const QChar& ch: symbol) {
|
for (const QChar& ch: symbol) {
|
||||||
if (ch.isUpper()) symbol_lower+=QString(2, ch).toLower();
|
if (ch.isUpper()) symbol_lower+=QString(2, ch).toLower();
|
||||||
@ -196,24 +214,85 @@ int main(int argc, char* argv[])
|
|||||||
fileList<<" </tr>";
|
fileList<<" </tr>";
|
||||||
fileList<<" </table>\n\n\n";
|
fileList<<" </table>\n\n\n";
|
||||||
|
|
||||||
|
std::sort(symbolsAll.begin(), symbolsAll.end(), [](const QString& a, const QString& b) { const QString al=a.toLower(); const QString bl=b.toLower(); if (al==bl) { return a<b; } else return al<bl; });
|
||||||
|
fileList<<" \\section jkqtmathtext_supportedlatexsymbols_bigmathop Big Math Operators\n";
|
||||||
|
fileList<<" The following table lists all math-operator symbols like \\c \\\\sum,\\\\int,\\\\lim... that allow to over/underset sub-/superscript using \\c \\\\limits (and \\c \\\\nolimits ) available in JKQTMathParser. They are defined in the node-class JKQTMathTextSymbolNode:\n";
|
||||||
|
fileList<<" <table>\n";
|
||||||
|
fileList<<" <tr>\n";
|
||||||
|
i=1;
|
||||||
|
{
|
||||||
|
QString code="";
|
||||||
|
for (const QString& symbol: symbolsAll) {
|
||||||
|
if (symbol.size()>0 && JKQTMathTextSymbolNode::isSubSuperscriptBelowAboveSymbol(symbol) && symbol[0].isLetter()) {
|
||||||
|
symbolsRemaining.remove(symbol);
|
||||||
|
QString symbol_lower;
|
||||||
|
for (const QChar& ch: symbol) {
|
||||||
|
if (ch.isUpper()) symbol_lower+=QString(2, ch).toLower();
|
||||||
|
else symbol_lower+=ch;
|
||||||
|
}
|
||||||
|
latex.append("$\\"+symbol+"\\limits_{x=0}^\\infty$\\vphantom{Iq}");
|
||||||
|
outputFilename.append("jkqtmathtext_symbols_"+symbol_lower+".png");
|
||||||
|
cmdoptions.append(QMap<QString,QString>());
|
||||||
|
fileList<<" <td><code>\\\\"<<symbol<<"</code>:\n <td> \\image html jkqtmathtext/symbols/"<<outputFilename.last()<<"\n";
|
||||||
|
if (i%3==0) {
|
||||||
|
fileList<<" </tr>\n <tr>\n";
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fileList<<" </tr>";
|
||||||
|
fileList<<" </table>\n\n\n";
|
||||||
|
|
||||||
|
|
||||||
|
fileList<<" \\section jkqtmathtext_supportedlatexsymbols_mathop Other Math Operators\n";
|
||||||
|
fileList<<" The following table lists all remaining math-operator symbols like available in JKQTMathParser. They are defined in the node-class JKQTMathTextSymbolNode:\n";
|
||||||
|
fileList<<" <table>\n";
|
||||||
|
fileList<<" <tr>\n";
|
||||||
|
i=1;
|
||||||
|
{
|
||||||
|
QString code="";
|
||||||
|
for (const QString& symbol: symbolsAll) {
|
||||||
|
if (symbol.size()>0 && JKQTMathTextSymbolNode::isSubSuperscriptBelowAboveSymbol(symbol) && symbol[0].isLetter()) {
|
||||||
|
symbolsRemaining.remove(symbol);
|
||||||
|
QString symbol_lower;
|
||||||
|
for (const QChar& ch: symbol) {
|
||||||
|
if (ch.isUpper()) symbol_lower+=QString(2, ch).toLower();
|
||||||
|
else symbol_lower+=ch;
|
||||||
|
}
|
||||||
|
static QSet<QString> specialSymbols=QSet<QString>()<<"lim"<<"liminf"<<"limsup"<<"arg"<<"argmin"<<"argmax";
|
||||||
|
if (JKQTMathTextSymbolNode::getSymbolLength(symbol)>1 && !specialSymbols.contains(symbol)) {
|
||||||
|
latex.append("$\\"+symbol+"(\\cdot)$\\vphantom{Iq}");
|
||||||
|
} else {
|
||||||
|
if (JKQTMathTextSymbolNode::getSymbolLength(symbol)>1) {
|
||||||
|
latex.append("$\\"+symbol+"\\limits_{x\\rightarrow\\infty}f(x)$\\vphantom{Iq}");
|
||||||
|
} else {
|
||||||
|
latex.append("$\\"+symbol+"\\limits_{x=0}^\\infty$\\vphantom{Iq}f(x)");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
outputFilename.append("jkqtmathtext_symbols_"+symbol_lower+".png");
|
||||||
|
cmdoptions.append(QMap<QString,QString>());
|
||||||
|
fileList<<" <td><code>\\\\"<<symbol<<"</code>:\n <td> \\image html jkqtmathtext/symbols/"<<outputFilename.last()<<"\n";
|
||||||
|
if (i%3==0) {
|
||||||
|
fileList<<" </tr>\n <tr>\n";
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fileList<<" </tr>";
|
||||||
|
fileList<<" </table>\n\n\n";
|
||||||
|
|
||||||
|
|
||||||
|
fileList<<" \\section jkqtmathtext_supportedlatexsymbols_other Other Symbols\n";
|
||||||
fileList<<" The following table lists all other symbols that are available in JKQTMathParser. They are defined in the node-class JKQTMathTextSymbolNode:\n";
|
fileList<<" The following table lists all other symbols that are available in JKQTMathParser. They are defined in the node-class JKQTMathTextSymbolNode:\n";
|
||||||
fileList<<" <table>\n";
|
fileList<<" <table>\n";
|
||||||
fileList<<" <tr>\n";
|
fileList<<" <tr>\n";
|
||||||
i=1;
|
i=1;
|
||||||
for (const QString& symbol: symbols) {
|
QStringList symbolsRemainingL=QStringList(symbolsRemaining.begin(), symbolsRemaining.end());
|
||||||
bool alreadythere=false;
|
std::sort(symbolsRemainingL.begin(), symbolsRemainingL.end(), [](const QString& a, const QString& b) { const QString al=a.toLower(); const QString bl=b.toLower(); if (al==bl) { return a<b; } else return al<bl; });
|
||||||
for (const QString& gletter: greekLetterNames) {
|
for (const QString& symbol: symbolsRemainingL) {
|
||||||
if (symbol.toLower().endsWith(gletter)) {
|
if (symbol.size()>0 && symbol[0].isLetter()) {
|
||||||
alreadythere=true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (const QString& gletter: arrowNames) {
|
|
||||||
if (symbol.toLower().contains(gletter)) {
|
|
||||||
alreadythere=true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!alreadythere && symbol.size()>0 && symbol[0].isLetter()) {
|
|
||||||
QString symbol_lower;
|
QString symbol_lower;
|
||||||
for (const QChar& ch: symbol) {
|
for (const QChar& ch: symbol) {
|
||||||
if (ch.isUpper()) symbol_lower+=QString(2, ch).toLower();
|
if (ch.isUpper()) symbol_lower+=QString(2, ch).toLower();
|
||||||
|