joanna.ludmila@googlemail.com :
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!
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.
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.
Szczerze mówiąc to nie wiem, ale patrząc na takie problemy z LaTeX-em pod Macintoshem to chyba jednak nie kupię tego cuda od Apple, bo nie będę w stanie składać dokumentów…
Żeby ludzie takie problemy mieli jak ja…
emacs?
http://aquamacs.org/
No przecie mówię, że Smultron :)
Emacsa próbowałam, długo. I na razie nie.
droga do swiatyni madrosci prowadzi nieraz sciezka wystepku :P
hihi…
Mimo wszystko – na razie Emacsowi dziękuję. :P
Joanna: A TextMate próbowałaś? Wiem, że płatny ale bardzo ładnie współpracuje z LaTeXem (przynajmniej z tą dystrybucją którą posiadam) ma kolorowanie składni, snippety, chyba kompilowanie i wyświetlanie pod jednym czy 2 klawiszami..
Cthulu – kilka miesięcy temu próbowałam. Niestety niezbyt intensywnie, a mój czas wersji trial się już skończył i dalej nie mogę testować. Myślę, że to też jest jeden z tych edytorów, które mogłabym polubić.
Hmm.. nie dodał mi się komentarz.. no to jeszcze raz.
Kasując plik konfiguracyjny przywrócisz TextMate do stanu sprzed odpalenia – i znów będziesz miała te kilkanaście dni na przetestowanie. Niestety nie powiem ci który to bo mój iBook od miesiąca w naprawach jest.
Zachęcam do bliższego przyjrzenia się mu bo sam byłem oczarowany jak po raz pierwszy go zainstalowałem. Nawet vima przestałem używać gdy siedzę na Maku..
@Joanna: w piątek po fajrancie spotkałem się z kumplem, który pod niebiosa mi sławił ergonomiczność Mac OS X’a. Same ochy i achy jaki świetny. A tu widzę, że aż tak różowo nie jest. No w każdym razie: a nie możesz zrobić sobie tego bez tych wszystkich cudactw? Ja jak piszę coś w LaTeXu to mam tak (pod Linuxem): (a) odpalonego kdevelopa z kodem źródłowym dokumentu, (b) odpaloną konsolę w katalogu z dokumentem. W katalogu tym mam skrypt, który mi międli dokument i odpala powstałego PDFa w viewerze PDF (kiedyś korzystałem z xpdf, teraz z evince). Pracuej się tak, że po prostu edytujesz, alt-tabem się przełączasz na konsolę i odpalasz skrypt, zamykasz viewera Alt+F4, powrót alt-tabem do kdevelopa itd. Możliwe, że dałoby się nawet w kdevelopie zdefiniować jakiś skrót do zmiędlenia i wyświetlenia PDFa, ale ja się już tak przyzwyczaiłem. Jak chcesz to mogę Ci nawet dać swój typowy skrypt, który robi PDFa.
Aha, w którymś z dokumentół, które edytuję mam nawet tak zrobione, że nie trzeba zamykać viewera, tylko skrypt przed zmiędleniem dokumentu ubija poprzedniego viewera.
No to z tego, co widzę, to u mnie działa to o wiele prościej. :P
Ja nic nie muszę zamykać ani przełączać, co najwyżej z powrotem z viewera do edytora. A na panoramicznym ekranie mam wszystkie okienka obok siebie. Może wrzucę jakiegoś screena.
@Piotr: Polecam poprawkę klawiatury która, likwiduje „ł” pod AltGr+w. :-)
No, jak masz ekran panoramiczny to insza inszość. Zaglądnąłem na chwilę do kdevelopa czy dało by się te kompilacje odpalać ze skrótu klawiszowego nop i widzę, że jest tam coś takiego jak „Skrypty”, ale dalej wygląda dziwnie … Chyba jednak zostanę przy swoim sprawdzonym sposobie.
A tak z ciekawości Joanno, skąd masz panoramę? Myślałem, że masz tylko 12” PB.. :]
Cthulu: mam 19” zewnętrzną, kupiłam w lutym, baardzo się przyjemnie na niej pracuje. Mój PB w domu pełni rolę jednostki centralnej i leży sobie grzecznie zamknięty w rogu biurka, a ja pracuję z normalnym monitorem, zewnętrzną klawiaturą i bezprzewodową myszą.
@Automaciej: dzięki! patch nie daje się zaaplikować, ale wzięłem z niego co trzeba i sobie wklepałem z palca. Działa.
Joasia, teraz jak dałaś screena to widać, miło … Też bym tak chciał.
ja-joanna: use vim, Luke^Werm to jest Leia. nie wiem jak to zadziała pod maciem, ale ja mam podbindowane robienie pdfa pod f7, wyświetlenie w acrobacie pod f8 :-], także przy (samej) edycji tylko gvim jest włączony :)
@Piotr: to ja (też linux) mam chyba bardziej ergonomicznie: pod emacsem na C-c C-c (czyli control-c dwa razy) mam: kompilację, jeśli plik się zmienił, a uruchomienie przeglądarki, jeśli właśnie został skompilowany. (Tzn. reguły są troszkę bardziej zawiłe, ale tak z grubsza to działa.) Mógłbym też ustawić w jakiejś konsoli cos w stylu
while [ true ] do; sleep 2; latex mój-plik; done
i wtedy co dwie sekundy sam by kompilował. Po przejściu do okna przeglądarki (xdvi, jeśli nie używam pgfa) nie muszę nic wciskać – sam się aktualizuje, prawie natychmiast.
O!
Faaajnie… teoretycznie w Linuksie dałoby się ustawić takie coś w każdym programie do edycji… po prostu (wiem, że można w gnomie… nie wiem jak w kde) przygotowujemy skrypcik, który kompilowałby nam odpowiedni plik, albo np. wszystkie pliki w jakimś katalogu. Nazywamy sobie jakoś optymalnie ten skrypcik, wrzucamy do jakiegoś /usr/bin, wchodzimy do edytora konfiguracji, wyszukujemy skróty klawiszowe, wpisujem skrót klawiszowy dla np. „Command 1”, przypisujemy dla „Command 1” nazwę tego skryptu i już za pomocą skrótu klawiszowego kompiluje nam się to nad czym pracujemy. Jedeynym ograniczeniem jest to, że możemy to robić co najwyżej w obrębie jednego katalogu (wtedy w skrypcie możemy uwzględnić daty, żeby przypadkiem nie kompilował wszystkich plików).
Jak ci się podoba rozwiązanie? Na Mac’u może też się da?
O! :P