%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% % This is file 'loops-pokayoke1.tex', version 1.3, 2013/05/15. % % % % This package and accompanying files may be distributed and/or % % modified under the conditions of the LaTeX Project Public License, % % either version 1.3 of this license or any later version. The latest % % version of this license is in http://www.latex-project.org/lppl.txt % % and version 1.3 or later is part of all distributions of LaTeX % % version 2005/12/01 or later. % % % % The LPPL maintenance status of this software is 'author-maintained'. % % % % This software is provided 'as it is', without warranty of any kind, % % either expressed or implied, including, but not limited to, the % % implied warranties of merchantability and fitness for a particular % % purpose. % % % % The following files constitute the loops bundle and must be % % distributed as a whole: % % % % README, loops.sty, loops-pokayoke1. % % % % Copyright (c) 2010-2013 Ahmed Musa (amusa22@gmail.com). % %++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% \documentclass{article} \usepackage{tikz} \usepackage{loops} % See the README file for more examples. %++++++++++++++++++++++++++ Examples +++++++++++++++++++++++++% % There are two types of sequences in the following list, i.e., % {\pi0,\pi0.5,\pi...,\pi3} and {0\pi,0.5\pi,...\pi,3\pi} % \newforeach\x in {\pi0,\pi0.5,\pi...,\pi3,0\pi,0.5\pi,...\pi,3\pi}{% \edef\y{\skvexpandonce\x}% } \begin{document} \begin{tikzpicture}[every node/.style=draw] \node (A) at (0,0) {A}; \node (B) at (2,0) {B}; \node (C) at (4,0) {C}; \node (D) at (6,0) {D}; \newforeach \n [remember=\n as \lastn initially A] in {B,C,D} \draw [->] (\lastn) -- (\n); \end{tikzpicture} \par\bigskip \foreachfox [remember=#1 as \x initially A] {B,C,D,E,F,G,H} {% $\overrightarrow{\x#1}$\iflastfox.\else,\space\fi } \foreachfox [remember=#1 as \x initially A] {B,...,H} {% $\overrightarrow{\x#1}$\iflastfox.\else,\space\fi } % (C1) and [F1] will be picked as single elements: \foreachfox [list type=tsv,remember=#1 as \x initially A] {B(C1)DE[F1]GH} {% $\overrightarrow{\x#1}$\iflastfox.\else,\space\fi } \end{document} %++++++++++++++++++++++++++ Examples +++++++++++++++++++++++++% \documentclass{article} \usepackage{tikz,loops} \usetikzlibrary{arrows,shapes,backgrounds,fit} \usepackage{tkz-graph} \begin{document} \begin{tikzpicture} \SetVertexNormal[Shape=rectangle,FillColor=lightgray,LineWidth=2pt] \SetUpEdge[lw=1.5pt,color=black] \foreach \y in {1,2,3,4} { \foreach \x / \a in {1/a,2/b,3/c,4/d} { \Vertex[L=\y \a,x=2*\x,y=2*\y]{\x\y} } } \newforeach \x/\y/\z/\s in { 11/23/32/,14/33/22/,41/33/22/,44/44/23/,21/33/42/13, 24/12/32/43,31/12/23/43,34/13/22/42,12/33//,22/43//, 32/13//,42/23// }{ \Edge(\x)(\y) \ifx\z\empty\else\Edge(\x)(\z)\fi \ifx\s\empty\else\Edge(\x)(\s)\fi } \end{tikzpicture} \end{document} \def\alist{} \newforeach\x in {% 2pt_A,4pt_A,...pt_A,10pt_A }{% \xdef\alist{\alist\ifx\alist\@empty\else,\fi\x}% } \show\alist \let\alist\@gobble \newforeach\x in {% A_2pt,A_4pt,A_...pt,A_10pt, A_20pt,A_24pt,A_...pt,A_40pt }{% \xdef\alist{\alist,\x}% } \show\alist \let\alist\@gobble \foreachfox {% A_2pt,A_4pt,A_...pt,A_10pt, A_20pt,A_24pt,A_...pt,A_40pt% }{% \xdef\alist{\alist,#1}% } \show\alist \let\alist\@gobble % The key 'hide parameters' makes it possible to use parameter % characters in the callback without doubling them. \newforeach[hide parameters] \x in {1,...,10} do {% \edef\cmda#1{\x*#1}% \newforeach[hide parameters] \y in {A,...,M} do {% \xdef\alist{\alist,\x(\y)}% \edef\cmdb#1{\x*\y*#1}% }% } \show\alist