Mam pewien pomysł na usprawnienie pracy z LaTeX-em na moim Maku, niestety nie do końca potrafię go zrealizować! Może ktoś z Was będzie miał jakieś rozwiązanie. Jak znajdę więcej czasu to może i sama coś znajdę, ale teraz właściwie powinnam pisać pracę domową ;)

Wygląda to tak, że można w TeXShopie ustawić używanie zewnętrznego edytora. Czyli kompilację wykonuje się w TeXShopie, wyświetlanie pdf-a również, a sama edycja w jakimś innym programie, np. Smultronie (mój obecnie ulubiony edytor, niestety najnowsza wersja 3.0 nie nadaje się do użytku z powodu ogromnej ilości bugów[*]). Edytor dostarczany z TeXShopem jest raczej marny.
Niestety wymaga to dużej ilości kliknięć, żeby zachować plik w Smultronie, przełączyć okno do TeXShopa i uruchomić kompilowanie.
Z tego, co mi wiadomo, TeXShop zawiera jakieś przygotowane AppleSkrypty, ale nie wiem, jak się do nich dobrać.
Myślałam też, żeby wykorzystać tzw. Folder Actions, niestety nie ma dla nich opcji wykonania skryptu, gdy np. pewien określony plik zmieni się (np. będzie miał nową datę), a tylko przy dodawaniu, usuwaniu plików.

Idealnym rozwiązaniem byłoby: <jabłko> + S w Moim Ulubionym Edytorze wywoływałoby odpowiedni skrypt, np. latex/bibtex/latex/latex, po czym okienko podglądu by się odświeżało, na tej stronie, która była ostatnio otwarta. W przypadku błędu otwierałaby się również konsola z outputem

Jestem pewna, że to rozwiązanie jest możliwe i jestem pewna, że jest nawet więcej dróg, żeby je osiągnąć (np. kompilować można z TeXShopa albo wywołując polecenie shellowe

Następnym punktem do rozważenia jest, jak to zrobić, żeby działał pdfsync. Nigdy nie używałam tego narzędzia wcześniej, ale skoro istnieje, czemu by nie! Czasem może być przydatne. Służy do przełączanie między źródłem a podglądem, przy czym przeskakuje się zawsze do miejsca, które wskaże kursor. Podobno jest jakiś problem tutaj z TeXShopem/zewnętrznym edytorem.

Oczywiście musiałaby istnieć możliwość dopasowania, czy ma to być [pdf|xe|]latex.

[*] np. numery linii pojawiły mi się od końca do początku i... w lustrzanym odbiciu!


Update [13:00]

Obecny stan wiedzy:
z TextWranglerem się da tak:

tell application "TextWrangler"
        set fileName to (file of text window 1) as text
end tell
set unixname to POSIX path of fileName
set oldDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to "/"
-- pull the path out as a string and strip off the filename
set pathText to unixname
set pathList to (text items of pathText)
set docName to last item of pathList
set AppleScript's text item delimiters to oldDelimiters
tell application "TextWrangler"
        save text document docName
end tell
tell application "TeXShop"
        activate
        open fileName
end tell
tell document docName of application "TeXShop"
        activate
        typesetinteractive
end tell

Skrypt powoduje, że w TeXShopie otwiera się aktualnie edytowany w TextWranglerze plik, kompiluje się i odświeża/otwiera podgląd. Tylko niech mi ktoś jeszcze powie, jak ten skrypt wywołać przy zapisywaniu pliku to już będę szczęśliwa. Niech będzie i TextWrangler, choć może zadziała i z Smultronem. Aha, skrypt oryginalnie odnosił się do BBEdita, którego nie posiadam, ale to są dwie wersje tego samego edytora, jeśli się nie mylę (jedna platna druga nie), więc nie ma problemu.

Update [13:19]

Znalazłam ciekawą funkcję w TextWranglerze: dowiązanie skryptu do dowolnego elementu Menu. Działa to tak, że skrypt musi być nazwany jak element menu, np. File•Save (• rozdziela poziomy) i zapisany w katalogu ~/Library/Application Support/TextWrangler/Menu Scripts. Można wykonać skrypt przed i/lub po wykonaniu funkcji z Menu.

Mój skrypt wygląda następująco:

on menuselect(menuName, itemName)
        return false
end menuselect

on postmenuselect(menuName, itemName)
        tell application "TextWrangler"
                set fileName to (file of text window 1) as text
        end tell
        set unixname to POSIX path of fileName
        set oldDelimiters to AppleScript's text item delimiters
        set AppleScript's text item delimiters to "/"
        -- pull the path out as a string and strip off the filename
        set pathText to unixname
        set pathList to (text items of pathText)
        set docName to last item of pathList
        set AppleScript's text item delimiters to oldDelimiters
        tell application "TextWrangler"
                save text document docName
        end tell
        tell application "TeXShop"
                activate
                open fileName
        end tell
        tell document docName of application "TeXShop"
                activate
                typesetinteractive
        end tell
end postmenuselect

i działa dokładnie tak, jak sobie wymarzyłam: po zapisaniu pliku włącza się odpowiedni engine techowy i otwiera się/odświeża się podgląd w TeXShopie. Proste i genialne!

Wygląda na to, że na razie rezygnuję z pięknego i prostegu Smultrona. Chyba, że ktoś mi powie, jak zrobić w nim to samo.

Dwa programy obok siebie.

A co mi tam!

3 komentarze

Dawno nie było linuksowych wpisów, co? No więc szykuję niespodziankę dla mojej przyjaciółki – chcę jej oddać mój stary komputer, bo i tak tylko się u mnie kurzy odkąd mam PB. Od roku stał na podłodze i dziś postanowiłam się wziąć, wysprzątać, przeinstalować jej wszystko od zera i jutro wręczyć. No i chciałam zajrzeć do starego dobrego ubuntu, a tu klęska: nie pamiętam ani hasła ani loginu!
Wypróbowałam wszystkie chyba kombinacje, jakie mi pryszły do głowy i nic. No więc próbuję startować z live cd, poszło gładko, ale i tak jakoś nie mogłam się dostać na dysk, żeby go przejrzeć.
Na szczęście znalazł się kolega znający się na rzeczy. Powiedział, jak zamontować, a potem użyć chroot /mnt/hd.. i passwd i gotowe. Reboot, loguję się jako root. Działa! Hurra!


www.flickr.com
typoagrafka's photos More of typoagrafka's photos