23-årig dansker koder ny formel-editor til LibreOffice 3.3
Da kontorpakken LibreOffice tidligere på ugen blev lanceret i den første færdige udgave, var det med et tydeligt fingeraftryk fra den 23-årige danske studerende Jonas Finnemann Jensen.
Han læser til daglig datalogi på Aalborg Universitet og har haft fingrene nede i de cirka 25.000 linjer C++-kode til LibreOffices indbyggede formel-editor, som han har gjort langt mere brugervenlig end tidligere.
Formel-editoren LibreOffice Math er pendanten til den indbyggede formel-editor i Microsofts Office-pakke, der gør det muligt at skrive matematiske formler i for eksempel Word-dokumenter.
LibreOffice Math er nedarvet fra OpenOffice.org-projektet, som LibreOffice også udspringer fra.
Men mens Microsofts formel-editor viser formlen og lader brugeren redigere direkte i den efter WYSIWYG-princippet - What You See Is What You Get - har LibreOffice Math indtil nu overladt brugeren til formatteringskoder med krølleparenteser og underlige forkortelser under selve redigeringen af formlen.
Dermed har for eksempel gymnasieeleven, der skriver matematikopgave, skullet skrive formatteringskoden sqrt{x^2+1} for at skrive udtrykket 'kvadratroden af x i anden potens plus 1'.
»Det største problem har været, at man skulle skrive formatteringskoder i stil med LaTeX (matematisk typesettingsprog, red.) for at skrive en formel i både LibreOffice og OpenOffice. Det er der mange brugere, der ikke kan finde ud af,« siger Jonas Finnemann Jensen til Version2.
Småændringer blev til stort indgreb
Jonas Finnemann Jensen fik fingrene i kildekoden til formel-editoren under Google-projektet for studerende, Google Summer of Code, i 2010.
Det var oprindeligt planen, at han blot skulle ordne et par småproblemer med indryk af formler.
»Affødt at mine egne erfaringer med, at folk hellere vil bruge MathType eller andre, lettere editorer frem for formel-editoren i OpenOffice og LibreOffice tænkte jeg 'hvorfor ikke lave en visuel formel-editor?',« fortæller Jonas Finnemann Jensen.
Det primære problem var at finde ud af, hvordan LibreOffice Math repræsenterer formler, når de vises i dokumentet.
Ideelt set ville formlen blot været repræsenteret som en liste af operatorer og operander, forklarer Jonas Finnemann Jensen.
Men han fandt frem til, at formlerne i LibreOffice Math opbygges som træer af operator-applikationer, hvor bladene er operatorer eller operander fra formlen.
»Det er et meget konkret syntakstræ, som slet ikke er designet til visuel formel-editering. For eksempel angiver det, at multiplikation er en stærkere operator end plus, og det er ikke nødvendigt at vide, fordi udtrykket aldrig skal evalueres,« siger han.
Det afgørende i Jonas Finnemann Jensens løsning er at holde styr på cursorens nuværende position og formel-elementerne umiddelbart til højre og venstre for, mens brugeren flytter cursoren rundt i formlen.
Derfor besøger han alle knuder i formlens træ og opbygger efterfølgende en graf, hvor knuderne repræsenterer cursor-placeringer, og hver knude har en højre og en venstre kant.
Tilsvarende når brugeren sletter eller tilføjer elementer i formlen, gemmes alle elementer i den pågældende linje i formlen i en midlertidig liste, hvorefter listen manipuleres, løbes igennem for nye knuder, der skal oprettes, og sættes tilbage i syntakstræet, hvorefter grafen genopbygges med nye cursorpositioner.
»Det er et lidt grimt kompromis, som til gengæld fungerer. Ind i mellem må man acceptere, at tingene ikke kan blive perfekte, men kun rimeligt gode, når man arbejder med legacy-kode, der er over 10 år gammel,« siger Jonas Finnemann Jensen.
Stadig ustabil
Jonas Finnemann Jensens forbedrede formel-editor kræver stadig noget arbejde, før den er helt stabil.
For eksempel er det ikke muligt at slette en nyoprettet linje eller et super- og subskript i en formel, og af samme grund er den indtil videre kun inkluderet som eksperimentel funktionalitet i LibreOffice.
Derfor har han heller ikke planer om at kaste sig over nye projekter for LibreOffice, da studierne ved siden af også skal passes.
»I første omgang er der nok at gøre med hensyn til formel-editoren,« siger Jonas Finnemann Jensen.
Formel-editoren kan afprøves ved at sætte flueben i 'Tools -> Options -> LibreOffice -> General -> Enable experimental (unstable) features' i LibreOffice.
Der kan læses mere om Jonas Finnemann Jensens metode på hans blog.
Kommentarer (8)
Det ser da lovende ud. Held og lykke til Jopsen med det - det er et projekt, som kan give mange brugere i studiealderen.
Som gammel LaTeX bruger kan jeg nemlig ikke selv se noget problem med den eksisterende formeleditor. :-)
Jeg tænkte også det samme. Man skal ikke skrive ret mange formler i et dokument før man bliver glad for at man kan kode det.
"Man skal ikke skrive ret mange formler..."
Det er faktisk det der er problemet med den eksisterende. Hvis man hører til den brugergruppe som kun sjældent skriver formler, har rutinen det med at ruste. Netop disse brugere vil garanteret juble nu.
Men det er da lige til at blive morgenglad af, at høre den slags nyheder :-).
Man skal ikke skrive ret mange formler i et dokument før man bliver glad for at man kan kode det.
Det er rigtigt, jeg kan også godt garantere at den gamle redigerings metode ikke kommer til at tage skade... :)
Der er mange erfarne brugere, som godt kan lide kommando brugerfladen. Men jeg er heller ikke i tvivl om at der findes en stor gruppe, der ikke har lyst til at lære kommandoer...
Som gammel LaTeX bruger kan jeg nemlig ikke selv se noget problem med den eksisterende formeleditor. :-)
Jeg kan ikke huske hvornår jeg sidst har set et formeltæt dokument, der ikke var skrevet i LaTeX.
Jeg har brugt OpenOffice på både Installatør og nu på HF og videre på Datalogisk ..
Jeg håber ikke der er ændret på af syntaxen .. elles ender med jeg må rode med LaTex ;-)
Hej Henrik - skulle du alligevel blive nødt til at kaste dig over LaTeX kan jeg anbefale MiKTeX - http://miktex.org/ ... det er ikke så svært endda. En bog som f.eks. LaTeX Companion er en god hjælp.

