Új TeXlipse – új lehetőségek

Még októberben írtam arról, mire való a [[LaTeX szerkesztés OSX-en|synctex]], és ezt hogyan lehet felhasználni a Skim és a Texlipse környezet összekötésére. Illetve arról is, hogy helyenként problémás.

Most, hogy megjelent egy újabb Texlipse változat (1.3), és újabb, rövid határidejű LaTeX dokumentumokat kell előállítanom, ezért megnéztem, hogy mi a helyzet most.

Még októberben írtam arról, mire való a synctex, és ezt hogyan lehet felhasználni a Skim és a Texlipse környezet összekötésére. Illetve arról is, hogy helyenként problémás.

Most, hogy megjelent egy újabb Texlipse változat (1.3), és újabb, rövid határidejű LaTeX dokumentumokat kell előállítanom, ezért megnéztem, hogy mi a helyzet most.

Természetesen a helyzet rossz és reménytelen :D, de kicsit konkrétabban (és kevésbé pesszimistán szemlélve rá lehet jönni), hogy egészen pontosan mi/hogyan változott, és ezt hogyan lehet exploitolni.

A Texlipse 1.3-as változatának számomra legfontosabb újdonsága, hogy együtt működik a Skim auto reload funkciójával, azaz nem kell kézzel frissítgetnem a pdf kimenetet.

Ugyanakkor a synctex (vagy a hasonló célú pdfsync) továbbra sem az igazi. A pdfsync segítségével gyorsan tudok lépdelni a pdf illetve a tex-fájl egyes helyei között, ami roppant hasznos dolog, ha pl. aki proofreadel, az oldalszámmal tudja jelölni a hibát, amit kicsit nehézkes visszakonvertálni latex source-ra.

De ahhoz, hogy ez működjön, fontos, hogy a generált synctex.gz (pdfsync esetén most nem mondom meg a generált kiterjesztést) ugyanabban a könyvtárban legyen, mint a tex fájl, ugyanis a LaTeX környezet ebben a mappában keresi; ugyanakkor az is fontos, hogy ugyanabban a mappában legyen, mint a pdf fájl, mert a pdf néző meg ott keresi… Szóval a kiforrott, több-könyvtáros megközelítések problémásak tudnak lenni. De legalább így működik.

És még egy fontos dolog: amit a múltkor mutattam scriptet a Texlipse megszólítására, frissíteni kell, ugyanis direkt meg lett szólítva a texlipse.jar fájl, és a frissítés után az elérhetősége ennek megváltozott. Eltartott egy darabig, amíg erre a gondra rájöttem, ugyanis semmilyen hibaüzenetet nem kaptam a visszafele kereséskor. De azért csak meglett.

Az új, módosított scriptem:

java -classpath "/Applications/eclipse/dropins/texlipse/plugins/net.sourceforge.texlipse_1.3.0/texlipse.jar" net.sourceforge.texlipse.viewer.util.FileLocationClient -p 55000 -f $2 -l $1

És most a végére néhány apróság, amire érdemes lehet odafigyelni:

  • Ha még nem frissítettél az 1.3.0-s változatra, akkor várj pár napot, ugyanis felbukkant egy elég idegesítő bibtex parsing hiba. A hétvégére ígértek új kiadást.
  • Amikor frissíteni próbáltam, akkor a P2 valami miatt nem akarta letölteni a cuccot, de a dropins mappába könnyen tudtam telepíteni. Emiatt is változott az elérési útja a texlipse.jar-nak. Nem tudom, mi volt az oka, de majd egyszer esetleg ezzel is elszórakozom.

Alapvetően azért szeretem az új kiadást, de vannak gyenge pontok. Mindenesetre a váltást nem bántam meg, de jöhetne már az 1.3.1.:D

Spotlight és Fuse = Kernel Panic?

Volt szerencsém egy-két kernel pánikhoz OSX-en. Szépen néz ki, ahogy elszürkül a háttér, és közli, hogy gáz van, indítsam újra a gépet, de viccesnek nem vicces. Viszont újraindítás után lehetőséget ad, hogy elküldjem a crash reportot, és nem mellesleg megnézzem az utolsó logokat.

Volt szerencsém egy-két kernel pánikhoz OSX-en. Szépen néz ki, ahogy elszürkül a háttér, és közli, hogy gáz van, indítsam újra a gépet, de viccesnek nem vicces. Viszont újraindítás után lehetőséget ad, hogy elküldjem a crash reportot, és nem mellesleg megnézzem az utolsó logokat.

Az első alkalommal nem sokat foglalkoztam vele, de amikor legközelebb előjött, akkor rájöttem, hogy akkor történt, amikor a külső merevlemezem csatlakoztatva van. A log tanulmányozása, illetve némi előismeret segítségével egy gyors googlizás kihozta, hogy nem én vagyok az egyetlen, aki a problémával szembesült, és volt rögtön workaround is.

A külső merevlemez NTFS-ként volt megformázva, amit a MacFuse és az NTFS-3G kombinálásával csatoltam fel. Ez a kernel panicot különösen súlyossá tette, mert az NTFS-3G nagyon érzékeny az érvénytelen adatokra – pl. abban az esetben, ha nem volt rendesen leválasztva Windows-os gépeken, akkor egyszerűen nem csatolja fel, stb. Szóval a kernel panicot követő meghibásodás után lehetett szórakozni vele, hogy újra csatolni lehessen. Szerencsére a VMware sokat segít azzal, hogy a külső USB portot átadhatom egy virtuális gépnek, így relatíve kis szívással átcsatoltam Windowsra.

Visszatérve az eredeti problémára a log alapján a bug akkor lép elő, ha a Spotlight próbálja indexelni a felcsatolt lemezt. A megoldás egyszerűen az volt, hogy ki kell kapcsolni az indexelést a Fuse-os lemezekre. A beállítás megtehető: System Preferences/Spotlight/Privacy

Természetesen ez bug, később még javíthatják. Ha ez megtörténik, akkor jelezni fogom.

További információ található a következő levelezőlista threadben: http://groups.google.com/group/macfuse/browse_thread/thread/cd7df99cb5d9cd7f/40bbbd3d13ece42c#40bbbd3d13ece42c

Navigáció IPAQ módra

A probléma azóta foglalkoztat, hogy szerencsé[s/tlen] felhasználója lettem egy HP Ipaq rx3715-nek. Aki [intlink id=”552″ type=”post”]olvasta[/intlink], tudja hogy volt már egy próbálkozásom lecserélni az operációs rendszert, amivel sikeresen megátkozták a kütyüt, de sajnos az a projekt befulladt, így marad a Windows Mobile 2003SE, ezen kell megoldanom a navigációt. Az integrált GPS vevő hiánya által okozott hardveres korlátot egy NAVILock bluetooth vevő oldotta fel. A problémát már csak a megfelelő program kiválasztása okozza.

Kézenfekvő megoldásként elöször Aeromap merült fel, hiszen a kütyühöz vásárláskor kaptam egy licensz kódot hozzá, ami ráadásul a honlapról letölthető újabb verziókkal is működik. Az Aeromap teljeskörű navigációt ad Magyarország területére, a legtöbb városban házszámszintű térképpel, útvonal-kereséssel és hangos irányítással. Remekül működik, amíg határon belül maradunk, Magyarország határát átlépve viszont kiesünk a nagy semmibe. Bár ritkán járok külföldön úgy, hogy térképre is lenne szükségem (mivel nem egyedül vagyok), de úgy döntöttem körülnézek más megoldások után, főleg az ingyenesen hozzáférhető szoftverek területén.

Első lépésként a Google Maps Mobile felé vetettem a tekintetem, ami a Google maps térképeit használja, amiket közvetlenül az internetről tölt le, és képes GPS alapján pozicionálni is. Apró probléma, hogy ha nincs útközben folyamatos internet kapcsolat, akkor nincs térkép se. Ráadásúl az újabb verziókban megjelent egy idegesítő bug (vagy feature?), miszerint a program csak és kizárólag GPRS vagy UMTS kapcsolattal tud az internethez csatlakozni, Wifi-n keresztűl nem hajlandó. Bár ez megkerülhető, ha az ember keres egy megfelelően régi verziót, de láthatóan ez a program nem arra lett kitalálva, amire én használnám. Az rx3715 nem telefon, nem lehet mobil hálózathoz csatlakoztatni, így nincs internetkapcsolatom út közben.

A következő állomás az Open Street Map wikije volt, ahol van egy kimerítő felsorolás a programokról, melyek elérhetővé teszik egy átlag felhasználó számára az OSM térképeket. A felsorolásban több WM program is szerepel, melyek többsége java-t igényel, így számomra nem jöhet szóba (egyelőre, megfelelő JVM-et keresni egy WM 2003 kütyüre nem egyszerű, és nem tárgya a jelen cikknek). A natív programok közül kettőt emelnék ki, melyekkel kicsit többet foglalkoztam.

A Bluemapia egy főleg hajózásra kifejlesztett program. Az érdekessége az, hogy több ingyenes térképszolgáltatóról is képes adatot gyűjteni, közöttük a fent említett OSM, a Google Maps és a Microsoft Map. Azonban sajnos internet kapcsolat nélkül ez sem működik, akkor sem, ha letöltjük a térképeket offline tárolóba.

Utoljára a TurboGPS-t néztem meg, ami alapvetően offline adatokkal dolgozik, bármilyen raszterizált képet meg lehet neki adni térképként, megadva a kép sarkainak koordináltáit, és erre képes rápozicionálni a GPS koordinátákat. Ahhoz, hogy ilyen térképeket kapjunk, használhatjuk az OSM automatizálható letöltőjét, majd a letöltött képeket át kell neveznünk a térképeket a poziciójuknak megfelelően a következő leírás alapján: http://www.turboirc.com/forum/index.php?topic=117.0.

Sajnos egyelőre a nyílt forráskódú alternatívák nem versenytársai az olyan kereskedelmi megoldásoknak, mint az Aeromap vagy az iGo, főleg Windows Mobile rendszeren. Linux alapú eszközön jobb a helyzet, bár útkeresés, illetve irányított navigáció csupán néhány projekt tervei közt szerepel, megvalósított módszert még nem láttam. Talán egyszer megoldom azt is, hogy laptopomhoz csatlakoztassam a GPS vevőt. De ez egy másik történet lesz.

LaTeX szerkesztés OSX-en

Ugyancsak a múltkor ígértem meg [[Dokumentumszerkesztés OSX-en Stampie módra|dokumentumszerkesztés kapcsán]], hogy írok részleteket a [[http://texlipse.sourceforge.net/|TeXlipse]] beállításáról úgy, hogy minden jól menjen a gépen. Az akkori ígéretben még az is benne volt, hogy akkor nem találkoztam még a koncepció gyermekbetegségeivel. De ennek ellenére érdemes lehet leírni, hátha más is fel tudja használni az itt leírtakat.

Talán éppen emiatt merem azt mondani, hogy érdemes lehet megvizsgálni akár más platformokra is, amiket itt leírtam, mert a TeXlipse szinte mindenhol működik, és a többi platformra is van pdfsync-képes program.

Fontos megjegyzés: a TeXlipse a verziószáma ellenére helyenként még kicsit nehézkesen használható, főleg, ha bizonyos új komponensekkel kerül együttes felhasználásra, de ennek ellenére jól használható TeX környezet kialakítására alkalmas.

Ugyancsak a múltkor ígértem meg [[Dokumentumszerkesztés OSX-en Stampie módra|dokumentumszerkesztés kapcsán]], hogy írok részleteket a [[http://texlipse.sourceforge.net/|TeXlipse]] beállításáról úgy, hogy minden jól menjen a gépen. Az akkori ígéretben még az is benne volt, hogy akkor nem találkoztam még a koncepció gyermekbetegségeivel. De ennek ellenére érdemes lehet leírni, hátha más is fel tudja használni az itt leírtakat.

Talán éppen emiatt merem azt mondani, hogy érdemes lehet megvizsgálni akár más platformokra is, amiket itt leírtam, mert a TeXlipse szinte mindenhol működik, és a többi platformra is van pdfsync-képes program.

Fontos megjegyzés: a TeXlipse a verziószáma ellenére helyenként még kicsit nehézkesen használható, főleg, ha bizonyos új komponensekkel kerül együttes felhasználásra, de ennek ellenére jól használható TeX környezet kialakítására alkalmas.

De mielőtt belecsapnék a lecsóba, még egy ügyes OSX-es programra szeretném felhívni a figyelmet: a [[http://texlipse.sourceforge.net/|Skim]] nevű PDF nézegető program sokkal alkalmasabb a LaTeX kimenetének nézegetéséhez, mint a beépített Preview nevű program (ami azért a rossztól még mindig távol áll, de hát az Apple programjait is felül lehet múlni 🙂 ). Miért is? Az egyik hasznos dolog, hogy bizonyos esetekben be lehet állítani, hogy automatikusan töltse be a megváltozott pdf fájlt, és tudja a pdfsync nevű dolgot.

Ezek mik is? Hogyan is lehet őket használni? Haladjunk sorban. A módosított fájlok újratöltése egy hasznos lehetőség, hiszen így lehetővé válik, hogy a Skimre átváltva mindig a legfrissebb változatot lássam. Hogyan kell igénybe venni? Először is a Preferences ablak Sync fülén engedélyezni kell a Check for file changes kapcsolót. Ezután, ha észleli, hogy a megnyitott fájl frissült, megkérdezi, hogy be akarjuk-e tölteni. Azért nem tölti be automatikusan, mert ha a fájlhoz tartoztak nem mentett megjegyzések, kijelölések, akkor azok elvesznek. De a kérdésnél rögtön megjelenik az Auto kapcsoló, amivel a folyamat automatizálható – egészen a Skim leállásáig. Zsír.

Amivel még sok jót lehet kezdeni, az a pdfsync. Ez egy viszonylag modern megközelítés, alapvetően az a célja, hogy bizonyos metaadatokat állítson elő, amivel meg lehet állapítani, hogy a pdf fájl melyik sorához a tex forrás melyik sora tartozik (tudomásom szerint alapvetően pdf fájlokhoz képes szinkronizálni, aminek az egyik oka lehet, hogy az [[http://itexmac.sourceforge.net/pdfsync.html|OSX-specifikus LaTeX-szerkesztő]] számára készült el az elején, OSX-en pedig a ps, illetve dvi fájlokkal nehéz mit kezdeni, a pdf-et viszont gyárilag hihetetlenül kényelmesen kezeli. És ez az oka annak is, hogy a LaTeX-et a pdflatex fordítóval érdemes fordítani… Na mindegy, visszatérve a pdfsynchez, ez a metaadat csak akkor használható, ha mind a szerkesztő, mind a nézegető képes értelmezni az adatokat. Az én esetemben ez fennállt, csak megfelelően be kellett állítani a rendszert.

A Skim beállítása viszonylag egyszerű: az előbb emlegetett Sync lapon vannak a kapcsolódó beállítások. Miután a TeXlipse-et nem ismeri, kénytelen voltam egyedi sablont beállítani. A TeXlipse dokumentáció [[http://texlipse.sourceforge.net/manual/build.html|vonatkozó részei]] alapján létrehoztam egy egyszerű script fájlt (be lehetne írni az egyedi paraméterek közé is, de külön fájlban jobban kezelhető), és a fájl tartalma a következő lett:

java -classpath /Applications/eclipse/plugins/net.sourceforge.texlipse_1.2.2/texlipse.jar net.sourceforge.texlipse.viewer.util.FileLocationClient -p 55000 -f $2 -l $1

Itt a classpath-nál meg kellett adni a telepített texlipse jarját (sok sikert a kikereséséhez a plugin mappából 🙂 ), a FileLocationClient egy hozzáadott érték, a -p után pedig egy portszámot kell megadni, amit a TeXlipse beállítások között is szerepeltetni kell (nyilván ugyanazt a számot 🙂 ).

A Skim pdfsync paraméterei között egyrészt ezt a fájlt kellett megadni, másrészt paraméternek a %line “%file” paramétereket kell megadni – ezek segítségével lehet visszahívni a szerkesztőt. Ha más szerkesztőt akarunk használni, akkor nyilván a szerkesztő dokumentációjából kell kiszedni a dolgokat. De például az Aquamacs különösebb beállítás nélkül is viszi a szolgáltatást.

Mindenesetre nézzük akkor, hogy mit kell beállítani az Eclipse-ben, hogy működjön. Először is a TeXlipse számára kell a Skimet felvenni megjelenítőként – itt viszont nem a szokásos Skim.app/Contents/MacOS/Skim hívást kell megtenni, hanem egy külön script segítségével kell értesíteni, azaz a Skim.app/Contents/SharedSupport/displayline elemet kell megadni futtathatóként a TeXlipse számára, míg paraméterekként a %line %file %texfile értékeket (a leírások ajánlják a %file és a %texfile értékek idézőjelek közé helyezését, mert ekkor szóközt tartalmazó fájlok esetén is működik, de nálam úgy nem működött a rendszer – a Skim nem találta meg a hivatkozott fájlt).

Ja, igen, a beállítás helye: Eclipse Preferences, TeXlipse/Viewer Settings, és itt lehet felvenni egy új nézőprogramot. A Viewer input format értéke pdf, az Inverse search support értéknek a “Viewer runs external command” értéket kell megadni, és be kell jelölni a “Viewer supports forward search” jelölőnégyzetet. És ha ez megvan, akkor a nézőprogramok listája alatt a megfelelő portszámot be kell állítani.

Na, ha ez megvan, akkor lehet tesztelni. A tex fájl elejére még hozzá kell adni a pdfsync package-et, és jöhet a menet.

Sajnos nálam nem sikerült minden esetben futtatni a megoldást: abban az esetben, ha a forrásfájl, a létrehozott pdfsync fájl és a pdf fájl egy mappában volt, nem több fájlból állt a tex projekt, és nem használtam bibtex-et. Szóval sajnos nem csak a gyakorlatban lényegtelen esetekben nem működött, hanem sajnos elég sokszor… De amikor működött, akkor a Command + 4 (win-esek, linuxosok: ctrl+4) billentyűkombinációval az Eclipse-ből a pdf fájl megfelelő részére ugrott, a pdf fájlból pedig a Command+Shift lenyomása mellett kattintva lehetett visszaugrani az Eclipse-be. Sajnálom, hogy ez most nem működik.

Ha valakinek ezt sikerül jobban működésre bírni, esetleg képes megoldani a rendes futtatást, érdekelnek a részletek.

Ma sikerült egy másik problémakörbe belefutnom a LaTeX szerkesztés kapcsán. A gond akkor lép fel, ha megpróbáljuk SVN-en osztani a LaTeX projekt mappát, és különböző mappában vannak a forrásfájlok és az ideiglenes fájlok. Hihetetlenül idegesítő tud lenni, hogy minden egyes fordításkor (amit gyakorlatilag minden mentés triggerel), és hibaüzenetek nagy tömegét kapom, hogy nem tudta átmozgatni az elkészült ideiglenes fájlokat, mert nem sikerült felülírnia a fájlokat – hála annak, hogy az nem került feltöltésre az SVN szerverre.

Az egyedüli lehetséges megoldás az volt, hogy az ideiglenes fájlokat hozzá kellett adni az svn:ignore változóhoz, hogy ne akarja őket egyáltalán feltölteni az SVN szerverre. Ehhez a projekt jobb gombos menüjéből a Team/Add Property… pontja alatt felbukkanó ablakban kellett adatokat megadni: megadtam a paraméter nevét (svn:ignore), beállítottam, hogy a szabály rekurzívan teljesüljön minden erőforrásra, és a következő értékeket adtam meg a beviteli mezőbe:
*.aux
*.bbl
*.blg
*.bst
*.dvi
*.idx
*.lof
*.log
*.toc
temp
tmp
main.synctex.gz

Ez a megoldás megszüntette a problémát, ezzel lehetővé téve, hogy tovább működtessem a rendszert.

Kottaszerkesztés LilyPonddal OSX-en

A LilyPond ugyanaz a kottaszedésben, mint a LaTeX dokumentumszedésben, minden szempontból: tipográfiai szabványoknak és konvencióknak eleget tevő, gyönyörű kimenetet generál egy szöveges formában megadott forrásfájlból. Azonban nincs könnyű dolguk azoknak, akik össze szeretnék házasítani kedvenc Leopardjukkal. Sem a LilyPond grafikus felülete, sem a magyar fejlesztésű, nagyon sokat tudó LilyPondTool nevű jEdit plugin nem működik az OSX legújabb verziója alatt.

Kompromisszumos megoldásként nekem a TeXShop használata jött be. Amit így kapunk, az a PDF-előnézet, az ismerős munkafolyamat és a szintaxiskiemelés. Sajnos a hangról forrásfájlra ugrás nem működik, valamint a generált MIDI-t is kézzel kell megnyitnunk.

  1. Telepítés: Töltsük le innen a 2.12 verziót MacOS X alá, méghozzá a G3, G4, G5 Macs (sic!) változatot, akkor is, ha Intel alapú Mac-ünk van! Szokásos módon tegyük az /Applications könyvtárba a LilyPond.app-ot.
  2. Parancssori támogatás: A PDF-generálás sajnos ékezetes fájlneveknél nem működik, így írtam egy cseles shell scriptet, ami ezt megoldja, és az ideiglenes PostScript fájlt is eltakarítja:

    #! /bin/sh
    dirname=$(dirname "$1")
    basename=$(basename "$1" .ly)
    filename="${dirname}/${basename}"
    tempname="${dirname}/.tmp"
    /Applications/LilyPond.app/Contents/Resources/bin/lilypond -o "${tempname}" "$1"
    if [ -f "${tempname}.pdf" ]; then
    mv "${tempname}.pdf" "${filename}.pdf"
    fi
    if [ -f "${tempname}.midi" ]; then
    mv "${tempname}.midi" "${filename}.midi"
    fi
    rm -f "${tempname}.ps"

    Mentsük el /usr/bin/lilypond néven, és varázsoljuk futtathatóvá:

    sudo chmod +x /usr/bin/lilypond
  3. TexShop támogatás: Mivel a piszkos munkát elvégzi a fenti script, már csak az alábbi hihetetlenül bonyolult TeXShop engine-nel kell bővíteni a repertoárt ([cci]~/Library/TeXShop/Engines/LilyPond.engine[/cci]):

    #! /bin/sh
    echo "Processing..."
    lilypond "$1"
    echo "Done."

    Itt van még egy dummy LilyPond template ([cci]~/Library/TeXShop/Templates/LilyPond.tex[/cci]):
    [cc]
    \version “2.12.2”

    \header {
    title = “”
    composer = “”
    tagline = “”
    }

    \score {
    <>

    \midi {
    }

    \layout {
    }
    }

    \paper {
    }[/cc]

    Ezután nincs más dolgunk, mint hozzátársítani a [cci].ly[/cci] kiterjesztést a TeXShop.app-hoz, és készen is vagyunk.

Még egy dolog. Ha Finale vagy Sibelius kottáinkat át szeretnénk konvertálni LilyPondba, a migrációs folyamat köztes lépéseként a MusicXML formátumot vehetjük igénybe. A Finale alapból tartalmaz MusicXML plugint, a File/MusicXML/Export… paranccsal végezhető el az exportálás. Sibeliushoz külön le kell tölteni a megfelelő plugint, ehhez ez az oldal nyújt segítséget. (A plugin batch mode-ot is támogat, ezt érdemes kihasználni.)

A MusicXML fájlokat a [cci]/Applications/LilyPond.app/Contents/Resources/bin/musicxml2ly[/cci] programmal konvertálhatjuk LilyPondba. Ez nem tökéletes, sajnos még picit bugzik a segédprogram, én főleg a dalszövegek melizmáinál tapasztaltam problémát, úgyhogy ne felejtsük el utólag átnézni az eredményt, és szükség esetén kézzel finomhangolni.

Források