On 08/10/2009 02:03 PM, Manoj Rajagopalan wrote:
Thanks, Richard and Vincent.
For a long time I've wished for a LaTeX rendering widget in Qt. I do a lot of
scientific computing and I'd like my GUI's to contain label widgets that
display greek symbols etc. and what better way to do this than to have a
constructor that interprets a subset of latex commands. Eg:
QLaTeXLabel *label = new QLaTeXLabel(this, QString("\frac{E}
{\hbar\omega}"));
I'm not sure, but I'd suspect that nothing like this is terribly likely
to come directly out of the LyX code. Math insets are complex entities.
Each character is, in fact, in its own inset; \frac generates an inset;
so does \hbar. So there are several insets buried in LyX's
representation of that simple bit of LaTeX. So this will get painted via
a long recursion through various things like InsetMathFrac::draw().
That said, what about doing something like instant preview? That would
give you a little picture.
Someone probably raised this issue a while ago on the LyX list and one of the
developers replied that separating the lyx code to this would be a huge
amount of work. I've been spending some of my spare time investigating if I
could do this. For this I need to know how 'commands' (or macros, lyx
parlance) are converted to glyphs which are rendered on the screen.
My guess is there should be a fontmap somewhere that maps latex symbols to the
glyphs to be printed and this info should be read sometime after the call to
Cursor::macroModeClose(). Latex has an elaborate font-map setup for this.
Does LyX simply read the latex setup to infer this fontmap or does it come
canned with its own map? Where is all this information initialized?
See the lib/symbols file. This maps things like \omega to a font (cmm)
and a codepoint, and does other stuff too. It gets read in the
initSymbols() routine in MathFactory.cpp.
rh