[texhax] scrambled text
Daniel Greenhoe
dgreenhoe at gmail.com
Mon Aug 27 21:42:07 CEST 2012
Thank you!
Dan
On Mon, Aug 27, 2012 at 2:38 PM, Paul Isambert <zappathustra at free.fr> wrote:
> Daniel Greenhoe <dgreenhoe at gmail.com> a écrit:
>>
>> On Sun, Aug 26, 2012 at 8:55 PM, Paul Isambert <zappathustra at free.fr> wrote:
>> > Indeed you can "\input random.tex" at the beginning of your document and
>> > replace \extractletters in my original code with this new definition:
>>
>> I tried your new code and it works great---Thanks!!!
>>
>> For a long time I have been using the lcg package for random number
>> generation. I modified your code to use lcg instead of random.tex.
>> However I don't know much about TeX programming. Would some one want
>> to take a look at the code below to see if anything is amiss?
>
> As far as I can see it's ok. I've read the lcg doc quickly and it seems
> that you can use "\reinitrand[first=1]" at the beginning of your document
> and then only "\chrand[last=\letters]" in the code, but the only
> improvement, if any, is speed. Also, the "%" after "\rand" on a line
> of its own is useless, but it is harmless too.
>
> Best,
> Paul
>
>> Many thanks in advance,
>> Dan
>>
>> %============================================================================
>> % Code: see email from Paul Isambert (2012 August 25 Saturday 2:49pm)
>> %============================================================================
>> % Code 1
>> \newcount\letters
>> %\newcount\random
>> \newcount\scratch
>> \def\endofword{\endofword}
>>
>> \def\scramble#1{%
>> \letters=0
>> \countletters#1\endofword
>> \extractletters{#1}%
>> }
>>
>> \def\countletters#1{%
>> \unless\ifx #1\endofword
>> \advance\letters 1
>> \expandafter\countletters
>> \fi
>> }
>>
>> \def\extractletters#1{% see email from Paul Isambert (2012 August 26
>> Sunday 8:55pm)
>> \def\rest{}%
>> \ifnum\letters>1
>> \chgrand[first=1,last=\letters]% <--edit
>> \rand% <--edit
>> %\setrannum{\random}{1}{\letters}% <--previous
>> \advance\letters-1 \scratch=1
>> \getletter#1\endofword%
>> \else
>> #1%
>> \fi
>> }
>>
>> \def\getletter#1{%
>> \ifnum\scratch=\value{rand}% <--edit
>> #1%
>> \expandafter\getrestofword
>> \else
>> \advance\scratch 1
>> \edef\rest{\rest#1}%
>> \expandafter\getletter
>> \fi
>> }
>>
>> \def\getrestofword#1\endofword{%
>> \expandafter\extractletters\expandafter{\rest#1}%
>> }
>>
>> %\scramble{scramble}
>> % End of code 1
>>
>>
>> On Sun, Aug 26, 2012 at 8:55 PM, Paul Isambert <zappathustra at free.fr> wrote:
>> > Reinhard Kotucha <reinhard.kotucha at web.de> a écrit:
>> >>
>> >> On 2012-08-26 at 08:46:26 +0800, Daniel Greenhoe wrote:
>> >>
>> >> > Hi Paul,
>> >> >
>> >> > Thank you for the source code. I use XeLaTeX and I tried your "Code
>> >> > 1". But it said that
>> >> > \pdfuniformdeviate
>> >> > was undefined. Is \pdfuniformdeviate only defined in PDFTex? Is there
>> >> > some workaround for XeTeX?
>> >>
>> >> XeTeX is based on Knuth's TeX and thus doesn't inherit pdfTeX
>> >> extensions.
>> >>
>> >> Maybe you can use Donald Arseneau's random.tex package instead of
>> >> \pdfuniformdeviate.
>> >
>> > Indeed you can "\input random.tex" at the beginning of your document and
>> > replace \extractletters in my original code with this new definition:
>> >
>> > \def\extractletters#1{%
>> > \def\rest{}%
>> > \ifnum\letters>1
>> > \setrannum{\random}{1}{\letters}%
>> > \advance\letters-1 \scratch=1
>> > \getletter#1\endofword%
>> > \else
>> > #1%
>> > \fi
>> > }
>> >
>> > Best,
>> > Paul
>> >
>> > _______________________________________________
>> > TeX FAQ: http://www.tex.ac.uk/faq
>> > Mailing list archives: http://tug.org/pipermail/texhax/
>> > More links: http://tug.org/begin.html
>> >
>> > Automated subscription management: http://tug.org/mailman/listinfo/texhax
>> > Human mailing list managers: postmaster at tug.org
>
> _______________________________________________
> TeX FAQ: http://www.tex.ac.uk/faq
> Mailing list archives: http://tug.org/pipermail/texhax/
> More links: http://tug.org/begin.html
>
> Automated subscription management: http://tug.org/mailman/listinfo/texhax
> Human mailing list managers: postmaster at tug.org
More information about the texhax
mailing list