For smyčka a picture prostředí

Libor Tvrdik ltvrdik at trask.cz
Sun Jan 4 12:35:46 CET 2004


Dobrý den,

Potřebuji napsat makro, které mi vstupní parametr rozebere na jednotlivé tokeny (znaky) a podle jejich hodnoty bude vypisovat grafické entity *). Vzal jsem na pomoc TeXbook na ruby od pana Olšáka **). Trochu jsem přiohnul definici for smyčky aby fungovala i na LaTeXu (^^ mu nejsou po chuti). A zkusil ji použít.

Do té doby než ji obalím picture prostředím je vše ke spokojenosti. Viz \for{#1}##1\endfor. Ale použití uvnitř \begin{picture} je odměněno hromádkou  chyb při překladu:

Paragraph ended before \for was complete. (ř.16)
Undefined control sequence. (ř.16) 
A další...

------------- Soubor tmp.tex --------------------------

\documentclass[12pt]{report}
\usepackage[latin2]{inputenc}
\usepackage{czech}
\usepackage{graphicx}
\usepackage{epic}
\begin{document}

\include{makros}

\chapter*{asd}

Pred
\tmp{Aia} .ii
Po as ask ...

\end{document}

------------- Soubor makros.tex ------------------------

%For smyčka, původní autor Petr Olšák (2000,TeXbook naruby)
%Jako parametr nesmí být uvedena pipe | - separátor
\def\for #1#2\endfor{\def\forbody##1{#2}\let\next=\forcycle
   \next #1|}
\def\forcycle#1{\if #1|\let\next=\relax
                \else \forbody #1%
                \fi \next}
%V těle cyklu \for se může vyskytnout #1.

\def\tmp #1{

	\for{#1}
		##1
	\endfor

	\unitlength=1mm
	\begin{picture}(120,10)

		\newcount\startCircleTmp
		\startCircleTmp=1

		\for{#1}{

			\put(\startCircleTmp,7){\circle*{1.5}}

			%přičti 10 za každý token
			\advance\startCircleTmp by + 10

		}\endfor
	\end{picture}
}

--------------------------------------------------------

Předem děkuji za usměrnění.
Libor Tvrdík


*) Hlubší význam je oddílové šifrování. Rád bych napsal makra pro jednoduché algoritmy typu Velký polský klíč (též známý jako Šuplíky), kde jsou jednotlivá písmena nahrazována přes fixní mřížku.
           ---+
Např.: A = o  |
           ---+

**) Mimochodem nevíte kde je možné (fyzicky - chci si je ošahat :)) zakoupit i ostatní knihy, skriptárna ČVUT má pro pracujícího na druhé straně Prahy nevyhovující otevírací dobu (9-16) :(






More information about the csTeX mailing list