5.9.09

Numbertext: liczby słownie (i jeszcze więcej)

2 lata temu na łamach tegoż poradnika opublikowałem wpis instruujący, jak za pomocą prostego makropolecenia zautomatyzować sobie pracę w Calcu. Wczoraj zaś odkryłem rozszerzenie, które robi to samo i jeszcze więcej!

Numbertext, bo tak brzmi jego nazwa, to dodatek, który nie tylko zmienia zapis liczbowy na słowny, ale również konwertuje liczby na walutę. Ponadto potrafi skonwertowaną walutę zapisać w nastu obcych językach! Kolejnym plusem tego dodatku jest jego forma. Dzięki dystrybucji w postaci rozszerzenia, każdy użytkownik poradzi sobie z jego integracją (instalacją) z OpenOffice.org.

Rozszerzenie Numbertext jest odpowiedzią na (ograniczoną) funkcję BAHTTEXT w Excelu. Zanim jeszcze przejdziemy do głównej części tego wpisu, dopowiem, że społeczność skupiona wokół tej funkcji usiłowała zastąpić nią BAHTTEXT w specyfikacji OpenDocumentFormat Formula (ODFF) w ODF 1.2.

Po instalacji dodatku, będziemy mogli w Calcu operować na dwóch nowych funkcjach. Na NUMBERTEXT oraz na MONEYTEXT.

Przykład 1.
Aby zapisać liczbę 12345678 słownie, korzystamy z pierwszej funkcji, a zapisujemy ją następująco: =NUMBERTEXT(12345678)

Wynik: dwanaście milionów trzysta czterdzieści pięć tysięcy sześćset siedemdziesiąt osiem

Jeśli chcemy zapisać liczbę w obcym języku, używamy składni =NUMBERTEXT(1234567;"KOD_JĘZYKA"). Do testu użyłem języka domyślnego (polskiego), francuskiego (Szwajcaria), hiszpańskiego, niemieckiego, czeskiego, rosyjskiego i tajskiego. Kod dla poszczególnych języków to:

=NUMBERTEXT(12345678)
=NUMBERTEXT(12345678;"fr-CH")
=NUMBERTEXT(12345678;"es-ES")
=NUMBERTEXT(12345678;"de-DE")
=NUMBERTEXT(12345678;"cs-CZ")
=NUMBERTEXT(12345678;"ru-RU")
=NUMBERTEXT(12345678;"th-TH")

Wynik:
dwanaście milionów trzysta czterdzieści pięć tysięcy sześćset siedemdziesiąt osiem
douze millions trois cent quarante-cinq mille six cent septante-huit
doce millones trescientos cuarenta y cinco mil seiscientos setenta y ocho
zwölf Millionen dreihundertfünfundvierzigtausendsechshundertachtundsiebzig
dvanáct milionů tři sta čtyřicet pět tisíce šest set sedmdesát osm
двенадцать миллионов триста сорок пять тысяч шестьсот семьдесят восемь
สิบสองล้านสามแสนสี่หมื่นห้าพันหกร้อยเจ็ดสิบแปด

Przykład 2.
Aby skonwertować liczbę na walutę, wpisujemy funkcję =MONEYTEXT(50). Funkcja ta również doskonale sobie radzi z odmianą liczb po przecinku.

Wynik:
pięćdziesiąt złotych
pięćdziesiąt złotych osiemdziesiąt groszy
pięćdziesiąt złotych osiem groszy

Chcąc zaznaczyć, że chodzi nam obcą walutę, posługujemy się analogicznym zapisem: =MONEYTEXT(50;"KOD_WALUTY"). W tym przypadku użyłem "GBP" i "CNY" dla waluty Królestwa Wielkiej Brytanii i Chin.

Wynik:
pięćdziesiąt funtów szterlingów
pięćdziesiąt funtów szterlingów osiemdziesiąt pensów
pięćdziesiąt funtów szterlingów osiem pensów

pięćdziesiąt juanów
pięćdziesiąt juanów osiem jiao
pięćdziesiąt juanów osiem fenów

Natomiast jeśli chcemy zapisać słownie obcą walutę w obcym języku, korzystamy z funkcji =MONEYTEXT(50;"KOD_WALUTY";"KOD_KRAJU"). W ten oto sposób możemy zapisać zdanie "pięćdziesiąt funtów szterlingów" w języku mandaryńskim, lub też zdanie "pięćdziesiąt juanów" możemy zapisać po angielsku.

Kod:
=MONEYTEXT(50;"GBP";"zh-ZH")
=MONEYTEXT(50;"CNY";"en-GB")

Wynik:
五十英镑
fifty Chinese yuan

.

3.9.09

Writer2LaTeX - konwersja plików ODT do TEX

Czasami istnieje potrzeba konwersji OpenOffice'owskich plików ODT do plików TEX. Wprawdzie sam OpenOffice Writer posiada możliwość eksportu treści do plików TeX-a, ale ów eksport nie jest najlepszym z możliwych. Niestety OpenOffice generuje przy eksporcie strasznie skomplikowany kod wynikowy (wszędzie te formatowania...), który ciężko później wstawić do swojej pracy bez oczyszczania (a proces oczyszczania kodu trwa dłużej niż proces kopiuj-wklej tekst + dorób formatowanie w LaTeX-u). Na szczęście znalazłem niedawno lepszą alternatywę, a mianowicie program Writer2Latex. Zaletą programu Writer2Latex jest duża czystość generowanego kodu TeX-a przy konwersji plików ODT do TEX.

Writer2Latex jest konsolowym programem napisanym w Javie. Działa szybko i bezboleśnie. Radzi sobie z tabelkami i wzorami. Potrafi wyciągać obrazki z dokumentu ODT. Oprócz eksportu do formatu TEX, Writer2Latex pozwala także na eksport do plików BibTeX oraz XHTML i XHTML+MathML (tutaj także eksport z OO Calc).

Ponieważ, jak wspomniałem wcześniej Writer2Latex jest napisany w Javie. Ponieważ wpisywanie długich ścieżek mnie nudzi, przygotowałem mały skrypcik o nazwie w2l, umieszczony w /usr/local/bin, o treści:

#!/bin/bash
java -jar /usr/local/bin/writer2latex/writer2latex.jar $PWD/$1 $PWD/$2


I teraz wystarczy uruchomić Writer2Latex poleceniem:

w2l plik.odt plik.tex

Artykuł pochodzi z bloga Karola Kozioła i został opublikowany za jego zgodą.