[cstex] Spojování TeXových zdrojových textů

Jaroslav Hajtmar hajtmar at gyza.cz
Fri Mar 2 08:28:29 CET 2018


Dobrý den.
Panem Olšákem navržené řešení funguje dokonale, dokonce se do výsledného souboru inkludují i soubory, které jsou inkludované zevnitř inkludovaných souborů, takže úplná spokojenost. Takže díky za vyřešení mého problému - už nic nemusím programovat Perlem nebo Pythonem. 

Pro konferenci dodávám, že jistá část komunikace mezi mnou a panem Olšákem probíhala soukromě, kdy pan Olšák zohledňoval moje specifické přání na parametry načítacího - inkludovacího makra. Problém s UTF8 se snadno vyřeší kompilací xetexem nebo luatexem, v nichž  řešení pana Olšáka taky funguje.

Ještě jednou díky za všechny rady a panu Olšákovi obzvlášť za nabídnuté elegantní a funkční řešení.
Zdraví Jarda Hajtmar


Dne 23.02.18 15:44, csTeX za uživatele Petr Olsak <cstex-bounces at cs.felk.cvut.cz za uživatele petr at olsak.net> napsal(a):

    
    Dobrý den,
    
    dá se experimentovat i na úrovni maker TeXu. Předpokládejme, že máte 
    soubory:
    
    ---------- a.tex s obsahem:
    
    AAA: aha
    
    umm
    
    end: AAA
    
    ---------- b.tex s obsahem:
    
    BBB
    
    \include c.tex
    \include d.tex
    
    BBBend
    
    ---------- c.tex s obsahem:
    
    CCC
    
    ---------- d.tex s obsahem:
    
    DDD
    
    ---------- main.tex s obsahem
    
    \newwrite\outfile
    \immediate\openout\outfile=allfiles.tex
    
    \let\ea=\expandafter
    \everyeof={\eof}
    \let\endfile=\end
    \def\tmp#1{}\edef\\{\ea\tmp\string\\}  \edef\%{\ea\tmp\string\%}
    \def\printout{\immediate\write\outfile}
    \long\edef\catfilesA#1\eof{\noexpand\splitparts#1\\include.\relax}
    \ea\def\ea\splitparts\ea#\ea1\\include#2{%
        \printout{#1}%
        \ifx.#2\ea\endfile \else \ea\catfilesB \fi
    }
    \def\catfilesB #1.tex#2{%
        \bgroup
           \printout{\% --- included file #1.tex}
           \let\endfile=\relax \ea\catfilesA\input #1.tex
           \printout{\% --- end of file #1.tex}
        \egroup
        \splitparts
    }
    \def\catfiles{\endlinechar=`\^^J \newlinechar=\endlinechar
        \def\do##1{\catcode`##1=12}\dospecials
    %   \tracingall
        \catfilesA
    }
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \catfiles
    
    aha \uff(a$#$
    
    \include a.tex
    \include b.tex
    
        uffEND
    
    \konecdokumentu
    
    ---------------------------------
    
    pak po zpracování příkazem pdfcsplain main.tex získáte
    
    ------------ allfiles.tex s obsahem:
    
    
    aha \uff(a$#$
    
    
    % --- included file a.tex
    
    AAA: aha
    
    umm
    
    end: AAA
    
    
    % --- end of file a.tex
    
    % --- included file b.tex
    BBB
    
    
    % --- included file c.tex
    CCC
    
    % --- end of file c.tex
    
    % --- included file d.tex
    DDD
    
    % --- end of file d.tex
    
    BBBend
    
    % --- end of file b.tex
    
        uffEND
    
    \konecdokumentu
    
    -------------------------
    
    Přeji příjemné experimentování.
    
    Zdravím
    
    Petr Olšák
    
    
    
    On Thu, 22 Feb 2018, Jaroslav Hajtmar wrote:
    
    > 
    > Dobrý den.
    > 
    > Díky za výborný tip. Je to sice pro LaTeX, ale je tam PERL skript, který by měl jít
    > modifikovat, aby mi to fungovalo v ConTeXtu.
    > 
    > Jarda Hajtmar
    > 
    >  
    > 
    >  
    > 
    > Od: csTeX <cstex-bounces at cs.felk.cvut.cz> za uživatele Miroslav Fikar
    > <miroslav.fikar at stuba.sk>
    > Příjemce odpovědi: Czech and Slovak list <cstex at cs.felk.cvut.cz>
    > Datum: čtvrtek 22. února 2018 8:07
    > Komu: Czech and Slovak list <cstex at cs.felk.cvut.cz>
    > Předmět: Re: [cstex] Spojování TeXových zdrojových textů
    > 
    >  
    > 
    > https://www.ctan.org/pkg/latexpand
    > 
    > by mal robit nieco podobne v latexu, neviem, ci aj pre context.
    > 
    > mf
    > 
    >  
    > 
    > 2018-02-21 15:10 GMT+01:00 Jaroslav Hajtmar <hajtmar at gyza.cz>:
    >
    >       Dobrý den.
    >
    >       Nenapadá někoho, jakým automatizovaným způsobem by se dalo spojit velké
    >       množství zdrojových textů, načítaných do hlavního zdrojového textu pomocí
    >       makra \include, do jediného jednosouborového  zdrojáku, který by šel
    >       následně zkompilovat např. pomocí nějakého online nástroje ala TeXonWeb?
    >
    >       Mám velké množství souborů a nechci všechnu práci dělat ručně.
    >
    >        
    >
    >       Mám na mysli např. nějakou direktivu, která při TeXové překladu vygeneruje
    >       spojený text nebo nějaký skript v Pythonu, Perlu atd..
    >
    >        
    >
    >       Díky a jsem s pozdravem.
    >
    >       Jarda Hajtmar
    >
    >        
    >
    >        
    > 
    > 
    > _______________________________________________
    > csTeX mailing list
    > csTeX at cs.felk.cvut.cz
    > https://lists.felk.cvut.cz/mailman/listinfo/cstex
    > 
    >  
    > 
    > 
    >




More information about the csTeX mailing list