Article View: pl.comp.dtp.tex
Article #17220Re: LaTeX wyrazenie regularne do zamiany znaków specjalnych
From: Jarosław Sokołowski
Date: Fri, 14 Mar 2014 17:27
Date: Fri, 14 Mar 2014 17:27
45 lines
3468 bytes
3468 bytes
Pan Cezary Grądys napisał: >> Zacznijmy od tego, że nie są to 'znaki specjalne' jakiegoś jednego typu, >> tylko znaki, które należą do różnych *kategorii*. I tak # ma kategorię 6 >> (parameter character), znak % kategorię 14 (comment character), znak & >> kategorię 4 (alignment tab), a znak \ kategorię 0, czyli 'active", co >> oznacza, że tworzy on sekwencje bądź znaki sterujące. >> >> Z tymi trzema pierwszymi poradzić sobie można łatwo nadając im kategorię >> 11 (other), do której należą na przykład znaki interpunkcyjne. Piszemy: >> >> \catcode`\&=11 >> \catcode`\#=11 >> \catcode`\%=11 >> >> i od tej pory nie możemy przy ich pomocy tworzyć tabel, makr i komentarzy, >> ale za to drukują się takie, jakie są. > > Dzięki serdeczne, to się może przyda, ale tu akurat mam to w tabeli. > Wpadłem na taki pomysł, że zamienię ten $ na tabulację i nie bedzie > przeszkadzał, a potem z powrotem tabulację na $. Trochę to nieelegancko, > ale powinno zadziałać. Tabulacji raczej w tym tekscie nie będzie, bo > jest to czytane z pliku csv gdzie pola rozdzielone są tabulacją. Więc > jakby co problem wystąpi wcześniej. Rolę tabulatora niekoniecznie musi pełnić ampersand (&), kategorię 4 można nadać również innemu znakowi, na przykład "|" i łykać tabele, w których kolumny oddzielane są oldskulowo znakiem kreski pionowej. TeX nie jest systemem, w którym znaki alfabetu wejściowego pełnią z góry określoną funkcję. To można zmieniać, można określić co jest, a co nie jest literą, co jest tabulatorem, co zaznacza komentarz itd. Jak komuś żal znaków ASCII na te specjalne zastosowania, może użyć znaków z drugiej połówki tabeli ośmiobitowyej i na przykład komentarze oznaczać przez §, a uwalniając % jako normalnie drukowany znak. Teraz dopiero zauważyłem, że w opisywanej sytuacji czytanie inputu ze znakami o niedrukowalnych kategoriach, to tylko część problemu. Zdaje się, że problemem jest również drukowanie tych znaków. Napisanie $\backslash$, gdy chcemy po prostu uzyskać "\", to chyba najgorsze rozwiązanie. Lepiej napisać \char92. W przypadku użycia $$, otrzymamy znak z zupełnie innego fontu, przeznaczonego do składu wyrażeń matematycznych. -- Jarek
Technical Details
Message-ID:
<slrnli6evf.shk.jaros@falcon.lasek.waw.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin.stu.neva.ru!feeder.erje.net!eu.feeder.erje.net!newsfeed.fsmpi.rwth-aachen.de!feeder1-2.proxad.net!proxad.net!feeder2-2.proxad.net!nx01.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mailReferences:
<lfuo6k$pa7$1@news.vectranet.pl> <slrnli5se2.nh7.jaros@falcon.lasek.waw.pl> <lfv9di$u9i$1@news.vectranet.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin.stu.neva.ru!feeder.erje.net!eu.feeder.erje.net!newsfeed.fsmpi.rwth-aachen.de!feeder1-2.proxad.net!proxad.net!feeder2-2.proxad.net!nx01.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail Newsgroups: pl.comp.dtp.tex From: Jarosław Sokołowski <jaros@lasek.waw.pl> Subject: Re: LaTeX wyrazenie regularne do zamiany znaków specjalnych References: <lfuo6k$pa7$1@news.vectranet.pl> <slrnli5se2.nh7.jaros@falcon.lasek.waw.pl> <lfv9di$u9i$1@news.vectranet.pl> Organization: : : : Date: Fri, 14 Mar 2014 18:27:11 +0100 User-Agent: slrn/pre1.0.2-12 (Linux) Mime-Version: 1.0 Message-ID: <slrnli6evf.shk.jaros@falcon.lasek.waw.pl> Lines: 45 NNTP-Posting-Host: 77-253-217-116.ip.netia.com.pl X-Trace: 1394818031 unt-rea-a-02.news.neostrada.pl 2155 77.253.217.116:48783 X-Complaints-To: abuse@news.neostrada.pl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit