Plain: problem s \immediate - delsi

David Kuzela kuzela at mbox.vol.cz
Mon Nov 15 08:59:39 CET 1999


Zdravim,

narazil jsem na problem se Subj., ktery nechapu. Mel jsem totiz za to, ze TeX
\immediate pouziva jenom pro \write, \openout, \closeout. Nasledujici priklad
mi ale dava rozdilny vysledek, pokud ho (ne)pouziji pred \exapandafter a nebo 
\ifnum.

S TeXem zacinam, takze nasledujici ukazka asi neni nejefektivnejsim prikladem
pro reseni daneho problemu -- nekamenujte me za to :-). Ze stejneho duvodu by
se nekomu mohlo zdat divne umistovani komentaru na konec vetsiny radku; resim
tak problem se zavlekanim mezer do maker, protoze se mi stale jeste prilis ne-
dari rozlisovat pripady, kdy komentar nutny je a kdy nikoliv.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[ Ukazka ]%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Odkazy v textu
% 
\newcount\webnumber  
\newcount\pomnum
\webnumber = 0             % Zatim pouzivam jenom odkazy na web 
%
% Makro pro vytvoreni odkazu
%
\long\def\begodkaz #1#2#3\endodkaz{
%
%  Pomocny radek vysvetlujici syntaxi prikazu:
%  prvni parametr bude ziskavat hodnoty web, mail, file etc.
%  Zatim pouzivam jen web. Treti parametr obsahuje popis, ktery se 
%  (zvyrazneny) zobrazi v textu.
%
%  \medskip{\bf Odkaz na [#1] na adresu [#2] s popisem [#3] }\medskip% 
%
   \let\number=\webnumber%
   \global\advance\number1%
   \immediate\message{definuji makro |odkaz#1\the\number| -> |#2|}%
%
% Problem: Pokud v nasl. radku vynecham prikaz \immediate, nastane problem.
%  makra se totiz definuji jako "odkazweb0...odkazweb[n]" a nikoli, jak bych 
%  cekal jako "odkazweb1..."
%  V TeXbooku naruby je ale uvedeno, ze se \immediate pouziva pred prikazy 
%  pracujicimi se soubory. (sam jsem ho pouzil pouze z naprosteho zoufalstvi,
%  bez viry v uspech). 
%
   \immediate\expandafter\global\expandafter\xdef\csname odkazweb\the\number \endcsname%
      {{\bf web: \the\number\qquad#2}\par}%
      {\bf#3 [#1 \the\number]}% vypise text odkazu
}
%
% Makra pro vytvoreni seznamu odkazu na konci clanku
%
\def\mkodkazy{\mkodkazyweb}
%
\def\mkodkazyweb{
   \pomnum=0%
   \ifnum\webnumber=0 \next=\relax \message{Zadne odkazy na web nejsou}%
      \else \let\next=\doweblinks%
   \fi%
   \next%
}
%
\def\doweblinks{
   \global\advance\pomnum1%
%
% Tady nastava podobny problem. Pokud vynecham \immediate, \message mi rekne, ze
%    konec zpracovavani odkazu u c. [5] <-> [4], coz opravdu nechapu.
%
   \immediate\ifnum\pomnum=\webnumber \let\next=\relax%
   \message{konec zpracovavani odkazu u c. [\the\pomnum] <-> [\the\webnumber]}%
           \else \let\next=\doweblinks \fi%
%
%  nasl. prikaz vypise adresu obsazenou v odkazu ve tvaru:
%    web 1:     http://www.cstug.cz
%
   \csname odkazweb\the\pomnum \endcsname%
   \next%
}
%
% Vlastni text 
%
\input ./text.clanku.tex
%
% Vytvoreni odkazu
%
\vfill\eject
\title Odkazy
%
\mkodkazy
%
\end
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[ Konec ]%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Predem dekuji 

-- 
                                   David Kužela
==[Dawyd]======[icq]=[24470559]===================
 email:       kuzela at mbox.vol.cz   Student of VSE
 web:   http://penguin.cz/~dawyd   Czech republic
==================================================




More information about the csTeX mailing list