[cstex] Znak # a výstup do indexu

"Procházka Lukáš Ing. - Pontex s. r. o." LPr at pontex.cz
Wed Sep 9 11:06:09 CEST 2009


... Díky za vysvětlení, změna \catcode u # těsně před koncem pomáhá. 
Chce to ještě upravit index style file (.ids), aby zas LaTeXu nevadil 
samostatně stojící # v indexu, ale to asi půjde.

- Ve variantě se zdvojenými ## v .idx jsem ještě zvažoval prohnat .idx 
nějakým primitivním perlovým skriptem, který by ## nahrazoval za \#.

Zdravím

Lukáš Procházka



Petr Olsak wrote:
>
> On Tue, 8 Sep 2009, "Procházka Lukáš Ing. - Pontex s. r. o." wrote:
>
>> Zdravím v konferenci,
>>
>> mám dotaz. Snažím se vymyslet makro, které by přijalo parametr, ten 
>> vypsalo a zároveň zapsalo položku do indexu. Problém je, že parametr 
>> obsahuje znak(y) # - podobně jako např. v C direktiva #include. Makro 
>> se má jmenovat \DIREC a má se použít stylem \DIREC{#include}, tj. 
>> cílem je nepsat znak \ před # (tedy ne \DIREC{\#include}).
>>
>> Pokud je # pouze na začátku, problém by se dal vyřešit tak, že bych 
>> předával parametr bez úvodního #, ten by si přidávalo až samo makro.
>>
>> Ale pokud je uvnitř?
>>
>> Zkouším něco v tomto duchu (hodně použit kód pana Wagnera z některé z 
>> minulých diskusí):
>>
>> \documentclass{article}
>> \usepackage{index}
>> \newindex{default}{idx}{ind}{}
>> \begin{document}
>>  \def\DIREC{\bgroup\catcode`\#=12 \doDIREC}
>>  \def\doDIREC#1{\egroup\texttt{#1}\index{#1}}
>> \DIREC{#include}
>> \printindex
>> \end{document}
>>
>> Výpis do .pdf je OK, ale zápis v .idx má zdvojený znak #:
>>
>> \indexentry {##include}{1}
>>
>> A to zdvojení # se snažím odstranit - to pak (samozřejmě) vadí při 
>> načtení indexu.
>
> Dobry den,
>
> problemy jsou dva.
>
> 1. Jakmile TeX narazi na znak kategorie 6 (tj. typicky #) v seznamu 
> tokenu a je povinnen tento seznam tokenu vypsat na terminal nebo do 
> souboru pomoci \write, tak tento znak zdvoji. Vyzkousejte si: 
> \message{a:#} nebo
> \immediate\write0{b:#}. Je to dusledek tretiho radku ve zdrojovem kodu 
> TeXu v paragrafu 294 (unitr rutiny show_token_list). Abych pravdu 
> rekl, nepodarilo se mi tuto vlastnost najit zdokumentovanou v 
> TeXbooku, ale pozorni ctenari tohoto listu ji tam urcite najdou a 
> pripadne me doplni.
>
> 2. LaTeX pracuje tak, ze si uklada obsahy parametru \index do 
> souboru.aux a ten pak na konci znovu precte. V souboru je pak 
> napriklad psano:
> \@writefile{default}{\indexentry{#include}{13}}
> Tento soubor nacte LaTeX na konci zpracovani (v okamziku 
> \end{document}). V tu chvili uz je \catcode`\#=6, takze se tokenizuje 
> dany radek s kategorii 6 a pri tisku do souboru se dle odstavce 1 ten 
> kriz zdvoji.
>
> Pomuze tesne pred \end{document} napsat \catcode`\#=12, tedy dokument 
> uzavrit konstatovanim:
>
> \catcode`\#=12 \end{document}
>
> Nevim zcela jiste, zda to nenaboura nejake dalsi predpoklady, ktere 
> nektere LaTeXove balicky mohou mit, tj. zda to bude fungovat za vsech 
> okolnosti. Ale v zasade by to fungovat melo.
>
> Zdravim
>
> Petr Olsak
>
>
>
> __________ Informace od NOD32 4406 (20090908) __________
>
> Tato zprava byla proverena antivirovym systemem NOD32.
>  part000.txt - je v poradku
>  part001.txt - je v poradku
>
> http://www.nod32.cz
> ------------------------------------------------------------------------
>
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> http://lists.felk.cvut.cz/mailman/listinfo/cstex
>
>
>
> __________ Informace od NOD32 4406 (20090908) __________
>
> Tato zprava byla proverena antivirovym systemem NOD32.
>   part000.txt - je v poradku
>   part001.txt - je v poradku
>
> http://www.nod32.cz
>   
-------------- next part --------------
A non-text attachment was scrubbed...
Name: LPr.vcf
Type: text/x-vcard
Size: 363 bytes
Desc: not available
URL: <http://lists.felk.cvut.cz/pipermail/cstex/attachments/20090909/56e55e95/attachment-0003.vcf>


More information about the csTeX mailing list