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