[cstex] Ještě jeden problém s \_

Zdenek Wagner zdenek.wagner at gmail.com
Wed Aug 26 15:50:51 CEST 2009


2009/8/26 "Procházka Lukáš Ing. - Pontex s. r. o." <LPr at pontex.cz>:
> ... I mně to funguje - mnohokrát děkuji.
>
> Zhruba rozklíčovávám, jak Vaše makro pracuje (asi mě to dost obohatí, jestli
> je pochopím beze zbytku). Sám bych jej dohromady nedal.
>
Základ je, že se vše musí expandovat ve správném okamžiku. To mě učil
v mých začátcích v roce 1992 Phil Taylor. Trik s \expandafter je z
TBN, díky tomu nepotřebuji globální definici, protože v některých
situacích je \gdef nežádoucí.

> S přáním hezkého zbytku dne
>
> Lukáš Procházka
>
>
>
> Zdenek Wagner wrote:
>>
>> 2009/8/26 "Procházka Lukáš Ing. - Pontex s. r. o." <LPr at pontex.cz>:
>>
>>>
>>> Dobrý den,
>>>
>>> řeším ještě jeden problém s interpretací znaku "_".
>>>
>>> Pokouším se vyrobit makro:
>>>
>>> \def\LOF#1#2{\subsubsection*{Výpis souboru #1:}\VerbatimInput{#2/#1}}
>>>
>>> Tj. takové, které napíše jakýsi napdpis "Výpis souboru:" a potom jej
>>> vylistuje pomocí \Verbatiminput (fancyvrb.sty).
>>>
>>> Paramtery, které se předávají, je #1 - jméno souboru, #2 - cesta k němu.
>>>
>>>
>>
>> \documentclass{article}
>> \usepackage{fancyvrb}
>> \def\LOF{\begingroup \catcode`\_=13 \doLOF}
>> \def\doLOF#1#2{\endgroup \backslashed \section{#1}\begingroup
>>    \uLetter \VerbatimInput{#2/#1}\endgroup}
>> {\catcode`\_13
>> \expandafter}\expandafter\def\noexpand_{\MyUnderscore}
>> \def\backslashed{\let\MyUnderscore\_}
>> \def\uLetter{\let\MyUnderscore_}
>> \begin{document}
>> \LOF{a_b.txt}{./}
>> \end{document}
>>
>> Tohle mi funguje.
>>
>>
>>>
>>> Problém ovšem je, že jménem souboru je "_Bm1.bat" (a cesta např.
>>> "C:\Test\Be-v12"), takže volání:
>>>
>>> \LOF{_Bm1.bat}{C:/Test/Be-12} kolabuje s hláškou:
>>>
>>> ! Missing $ inserted.
>>> <inserted text>
>>>              $
>>> l.89  }
>>>
>>> Podobně \LOF{\_Bm1.bat}{C:/Test/Be-12} nefunguje:
>>>
>>> ! FancyVerb Error:
>>>  No verbatim file X:/Users/LPr/Public/Beam.1-3/../\protect \unhbox
>>> \voidb at x
>>> \k
>>> ern .06em\vbox {\hrule width.3em}Bm1.bat
>>> .
>>> \FV at Error ... {FancyVerb Error:
>>> \space \space #1
>>> }
>>>
>>> l.89  }
>>>
>>> Zkrátka - kvůli \section potřebuji předávat \_Bm1.bat, kvůli
>>> \Verbatiminput
>>> _Bm1.bat.
>>>
>>> Podotýkám, že znak "_" (i "-" kvůli \shorthandoff{-}) se nemusí
>>> vyskytovat
>>> pouze na prvním místě, ale kdekoli ve jméně souboru nebo cesty.
>>>
>>> Neřešil někdy někdo podobný problém? Jak to vyřešit?
>>>
>>> Zdravím
>>>
>>> Lukáš Procházka
>>>
>>>
>>>
>>> _______________________________________________
>>> csTeX mailing list
>>> csTeX at cs.felk.cvut.cz
>>> http://lists.felk.cvut.cz/mailman/listinfo/cstex
>>>
>>>
>>>
>>
>>
>>
>>
>
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> http://lists.felk.cvut.cz/mailman/listinfo/cstex
>
>



-- 
Zdeněk Wagner
http://hroch486.icpf.cas.cz/wagner/
http://icebearsoft.euweb.cz



More information about the csTeX mailing list