fredag den 30. december 2016

Årskalender 2017

Godt nytår til alle læsere af nyhedsbrevet.

Igen i år har Eliane Domingos fra det brasilianske fællesskab lavet en rigtig flot kalender. Jeg har oversat den til dansk og du er velkommen til at downloade og udskrive kalenderen.

Det er også meningen at den skal bruges til at dele ud reklame for LibreOffice.


https://dl.dropboxusercontent.com/u/9348527/Kalender2017.odg
https://dl.dropboxusercontent.com/u/9348527/Kalender2017.pdf
https://dl.dropboxusercontent.com/u/9348527/Kalender2017.gif

mandag den 26. december 2016

Hjælpen i LibreOffice

LibreOffice har en omfattende indbygget hjælp, som normalt installeres sammen med programmet. Hjælpen kan aktiveres ved at trykke på F1, vælge Hjælp - LibreOffice hjælp eller ved at klikke på ?-ikonet i en dialog.


Hele hjælpen findes også on-line her: https://help.libreoffice.org/Main_Page/da.



Hjælpen er opdelt i logiske afsnit:
  • LibreOffice Writer (tekstbehandling)
  • LibreOffice Calc (regneark)
  • LibreOffice Impress (præsentationer)
  • LibreOffice Draw (tegninger)
  • LibreOffice Base (database)
  • LibreOffice Math (formelredigering)
  • LibreOffice Basic (programmering med Basic)
Men du kan i den lokale version benytte det indbyggede stikordsregister eller søge efter tekst. Samtidig er det muligt for dig at lave bogmærker på sider som du forventer at skulle vende tilbage til.

Hjælpen består af omkring 460.000 ord, og alt bliver oversat til dansk. Det er ikke usædvanligt at vi for hver version skal behandle eller oversætte omkring 20-30.000 ord. Til sammenligning består brugergrænsefladen 'kun' af omkring 100.000 ord.

Emnerne i hjælpen spænder vidt. Der er forklaringer til alt fra typografier i tekstbehandling ( https://help.libreoffice.org/Writer/Creating_New_Styles_From_Selections/da ) over sub-procedurer ( https://help.libreoffice.org/Basic/Basics/da#Hvad_er_en_Function.3F ) i makroer til beskrivelser af komplicerede statistiske formler ( https://help.libreoffice.org/Calc/Add-in_Functions,_List_of_Analysis_Functions_Part_Two/da#IMAGARGUMENT_.28IMARGUMENT_p.C3.A5_engelsk.29 ).

Det giver af og til nogle udfordringer, fordi emnerne er meget specialiserede på hver deres område, og vi har ikke altid ekspertisen til at oversætte beskrivelserne helt korrekt. Et andet problem er at vi med så stort et korpus har lidt udfordringer med at holde konsistens i ordlyd og begreber.

Hvis du finder fejl eller områder hvor vi kan gøre oversættelserne bedre, så er du velkommen til at kontakte os her: http://forum.liboforum.dk/ .

torsdag den 22. december 2016

Koncept for moderne brugergrænseflade (MUFFIN)

Jeg har tidligere skrevet om en ny type værktøjslinjer i LibreOffice. Det kan du læse om her: http://libreofficedk.blogspot.dk/2016/11/nyt-i-53-nyt-koncept-for-vrktjslinjer.html

Det affødte som forventet lidt debat på Facebook og Google+.

Efterfølgende er The Document Foundation kommet med en forklaring, som for mange vil være en beroligende meddelelse:
Der er IKKE planer om at udskifte den gamle brugergrænseflade med Ribbons! Tværtimod.
Konceptet går nemlig på at du altid selv kan vælge. Konceptet kaldes MOFFIN, og det står for My User Friendly & Flexible INterface:
  1. My: Det er din egen beslutning hvordan LibreOffice skal se ud
  2. User Friendly: Det er brugervenligt
  3. Flexible: Det er fleksibelt, og du kan kombinere forskellige metoder og værktøj
Du kan læse annonceringen her: https://blog.documentfoundation.org/blog/2016/12/21/the-document-foundation-announces-the-muffin-a-new-tasty-user-interface-concept-for-libreoffice/

Du kan læse mere om tankerne bag konceptet her: https://design.blog.documentfoundation.org/2016/12/21/evolving-past-the-restrictions-of-toolbars/

Regneark for eksperter

Er du en haj til regneark, eller vil du gerne være en haj?

Så kan du sikkert have interesse i to vejledninger som er målrettet universitetsstuderende. Niveauet er forholdsvis højt, men jeg tror alligevel de fleste kan få nytte af eksemplerne.

Introduktion til statistik

Dana Lee Ling er professor ved universitetet i Mikronesien, og har blandt sine mange akademiske opgaver, at undervise sine studerende i statistik. Han har skrevet en vejledning  “Introduction to Statistics Using LibreOffice Calc”.

Vejledningen introducerer emner som populationer og prøver, måling af middelværdi og spredning, visualisering af data, parrede data og scatter-diagrammer, sandsynlighed, fordelinger, normalfordelingen, og z-værdier, konfidensintervaller for middelværdien, hypotesetest mod en kendt populations middelværdi og hypotesetest af to prøver middelværdier.

Du kan finde vejledningen (engelsk) her: http://www.comfsm.fm/~dleeling/statistics/text5.html
 

Problemløsning (solver-funktion)

Er du mere til problemløsning har Harvard University og MIT offentliggjort en introduktion til anvendelsen af "Problemløser...". Funktionen kan løse både lineære og ikke-lineære programmeringsfunktioner.

Denne vejledning er en trin-for-trin guide som fører dig igennem opgaven:
1) Indlæs problemløseren til dit regneark
2) Definer problemet og skriv formler for formål og begrænsninger
3) Løs problemet

Du kan finde vejledningen (engelsk) her: https://courses.edx.org/asset-v1:MITx+CTL.SC2x_2+2T2016+type@asset+block/Solver_Tutorial_and_Debug_v1.pdf

torsdag den 15. december 2016

Nyt i 5.3: Indsæt emoji

En af de mange nye funktioner i LibreOffice 5.3 er en lettere måde at indsætte såkaldte emojis.

Du skal aktivere funktionen ved at aktivere eksperimentelle funktioner (Funktioner - Indstillinger - Avanceret) og derefter højreklikke på værktøjslinjen Standard og under Synlige knapper aktivere Emoji.

Emoji's er små humørikoner som mest kendes fra mobiltelefoner, men nu er de altså også tilgængelige i LibreOffice.

Her er et par eksempler:


🎸 🦎 👆 ➡

Vil du være med til at teste LibreOffice 5.3 beta2 ?


Denne version forventes at blive frigivet endeligt i slutningen af januar, men alle kan allerede nu prøve den nye version af.

Den danske oversættelse nåede desværre ikke at blive færdig, men det meste oversættelse er dog nået med.

Du har blandt andet mulighed for at afprøve det nye NoteBookBar som ligner Ribbons fra MS Office.


Denne feature vil helt sikkert give debat. Jeg har skrevet om konceptet her: http://libreofficedk.blogspot.dk/2016/11/nyt-i-53-nyt-koncept-for-vrktjslinjer.html

Du kan downloade beta2 her: https://da.libreoffice.org/hent-libreoffice/test/

tirsdag den 13. december 2016

Signering af eksisterende PDF-filer

LibreOffice understøtter digitale signaturer. Det gælder både når du gemmer ODF-filer, OOXML-filer og når du eksporterer til PDF.

Først skal du installere en digital signatur fra Nets, hvilket jeg har skrevet om her: http://libreofficedk.blogspot.dk/2015/02/digital-signatur-i-pdf-filer.html

Fra LibreOffice 5.3 er det endvidere mulighed for at tilføje en digital signatur til et eksisterende PDF-dokument vel at mærke uden at redigere dokumentet. Det foregår ved at benytte en såkaldt post-proces, som tilføjer signaturen uden at dokumentet bliver opdateret. Dermed er det muligt at tilføje en signatur til et allerede signeret dokument.

Du kan også signere et pdf-dokument som ikke er dannet af LibreOffice. Det kan være en tegning fra Inkscape eller en pdf-fil du har downloaded fra internettet.

Funktionen finder du i menuen Filer - Underskriv eksisterende PDF... .



Husk at du endelig ikke må gemme dokumentet efter du har signeret det. Du skal bare lukke.

Hjælp til implementering

Der findes en lang række dokumenter rundt omkring, som drejer sig om brugen af LibreOffice, eller om hvordan et implementeringsprojekt planlægges.

"ODF Guide, et referencedokument for implementering af LibreOffice" (PDF) blev offentliggjort i juli 2015 af Governo do Estado do Rio Grande do Sul, General Department, Institut for informationsteknologi og telekommunikation, i Brasilien.

Det 70 siders dokument er redigeret af Gustavo Buzzati Pacheco, som igennem lang tid har været medlem af det brasilianske LibreOffice-fællesskab, og nu medlem af TDF Membership Committee.

Efter en længere introduktion om LibreOffice, fokuserer dokumentet på tre centrale aspekter af en migration: planlægning, udførelse og support. I slutningen, tre bilag: spørgeskema, genvejstaster og uddannelsesprogram.

Do kan downloade dokumentet her: http://documentfreedom.org/reference/rio-grande-os-implementation-guide.pdf

lørdag den 10. december 2016

Mere om fejlhåndtering

Jeg har tidligere skrevet om fejlhåndtering i arktiklen "Håndtering af fejl" her: http://libreofficedk.blogspot.dk/2016/12/handtering-af-fejl.html

I den tidligere artikle beskrev jeg eksempler på håndtering af konkrete fejl, simpelthen ved at undersøge om en "ulovlig" situation er opstået, umiddelbart før en kritisk handling udføres. I denne artikel vil jeg komme ind på nogle af de indbyggede funktioner LibreOffice har til fejlhåndtering:
  • Erl: Linjenummer hvor seneste fejl opstod
  • Err: Fejlnummer for senestre opståede fejl
  • Error eller Error(error_number): Fejlbesked (tekst) for seneste fejl eller for et specifikt fejlnummer
  • On Error:
  • On Error Resume Next: Ignorer fejl og fortsæt makroen.
  • On Error GoTo 0: Nulstil den aktuelle error handler.
  • On Error GoTo LabelName: Ved fejl gå til ...[etikket]
  • CVErr: Konverterer et udtryk til et fejlobjekt

Lad os se på et par eksempler:

Sub test1
  On Error Goto BadError

Print UBound(Array1)

BadError:
  If Err <> 0 Then
    Print err
    Print erl
    Print Error(err)
End if
End sub


Der vil opstå en fejl, da variablen Array1 ikke eksistrer og derfor ikke har et UBound. Linjen Print UBound(Array1) fejler.

BadError svarer:
  • 91 (Fejlnummer)
  • 36 (Linjenummer)
  • Objektvariabel ikke initialiseret. (Fejlbesked som tekst) .
Her er et lidt mere omfattende eksempel:

Sub ExampleError
  On Error Goto BadError        'Sæt error handleren op
  Print 1/ CInt(0.2)            'Udfør noget ulovligt

BadError:                       'Error handler starter her
  Dim s As String               'Akkumuler beskeden
  Dim oldError As Integer       'Fejlnummeret
  Dim lineNum As Integer        'Linjenummeret
  If Err <> 0 Then              'Tjek Err
    oldError = Err              'Gem fejlnummeret
    lineNum = Erl               'Gem linjenummeret
    s = "Før nulstillet error handler " & CHR$(10) &_
        "Fejlnummer " & Err & " opstod ved linjenummer " & Erl & CHR$(10) &_
        "Fjlbesked: " & Error() & CHR$(10)
  End If
  On Error Goto 0               'Nulstil error handler
 
  REM Nu er der ingen ting at vise
  s = s & CHR$(10) & "Efter nulstillet error handler:" & CHR$(10) &_
      "Fejlnummer " & Err & " opstod ved linjenummer " & Erl & CHR$(10)
     
  REM Use the saved information
  s = s & CHR$(10) & "Fejlinformation blev gemt i variable " & CHR$(10) & "så vi kan finde dem frem senere:" & CHR$(10) &_
      "Fejlnummer " & oldError & " opstod ved linjenummer " &_
      lineNum & CHR$(10) & "Fjlbesked: " & Error(oldError)
  MsgBox s, 0, "Error Handling"
End Sub



Håndtering af fejl

I de tidligere artikler har jeg ikke gjort meget ud af at håndtere eventuelle fejlsituationer. I denne artikle ser vi på håndtering af meget konkrete fejlsituationer, som vi kan forudse.

En typisk situation som vi ALTID skal tage stilling til, er hver gang vi skal udføre matematisk division. Det kan nemlig meget let gå galt, hvis vi ikke først lige undersøger om vi har 0 (nul) i nævneren (det er forbudt at dele med nul). Et overordnet råd er derfor ALTID kontrolle nævneren før du udfører division.

Et andet eksempel er i artiklen Tekstdokumenters titel (læs artiklen her: https://libreofficedk.blogspot.dk/2016/12/tekstdokumenters-titel.html ), hvor jeg lavede følgende meget simple program:

Sub TitelFraFelt
oMaster = thisComponent.getTextFieldMasters().getByName("com.sun.star.text.fieldmaster.User.Titel")
thisComponent.DocumentProperties.Title = oMaster.Content
End Sub


Der er umiddelbart to situationer som vi bør tage stilling til:
  • Hvad nu hvis dokumentet ikke er et tekstdokument?
  • Hvad nu hvis feltet "Titel" ikke eksisterer?
Det første punkt bør vi altid kontrollere, når vi arbejder med makroer specifikke for tekstdokuemnter.

Denne lille rutine kontrollerer for om dokumentet er et tekstdokument:

If NOT ThisComponent.supportsService("com.sun.star.text.TextDocument") Then
  MsgBox "Det aktuelle dokument er ikke et Writer tekstdokument", 48, "Fejl"
  Exit Sub
End If


Det andet punkt kan vi løse vha. denne linje:

If thisComponent.getTextFieldMasters().hasByName("com.sun.star.text.fieldmaster.User.Titel") then

Makroen i artiklen kunne f.eks. se sådan ud:

Sub TitelFraFelt
rem Kontroller om det er et tekstdokument
If NOT ThisComponent.supportsService("com.sun.star.text.TextDocument") Then
  MsgBox "Det aktuelle dokument er ikke et Writer tekstdokument", 48, "Fejl"
  Exit Sub
End If
rem Kontroller om der findes et felt med navnet Titel
If thisComponent.getTextFieldMasters().hasByName("com.sun.star.text.fieldmaster.User.Titel") then
    oMaster = thisComponent.getTextFieldMasters().getByName("com.sun.star.text.fieldmaster.User.Titel")
    thisComponent.DocumentProperties.Title = oMaster.Content
    Else
      MsgBox "Feltet Titel findes ikke", 48, "Fejl"
    End if
End Sub




torsdag den 8. december 2016

Internationalt: I byen Rom skalal nyindkøbt software skal være open source

Byen Rom, som er den fjerde største by i EU, vil øge sin brug af fri og open source software. Det er besluttet i oktober 2016. Alle nye softwareløsninger vil være baseret på open source, og byen overvejer også at udskifte eksisterende proprietære løsninger ved open source alternativer.

Et af målene er at frigøre byen fra leverandør lock-in. Desuden ønsker Rom at bruge åbne og skalerbare softwareløsninger, der muliggøre at byen kan skifte mellem leverandører. Skift til fri og open source software vil øge effektiviteten, åbenhed og bæredygtighed. Det udtaler et medlem af byrådet. Det giver også byen øget selvbestemmelse ved udøvelsen af sine offentlige administrationsopgaver.

Kilde: https://joinup.ec.europa.eu/node/157510

tirsdag den 6. december 2016

Tekstdokumenters titel


Det har i lang tid irriteret mig at mine PDF-filer vises med filnavn og dokumenttitel i titellinjen. Det er irriterende fordi jeg altid glemmer at rette dokumenttitlen, og mine PDF-filer har altid skabelonens navn (hvis jeg har brugt en skabelon) i titellinjen. 
Et tekstdokument kan have forskellige ”titler”. F.eks. kan du anvende en typografi med navnet ”Titel”. Det er bare ikke den titel der anvendes når vi laver PDF-filer. Det er den titel du kan registrere under Filer – Egenskaben på fanen Beskrivelse i feltet Titel.
Og hvem husker lige det?
I mit tilfælde er jeg så uheldig at mine skabeloner derimod har titler, og hvert eneste dokument ”arver” skabelonens titel, hvilket så i sidste ende vises i PDF-læserens titellinje. Det var faktisk bedre hvis der slet ikke stod noget som helst i det felt.
Jeg har forsøgt at automatisere opdatering af feltet, og jeg er kommet frem til to forslag. Det første går ud på at titlen inde i dokumentet (f.eks. med typografien ”Titel”) tildeles et bogmærke med navnet ”Titel”. Denne makro overfører Titel-teksten i dokumentet til egenskabstitlen:
Sub TitelFraBookmark
oBookmarkTitel = thisComponent.Bookmarks.getByName("Titel")
thisComponent.DocumentProperties.Title = oBookmarkTitel.Anchor.String
End Sub
Ulempen er at det ikke er tydeligt for brugeren hvad titlen er, for det er meget let at ødelægge bogmærket, så det kun er en del af teksten der er bogmærke.
I stedet bruger jeg en brugerdefineret variabel (IndsætFeltFlere felter… på fanen Variable opretter du et Brugerdefineret felt). I dokumentet markerer du feltet og vælger typografi ”Titel”.
Denne makro kopierer det brugerdefinerede felt til dokumentegenskaberne:
Sub TitelFraFelt
oMaster = thisComponent.getTextFieldMasters().getByName("com.sun.star.text.fieldmaster.User.Titel")
thisComponent.DocumentProperties.Title = oMaster.Content
End Sub


Makroen sørger for at feltet i dokumentet overføres til dokumentegenskaberne:


Så er det bare at knytte makroen (vælg selv hvilken af de to du synes er bedst) til en eller flere handlinger, f.eks. når dokumentet gemmes eller når dokumentet eksporteres.
Tilknytning af en makro til en handling kan du gøre under FunktionerTilpas på fanen Hændelser. Du kan sagtens tilknytte samme makro til flere forskellige hændelse.