Ryszard Kubiak <[EMAIL PROTECTED]> wrote:
> Jakub Narębski <[EMAIL PROTECTED]> napisał:
>> Czy ustawienia do Emacsa ułatwiające pisanie po polsku (sieroty) w LaTeX-u
>> (wrapper do tex-magic-space) też się nadają?
> Sierotki to świetne ułatwienie, z którego korzystam na co dzień. Byłoby
> jeszcze świetniejsze, gdyby nie wstawiało tyldy po niektórych zmianach
> wiersza, które są uznawane -- nie wiedzieć, czemu -- za sierotki tyldy
> godne. A ja takie tyldy muszę usuwać metodą cofania się na pierwszy znak
> i wpisywania Alt-Odstęp. A może mam złą wersję sierotek, bo to już zostało
> poprawione?
Jedyne wady używanego przeze mnie kodu jaki udawało mi się zauważyć to:
1. Czasami nie działa, np. dla "(i cośtam)". W query-replace można użyć
\b, tutaj nie wiem jak to naprawić (ale pewnie się da użyć lepszego
regexpa, patrz [nieprzetestowana] propozycja).
2. W trybie matematycznym tex-magic-space generalnie przeszkadza, stąd
napisałem makro do jego przełączania. Można pomyśleć o wykrywaniu trybu
matematycznego (np. za pomocą komend z Emacsowego pakietu AUCTeX do
latexa), ale to by pewnie znacznie spowolniło działanie.
3. W obecnej wersji nie działa automatyczne rozwijanie skrótów w
abbrev-mode. auto-fill-mode działa dzięki zaklęciu na końcu
tex-magic-space.
4. Ulepszona wersja mogłaby wstawiać w HTML.
> Ale nawet bez takiego wyprostowania sierotki powinny się znaleźć w archiwum.
Załączam używany przeze mnie kod:
;;; Magic space by Michal Jankowski <[EMAIL PROTECTED]>
;;; 'Ręcznie' można ją włączyć za pomocą M-x local-set-key SPC tex-magic-space.
;;; Można też użyć funkcji tex-toggle-magic-space, przypisanej do C-c SPC.
(defun tex-magic-space ()
"Magic-space - inserts non-breakable space after a single-letter word."
(interactive)
(if (string-match
"^\\(\\s \\|~\\)?[aeiouwz]$" ; może "\\b[aeiouwz]$" będzie lepsze?
(buffer-substring (max (point-min) (- (point) 2)) (point)))
(insert "~")
(insert " ")
(and auto-fill-function
(funcall auto-fill-function))))
;;; Przypisuje/wyłącza (przełącza) przypisanie tex-magic-space do spacji,
;;; (przydatne przy pisaniu matematyki), tylko dla trybów LaTeX-owych
(defun tex-toggle-magic-space ()
"Toggles TeX magic space, which inserts non-breakable TeX space
(i.e. ~) after a single-letter word"
(interactive)
;; starsza wersja
; (if (local-key-binding " " 'tex-magic-space)
; (local-unset-key " ")
; (local-set-key " " tex-magic-space)
;; nowsza wersja
(progn
(if (equal (lookup-key TeX-mode-map " ") 'tex-magic-space)
(progn
(define-key TeX-mode-map " " nil)
(local-unset-key " ")) ; to be sure
(define-key TeX-mode-map " " 'tex-magic-space))
(message "SPC is binded to %s" (lookup-key TeX-mode-map " "))))
--
Jakub Narębski mailto:[EMAIL PROTECTED]
ZTHiL IFT UW http://info.fuw.edu.pl/~jnareb/