ImproveMathEquationEditor/BaselineAlignmentEquations/WorkInProgress/2ndMeeting log

Back to Work in progress

[10:43] * Now talking on #ooo-math

[10:43] hello Thomas :)

[10:44] I was adding informations on the wiki

[10:44] Hi Eric!

[10:44] http://wiki.services.openoffice.org/wiki/Education_Project/Effort/Math_baseline_alignment/Debuging_starmath

[10:44] It happens that I have to wait for the compiler. And a rather long time too. Thus I thought it to be a good idea to talk with you now. ^_-

[10:45] ok, then I'll do a little point about the situation

[10:45] fine.

[10:45] I have tried to put everything there : http://wiki.services.openoffice.org/wiki/Education_Project/Effort/Math_baseline_alignment

[10:45] + http://eric.bachard.free.fr/Education/february2008/starmath/

[10:46] I tested several cases, and I traced a bit

[10:46] but some recent important changes have slow down my work :

[10:46] I see you have already enabled those lines to debug alignment issues.

[10:46] yes, I did

[10:46] No problem. We already agreed not to be in a hurry.

[10:46] sb71 forced me to adapt the code to linkoo

[10:47] and I just completed this morning

[10:47] ok

[10:47] now, any student has just to read, he should understand all the steps

[10:47] another problem was breakpoints

[10:47] I was probably not handy, but now I can stop where I want

[10:47] Actually are you willing to mentor a student on your own?

[10:47] and I can compare logs too

[10:48] I ask because...

[10:48] the idea is mentor students yes

[10:48] I got interested schools ( SupInfo Paris e.g. )

[10:48] My last Goggle summer of code student, a she, asked if we had any small programming tasks she might take care off.

[10:49] And I discussed with MBA but we do currently not have the time schedule to assign a mentor to her.

[10:49] I understand

[10:49] But if you are willing I would ask her if she likes to work on Math with you.

[10:50] well, I'm not a profesional, but I'm interested

[10:50] thanks for proposing me the task :)

[10:50] Ok then I drop you her e-mail address right here so you will know if it is her who contact you.

[10:51] FYI, I do propose other tasks : http://wiki.services.openoffice.org/wiki/Education_Project/Effort

[10:51] I know Thorsten will help for canvas e.g.

[10:51] Ok.

[10:51] Her name is Lili Sun and the e-mail is: sunny 

[10:52] ok, then I'm waiting for your introduction :)

[10:52] I will write her a mail right after this meeting here and give her your e-mail address as well. Is that fine with you?

[10:52] it is fine with me

[10:52] thanks !

[10:52] back to the code

[10:52] You need to be aware though that she is living in California. Thus there will be a huge difference in the timezones.

[10:52] ok

[10:53] ok, noticed. If ever I can attend WWDC, I maybe could met her for true then :)

[10:53] debugging a bit, I have noticed all Arrange methods

[10:54] not all are interesting, since only vertical move is important here ( if I'm not too wrong )

[10:54] my current work is to analyze all of them, and descrbe what is done

[10:54] Basically you are correct.

[10:54] everything is there :

[10:54] http://wiki.services.openoffice.org/wiki/Education_Project/Effort/Math_baseline_alignment/Debuging_starmath/Arrange%28%29_methods_list

[10:55] what is not yet clear for me, is all the operations: I need to trace a lot to visualize more what happens

[10:55] and once everything will become more clear, I think I'll rewrite corresponding algorithms, to see whether

[10:56] -something is wrong

[10:56] ok.

[10:56] - factorization is possible or whatever else

[10:56] and then I'll try a new solution

[10:56] Without claim to completeness the only nodes I'm right away aware that need to be changed are

[10:57] SmBinHorNode (over), SmTableNode (matrix) and whatever node is used for the 'stack' command.

[10:58] And SmMatrixNode  ( I see to have it confused with SmTableNode)

[10:58] ok, thanks for the information: I'll analize them in priority

[10:59] if you have time, I did some tests

[10:59] http://eric.bachard.free.fr/Education/february2008/starmath/tested_cases/

[10:59] and i have written a little calc sheet for those case, including comments : http://eric.bachard.free.fr/Education/february2008/starmath/issue972/issue972_possible_cases.ods

[11:00] last but not least, I'll try to log everything important, for archive reasons

[11:00] that's all for the current status :)

[11:01] OK. That*s great so far. You seem to have put a lot of work into it.

[11:01] thanks. But the most important has to be done

[11:01] because of the coming FOSDEM, I'll try to work this week, but I'lll do more next week

[11:02] Plesae have a look in parse.cxx

[11:02] I did too. Sorry I forgot to mention it

[11:02] Yes?

[11:02] ok.

[11:02] in fact, I add comment in the code, and I do a diff from time to time

[11:03] ok.

[11:03] what is difficult to manage, is all the magic values

[11:03] and the mix between text lmayouting and formulas arrangements

[11:03] Which ones?

[11:04] I have no good example yet, but I discovered some strange effects

[11:04] yes?

[11:04] e.g. when inserting greek symbols, and toggling  Text mode / not text mode

[11:05] the case I have in mind is when inserting a breakpoint in parse.cxx:398

[11:05] and :

[11:05] First try:

[11:05] type an equation containing a^2 + b^2, exit formula ( ESC twice ) then enter the word "text"

[11:05] then create a new equation containing  %tau a^2 + b^2 and notice the difference.

[11:05] First breakpoint: parse.cxx:398

[11:05] When entering whatever letter, you hit a breakpoint. Just trace after it, and compare the two equations (e.g.)

[11:05] Entering  %tau a^2 + b^2, you'll see the line starmath/source/parse.cxx:770

[11:07] as a summary, I'm searching the existing rules for equation writting. Does a documentation exist about that ?

[11:08] There is the online help and there are some faqs on the OOo website, I think about 3 or so. That would be all.

[11:08] ok

[11:08] Aside from that it would just be looking at the parser.

[11:08] I will search for the faqs and drop you the links.

[11:08] ok, thanks a lot

[11:09] In parse.cxx please look at the definition of

[11:09] static const SmTokenTableEntry aTokenTable[] = ...

[11:09] You'll see a lengthy array declarartion

[11:09] I know that part

[11:10] and I already analyzed some other functions/method

[11:10] methods

[11:10] e.g. GetTokenTableEntry

[11:10] Please also mind the out-commented parts (they are just handled at a different part now)...

[11:10] I'll do

[11:10] All of the listed strings there build the complete set of commands etc.

[11:11] that's what I have understood. thanks for confirming it :)

[11:11] and to be honest, I already played with the code, because I'd like to add two new symbols :  |->   and <-|

[11:12] mathematicians ask for them, and they are not in the list

[11:12] Thus if you want to find out FOR SURE which Arrange methods you need to change

[11:12] You have to make a sample for each of it (actually you can put them all in the same math formula) and check in the debugger if at the end of the respective Arrange function the

[11:12] member bHasBaseline is set.

[11:14] Only those functions where that member is not yet set to true (and thus nBaseline has no proper value) you need to change that Arrange function to calculate a value for nBaseline and then set bHasBaseline to true.

[11:14] Having done so all Nodes should then have a baseline that could be used and passed via API.

[11:15] In all the number of Nodes should surely be less than 10 maybe only 5.

[11:15] But the problem is to find out which ones are still missing aside from the above mentioned 3 nodes.

[11:16] indeed. and I think repeat and repeat traces can help to "visualize"

[11:16] Yes. But you thern need only to visuaÃ¶ize those nodes where the baseline is not yet set.

[11:17] exactly. But the number of operations, just changing a letter is impressive, and the size of objects is important, and repeat will help me :)

[11:18] well, I think I have enough information for a lot of time, and I know your time is precious

[11:18] Ok.

[11:19] if you agree, I'll add the log of the discussion in the archives too

[11:19] no problem.

[11:19] Just one more hint though

[11:19] yes

[11:20] If you write a debugg function like

[11:20] void test_baseline

[11:20] {

[11:20]   if (!bHasBaseline)

[11:20] {

[11:20] int i = 0;

[11:20] }

[11:20] }

[11:21] And add calls to that function atz the very end of each Arrange function yxou can then set a breakpoint in the line

[11:22] int i = 0 (or some similar line)

[11:22] And thus have the debugger find out all missing nodes and only those very easily if your test case covers all of the

[11:22] parser commands.

[11:22] this is a very good idea ! I'll try to use it

[11:22] Thus about the main task will be to write down the test case with all those parser commands.

[11:23] Ok. That*s all from my side.

[11:23] great Then thanks again for your presence, and see you later !

[11:24] No problem. After all you are much appreciated for dealing with this problewm. ^_^

[11:24] Ok. Bye!

[11:24] bye :-)

[11:25] * tl13 (n=chatzill@nat/sun/x-0a59d7ccae06ad0a) has left #ooo-math