🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.dtp.tex
Article #17217

Re: LaTeX wyrazenie regularne do zamiany znaków specjalnych

#17217
From: Jarosław Sokołowski
Date: Fri, 14 Mar 2014 12:10
53 lines
2674 bytes
Pan Cezary Grądys potrzebuje w tekscie zamienić znaki specjalne
typu '\ & # %' na odpowiedniki możliwe do wydruku:

> To chyba typowy problem, może ktoś ma gotowe wyrazenie regularne?
>
> Na razie próbuję tak (perl):
>
> $opis_problemu =~ s/\\/\$\\backslash\$/g ;
> $opis_problemu =~ s/([\&\$\%\#\_\{\}])/\\$1/g ;
> $opis_problemu =~ s/~/\\~{}/g ;
>
> Było by OK gdyby nie ten '$' dodawany w 1 linijce, w drugiej jest 
> zamieniany i lipa ):
>
> A może jest inna metoda na wydruk '\' niż $\backslas$ ?

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ą.

Można też zaryzykować polecenie 

\catcode`\\=11

co sprawi, że niczego już więcej nie zdefiniujemy. Czasem nie trzeba
więcej definicji, i to się sprawdza. Jeśli nie, to można wcześniej
nadać zerową kategorię innemu znakowi, o którym wiemy, że nie będzie
nigdy drukowany. Na przykład:

\catcode`\|=0

sprawi, że będzie można (i trzeba) pisać:

|def|foo{bar}

zamiast:

\def\foo{bar}

-- 
Jarek
Technical Details
Message-ID: <slrnli5se2.nh7.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!goblin1!goblin.stu.neva.ru!news.glorb.com!feed.news.qwest.net!mpls-nntp-02.inet.qwest.net!nx02.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <lfuo6k$pa7$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!goblin1!goblin.stu.neva.ru!news.glorb.com!feed.news.qwest.net!mpls-nntp-02.inet.qwest.net!nx02.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-01.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>
Organization: : : :
Date: Fri, 14 Mar 2014 13:10:42 +0100
User-Agent: slrn/pre1.0.2-12 (Linux)
Mime-Version: 1.0
Message-ID: <slrnli5se2.nh7.jaros@falcon.lasek.waw.pl>
Lines: 53
NNTP-Posting-Host: 77-253-217-116.ip.netia.com.pl
X-Trace: 1394799042 unt-rea-b-01.news.neostrada.pl 2228 77.253.217.116:47651
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit