Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
% edrxdiagflags.tex: a hack to let us create variations of a diagram % in which certain arrows are omitted. % Edrx, 2006jul17 % This is experimental stuff! Edrx, 2005jun25 % (find-dn4file "examples/") % (find-dn4 "examples/edrxdnt.tex" "defded") % (find-texbookpage (+ 11 203)) % \def\setdiagflagto#1#2{\expandafter\def\csname diagflag-#2\endcsname{#1}} \def\diagflagy{y} \def\diagflags#1{ \def\Y##1{\setdiagflagto{y}{##1}} \def\N##1{\setdiagflagto{n}{##1}} #1 } % (find-texbookfile "texbook.tex" "|\\ifundefined#1|") % (find-texbookfile "texbook.tex" "test if tokens agree") % (find-texbookpage (+ 11 40) "Exercise 7.7: define \\ifundefined") % (find-texbookpage (+ 11 308) "Exercise 7.7: answer") % (find-texbookpage (+ 11 210) "\\ifx: test if tokens agree") % \def\ifdiagflagundefined#1{\expandafter\ifx\csname diagflag-#1\endcsname\relax} \def\ifdiagflagy#1{\expandafter\ifx\csname diagflag-#1\endcsname\diagflagy} \def\ifdiagflag#1#2{\ifdiagflagundefined{#1} \errmessage{UNDEFINED DIAGFLAG: #1} \else \ifdiagflagy{#1}#2\fi \fi } % How these macros are invoked: % \setdiagflagto{y}{FOO} % sets diagflag FOO to ``yes'' % \setdiagflagto{n}{FOO} % sets diagflag FOO to ``no'' % \diagflags{\Y{FOO} \N{BAR}}% sets diagflag FOO to ``yes'' and BAR to ``no'' % \ifdiagflagundefined{FOO}{diagflag FOO is undefined} % \ifdiagflagy{FOO}{diagflag FOO is ``yes''} % \ifdiagflag{FOO}{run this if diagflag FOO is ``yes'', error if undefined} % Only "\diagflags" is meant to be invoked by the user; the dednat4 % construct ".flag= FOO" tells dednat4 to wrap the current arrow - % i.e., the call to \morphism that it becomes in the .dnt file - % inside a "\ifdiagflag{FOO}{...}", but users don't see it. % (find-dn4file "dednat4.lua") % (find-dn4file "dednat4.lua" "if arrow.special") % (find-dn4file "dednat4.lua" ".plabel=") %L arrowspecial_diagflag = function (arrow) %L return format("\\ifdiagflag{%s}{%s}", arrow.flag, %L arrowtoTeX(arrow, "ignorespecial") %L end %L forths[".flag="] = function () %L ds[1].flag = getword() %L ds[1].special = arrowspecial_diagflag %L end % Local Variables: % coding: raw-text-unix % ee-delimiter-percent: "\n%*\n" % ee-anchor-format: "«%s»" % End: