The Linux Keyboard HOWTO: Jak zmusić inne programy do działania ze znakami spoza ASCII
Następna strona
Poprzednia strona
Spis treści
13. Jak zmusić inne programy do działania ze znakami spoza ASCII
W dawnych złych czasach było to wcale nużące. Każdy program z osobna
musiał być indywidualnie przekonywany do zostawienia twoich bitów
w spokoju. Nie żeby dzisiaj wszystko było łatwe, ale ostatnio wiele
narzędzi GNU nauczyło się reagować na LC_CTYPE=iso_8859_1 lub
LC_CTYPE=iso-8859-1. Spróbuj najpierw tego; jeśli nie pomoże,
spójrz na podpowiedzi poniżej. Zauważ że w nowszych wersjach libc
procedura setlocale() działa tylko jeżeli zainstalowałeś pliki
locale (tj. w /usr/lib/locale).
Przede wszystkim ósmy bit powinien przetrwać przetwarzanie danych
wejściowych w jądrze, więc upewnij się że ustawiłeś stty cs8
-istrip -parenb
A. Dla emacsa szczegóły w dużym stopniu zależą od wersji. Informacja
poniżej dotyczy wersji 19.34. Wstaw linie:
(set-input-mode nil nil 1)
(standard-display-european t)
(require 'iso-syntax)
do swojego $HOME/.emacs. Pierwsza linia (mówiąc ściślej -
końcowe 1) mówi emacsowi żeby nie obcinał ósmego bitu ze wprowadzanych
znaków. Druga linia mówi emacsowi żeby nie wyświetlał znaków spoza
ASCII jako wartości ósemkowych. Trzecia linia wyszczególnia właściwości
składni i tablicę konwersji małych/dużych liter dla zestawu znaków Latin-1.
Dwie ostatnie linie są zbędne jeżeli masz coś podobnego do
LC_TYPE=ISO-8859-1 w swoim środowisku (zmienna ta może też nazywać się
LC_ALL albo po prostu LANG. Jej wartość może być czymkolwiek co zawiera
ciąg znaków 88591, 8859-1 lub 8859_1).
To już dobry początek. Na terminalach które nie potrafią wyświetlać
symboli ISO-8859-1 spoza ASCII, komenda
(load-library "iso-ascii")
spowoduje że znaki akcentowane wyświetlane będą jako {,c}a. Jeśli twoja
klawiatura nie daje łatwego sposobu wprowadzania znaków spoza ASCII, to
(load-library "iso-transl")
uczyni dwuznakową sekwencję ^X8 znakiem składania [Compose], tak że
czteroznakowa sekwencja ^X8,c daje c-cedilla. Bardzo niewygodne.
Komenda
(iso-accents-mode)
włączy lub wyłączy tryb akcentów ISO-8859-1, w którym sześc klawiszy:
`, ', ", ^, , / są klawiszami diakrytyk które modyfikują następujący
po nich symbol. Kombinacje specjalne: c daje c z cedillą, d daje
islandzkie eth, t daje islandzkie thorn, "s daje niemieckie scharfes-s,
/a daje a z kółeczkiem, /e daje ligaturę ae, < i > dają guillemoty,
! daje odwrócony wykrzyknik, ? odwrócony pytajnik. '' daje akcent acute.
Jest to układ domyślny. Zmienna iso-languages jest listą par (nazwa języka,
układ akcentów), a układ niedomyślny wybrać można poprzez
(iso-accents-customize LANGUAGE)
Tutaj LANGUAGE może być jednym z "portuguese", "irish", "french",
"latin-2", "latin-1".
Ponieważ domyślnym klawiszem Compose w Linuxie jest Ctrl-., może
być wygodniej używać tego wszędzie. Spróbuj
(load-library "iso-insert.el")
(define-key global-map [?\C-.] 8859-1-map)
(Ta ostatnia linia nie będzie działać pod xterm, jeśli używasz
emacs -nw, ale w tym wypadku możesz wstawić)
XTerm*VT100.Translations: #override\n\
Ctrl <KeyPress> . : string("\0308")
do swojego .Xresources.)
B. Dla less, ustaw zmienną środowiskową LESSCHARSET=latin1
Zrób to również jeśli widzisz <255> lub <AD> w tym co
wypisuje man; niektóre wersje less będą oddawać "miękki"
myślnik (ósemkowo 0255, szesnastkowo 0xAD) w ten sposób, jeśli
nie pozwoli im się wypisywać Latin-1.
[jeśli to nie pomoże, wywołuj less z opcją -r, bądź ustaw alias.
Jeśli nawet to nie pomoże, albo masz powłokę która nie obsługuje
aliasów, ustaw zmienną LESSCHARDEF na wartość 32.224c - przyp. tłum.]
C. Dla ls, podaj opcję -N (być może zechcesz ustawić alias)
D. Dla bash (wersja 1.13.*), wstaw
set meta-flag on
set convert-meta off
i, według Danish HOWTO,
set output-meta on
do swojego $HOME/.inputrc.
E. dla tcsh, użyj
setenv LANG US_en
setenv LC_CTYPE iso_8859_1
Jeśli masz w swoim systemie nls, używane są odpowiednie algorytmy.
W przeciwnym razie tcsh założy iso_8859_1, niezależnie od wartości
podanych w zmiennych LANG i LC_TYPE. Patrz sekcja NATIVE LANGUAGE SYSTEM
w tcsh(1). Danish HOWTO twierdzi: setenv LC_CTYPE ISO-8859-1;
stty pass8)
F. Dla flex, podaj opcję -8, jeśli program przetwarzający
który ono tworzy ma operować na ośmiobitowych danych wejściowych
(oczywiście że ma).
G. Dla elm, ustaw displaycharset na ISO-8859-1.
(Danish HOWTO: LANG=C i LC_CTYPE=ISO-8859-1)
H. Dla programów używających curses (takich jak lynx David
Sibley donosi: "Zwykły pakiet curses używa ósmego bitu dla odwrócenia
kolorów tła i ekranu (patrz flaga _STANDOUT zdefiniowana w
/usr/include/curses.h). Niemniej ncurses zdaje się być
czyste ośmiobitowo i wyświetla iso-latin-8859-1 poprawnie.
I. Dla programów używających groff (takich jak man), upewnij
się że używasz -Tlatin zamiast -Tascii. Stare wersje programu
man używają również col, więc następny punkt stosuje się
odpowiednio.
J. Dla col, upewnij się że 1) ustawiony jest tak żeby wykonywać
setlocale(LC_CTYPE,""); i 2) ustawiłeś zmienną środowiskową
LC_CTYPE=ISO-8859-1.
K. Dla rlogin, użyj opcji -8.
L. Dla joe,
sunsite.unc.edu:/pub/Linux/apps/editors/joe-1.0.8-linux.tar.gz
działa podobno po wyedytowaniu pliku konfiguracyjnego. Ktoś inny powiedział:
"joe: wstaw opcję -asis do /isr/lib/joerc, w pierwszej
kolumnie.
M. Dla LaTeX: \documentstyle[isolatin]{article}.
Dla LaTeX2e: \documentclass{article}\usepackage{isolatin}
gdzie isolatin.sty jest dostępny z
ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit.
Ładna dyskusja na temat ISO-8859-1 i tego jak zarządzać ośmiobitowymi
znakami zawarta jest w pliku grasp.insa-lyon.fr:/pub/faq/fr/accents
(po francusku). Inną ładną dyskusję (po angielsku) można znależć w
rtfm.mit.edu:pub/usenet-by-group/comp.answers/character-sets/iso-8859-1-faq.
A jeszcze jedną (?), w ftp.vlsivie.tuwien.ac.at:/pub/8bit/FAQ-ISO-8859-1.
Jeśli chcesz poprawić program który żle zachowuje się ze znakami
ośmiobitowymi, musisz pamiętać o tym że jeśli używasz w nim typu
"signed char", znaki mogą mieć wartości ujemne, a używanie ich jako
indeksu tablicy nie uda się. Niektóre programy można poprawić dodając
rozsądnie rzutowania na typ unsigned char.
Następna strona
Poprzednia strona
Spis treści
Wyszukiwarka
Podobne podstrony:
Keyboard HOWTO pl 23 (2)Keyboard HOWTO pl (2)Keyboard HOWTO pl 7 (2)Keyboard HOWTO pl 21 (2)Keyboard HOWTO pl 14 (2)Keyboard HOWTO pl 15 (2)Keyboard HOWTO pl (3)bootdisk howto pl 13Keyboard HOWTO pl 5 (2)Keyboard HOWTO pl 19 (2)ax25 howto pl 13Keyboard HOWTO pl 6 (2)net 3 howto pl 13Keyboard HOWTO pl 16 (2)Module HOWTO pl 13 (2)Keyboard HOWTO pl 17 (2)ppp howto pl 13printing howto pl 13Serial HOWTO pl 13 (2)więcej podobnych podstron