%% %% This is file `eolang.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% eolang.dtx (with options: `package') %% (The MIT License) %% %% Copyright (c) 2021-2022 Yegor Bugayenko %% %% Permission is hereby granted, free of charge, to any person obtaining a copy %% of this software and associated documentation files (the 'Software'), to deal %% in the Software without restriction, including without limitation the rights %% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell %% copies of the Software, and to permit persons to whom the Software is %% furnished to do so, subject to the following conditions: %% %% The above copyright notice and this permission notice shall be included in all %% copies or substantial portions of the Software. %% %% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR %% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, %% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE %% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER %% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, %% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE %% SOFTWARE. \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{eolang} [2022-11-28 0.7.1 Formulas and Graphs for EO Programming Language] \RequirePackage{stmaryrd} \RequirePackage{amsmath} \let\Bbbk\relax\RequirePackage{amssymb} \RequirePackage{fancyvrb} \RequirePackage{iexec} \RequirePackage{pgfopts} \RequirePackage{ifluatex} \RequirePackage{ifxetex} \pgfkeys{ /eolang/.cd, tmpdir/.store in=\eolang@tmpdir, tmpdir/.default=_eolang\ifxetex-xe\else\ifluatex-lua\fi\fi, nocomments/.store in=\eolang@nocomments, tmpdir } \ProcessPgfOptions{/eolang} \iexec[null]{mkdir -p "\eolang@tmpdir/\jobname"}% \makeatletter\newcounter{eolang@lineno}\makeatother \RequirePackage{pdftexcmds} \makeatletter \newcommand\eolang@mdfive[1]{\pdf@filemdfivesum{#1}} \makeatother \makeatletter \begin{VerbatimOut}{\eolang@tmpdir/eolang-phi.pl} $macro = $ARGV[0]; open(my $fh, '<', $ARGV[1]); my $tex; { local $/; $tex = <$fh>; } print '% This file is auto-generated', "\n"; print '% There are ', length($tex), ' chars in the input: ', $ARGV[1], "\n"; print '% ---', "\n"; if (index($tex, "\t") > 0) { print "TABS are prohibited!"; exit 1; } my @lines = split (/\n/g, $tex); foreach my $t (@lines) { print '% ', $t, "\n"; } print '% ---', "\n"; $tex =~ s/%.*\n/\n/g; $tex =~ s/^\s+|\s+$//g; my $gathered = (0 == $tex =~ /\n\s+/g); if ($gathered) { print '% The "gathered" is used since all lines are left-aligned' . "\n"; } my $align = 0; print '% The "align" is NOT used by default' . "\n"; if (index($tex, '&&') >= 0) { $macro =~ s/equation/align/g; $align = 1; print '% The "align" is used because of && seen in the text' . "\n"; } if ($macro ne 'phiq') { $tex =~ s/\\\\\n/\n\n/g; $tex =~ s/\\\n\s*//g; $tex =~ s/\n*(\\label\{[^\}]+\})\n*/\1/g; $tex =~ s/\n{3,}/\n\n/g; } my @texts = (); sub trep { my ($s) = @_; my $open = 0; my $p = 0; for (; $p < length($s); $p++) { $c = substr($s, $p, 1); if ($c eq '}') { if ($open eq 0) { last; } $open--; } if ($c eq '{') { $open++; } } push(@texts, substr($s, 0, $p)); return '{TEXT' . (0+@texts - 1) . '}' . substr($s, $p + 1); } $tex =~ s/\\text\{(.+)/trep("$1")/ge; $tex =~ s/(?/\1\\Delta{}..>/g; $tex =~ s/([^\\{a-z0-9]|^)L>/\1\\lambda{}..>/g; $tex =~ s/"([^"]+)"/|"\1"|/g; $tex =~ s/(^|(?<=[\s)(\]\[,.>\/]))([a-z][a-z0-9]+)(?=[\s)(\]\[,.-]|$)/|\2|/g; $tex =~ s/([^^_]|^)([0-9]+|\*)\/(\\?[a-z]+|\|[a-z]+\|) (->|\.\.>|~>|:=|!->)/\1\\alpha_{\2}\\vert{}\3\\space{}\4/xg; $tex =~ s/([^^_]|^)([0-9]+|\*) (->|\.\.>|~>|:=|!->)/\1\\alpha_{\2}\\space{}\3/xg; if ($macro ne 'phiq') { $tex =~ s/\\begin\{split\}\n/\\begin{split}&/g; $tex =~ s/\n\s*\\end\{split\}/\\end{split}/g; $tex =~ s/\n\n/\\\\&/g; $tex =~ s/\n/\\phiEOL{}\n&/g; $tex =~ s/\\\\/\\\\\n/g; $tex =~ s/([^&\s])\s{2}([^\s])/\1 \2/g; $tex =~ s/\s{2}/ \\quad{}/g; $tex = '&' . $tex; my $lead = '[^\s]+\s(->|:=|=)'; my @leads = $tex =~ /&${lead}/g; my @eols = $tex =~ /&/g; if (0+@leads == 0+@eols && 0+@eols > 0) { $tex =~ s/&${lead}/\1&/g; $gathered = 0; print '% The "gathered" is NOT used because all ' . (0+@eols) . ' lines are ' . (0+@leads) . " leads\n"; } } $tex =~ s/\$/\\xi{}/g; $tex =~ s/(?(])([0-9A-F]{2}(?:-[0-9A-F]{2})+| [0-9]+(?:\.[0-9]+)?)(?!\{)/\1|\2|/xg; $tex =~ s/TRUE/|TRUE|/g; $tex =~ s/FALSE/|FALSE|/g; $tex =~ s/\?/\\varnothing{}/g; $tex =~ s/@/\\varphi{}/g; $tex =~ s/-([a-z]+)>/\\mathrel{\\phiSlot{\1}}/g; $tex =~ s/!->/\\mathrel{\\phiConst}/g; $tex =~ s/->/\\mathrel{\\mapsto}/g; $tex =~ s/~>/\\mathrel{\\phiWave}/g; $tex =~ s/:=/\\mathrel{\\vDash}/g; $tex =~ s/\.\.>/\\mathrel{\\phiDotted}/g; $tex =~ s/\|{2,}/|/g; $tex =~ s/\|([^\|]+)\|/\\textnormal{\\texttt{\1}}{}/g; $tex =~ s/\{TEXT(\d+)\}/'\\text{' . @texts[$1] . '}';/ge; if ($macro eq 'phiq') { print '$' if ($tex ne ''); } else { print '\begin{', $macro, "}\n"; if (not($align)) { if ($gathered) { print '\begin{gathered}'; } else { print '\begin{split}'; } print "\n"; } } if ($gathered and not($align)) { $tex =~ s/^&//g; $tex =~ s/\n&/\n/g; } print $tex; if ($macro eq 'phiq') { print '$' if ($tex ne ''); } else { if (not($align)) { print "\n"; if ($gathered) { print '\end{gathered}'; } else { print '\end{split}'; } } print "\n" . '\end{' . $macro . '}'; } print '\endinput'; \end{VerbatimOut} \message{eolang: File with Perl script '\eolang@tmpdir/eolang-phi.pl' saved^^J}% \makeatother \makeatletter \newcommand\phiSaveTo[1]{\def\eolang@phiSaveTo{#1}} \makeatother \makeatletter\newcommand\eolang@process[1]{ \def\hash{\eolang@mdfive {\eolang@tmpdir/\jobname/phiquation.tex}}% \iexec[null]{cp "\eolang@tmpdir/\jobname/phiquation.tex" "\eolang@tmpdir/\jobname/\hash.tex"}% \iexec[trace,stdout=\eolang@tmpdir/\jobname/\hash-post.tex]{ perl "\eolang@tmpdir/eolang-phi.pl" '#1' "\eolang@tmpdir/\jobname/\hash.tex" \ifdefined\eolang@nocomments | perl -pe 's/\%.*(\\n|$)//g'\fi \ifdefined\eolang@phiSaveTo > \eolang@phiSaveTo\fi}% \setcounter{FancyVerbLine}{\value{eolang@lineno}}% \def\eolang@phiSaveTo{\relax}% } \newenvironment{phiquation*}% {\catcode`\|=12 \VerbatimEnvironment% \setcounter{eolang@lineno}{\value{FancyVerbLine}}% \begin{VerbatimOut} {\eolang@tmpdir/\jobname/phiquation.tex}} {\end{VerbatimOut}\eolang@process{equation*}} \newenvironment{phiquation}% {\catcode`\|=12 \VerbatimEnvironment% \setcounter{eolang@lineno}{\value{FancyVerbLine}}% \begin{VerbatimOut} {\eolang@tmpdir/\jobname/phiquation.tex}} {\end{VerbatimOut}\eolang@process{equation}} \makeatother \makeatletter\newcommand\phiq[1]{% \iexec[trace,quiet,stdout=\eolang@tmpdir/\jobname/phiq.tex]{ /bin/echo '\detokenize{#1}'}% \def\hash{\eolang@mdfive {\eolang@tmpdir/\jobname/phiq.tex}}% \iexec[null]{cp "\eolang@tmpdir/\jobname/phiq.tex" "\eolang@tmpdir/\jobname/\hash.tex"}% \ifdefined\eolang@nodollar\else\catcode`\$=3 \fi% \iexec[trace,stdout=\eolang@tmpdir/\jobname/\hash-post.tex]{ perl \eolang@tmpdir/eolang-phi.pl 'phiq' "\eolang@tmpdir/\jobname/\hash.tex" \ifdefined\eolang@nocomments | perl -pe 's/\%.*(\\n|$)//g'\fi}% \ifdefined\eolang@nodollar\else\catcode`\$\active\fi% }\makeatother \ifdefined\eolang@nodollar\else \begingroup \catcode`\$=\active \protected\gdef$#1${\phiq{#1}} \endgroup \AtBeginDocument{\catcode`\$=\active} \fi \makeatletter \begin{VerbatimOut}{\eolang@tmpdir/eolang-sodg.pl} sub num { my ($i) = @_; $i =~ s/(\+|-)\./\10./g; return $i; } sub fmt { my ($tex) = @_; $tex =~ s/\|([^\|]+)\|/\\textnormal{\\texttt{\1}}/g; return $tex; } sub vertex { my ($v) = @_; if (index($v, 'v0') == 0) { return '\Phi'; } else { $v =~ s/^v/v_/g; $v =~ s/[^0-9]$//g; return $v; } } sub tailor { my ($t, $m) = @_; $t =~ s/<([A-Z]?${m}[A-Z]?):([^>]+)>/\2/g; $t =~ s/<[A-Z]+:[^>]+>//g; return $t; } open(my $fh, '<', $ARGV[0]); my $tex; { local $/; $tex = <$fh>; } if (index($tex, "\t") > 0) { print "TABS are prohibited!"; exit 1; } print '% This file is auto-generated', "\n%\n"; print '% --- there are ', length($tex), ' chars in the input (', $ARGV[0], "):\n"; foreach my $t (split (/\n/g, $tex)) { print '% ', $t, "\n"; } print "% ---\n"; $tex =~ s/\\\\/\n/g; $tex =~ s/\\\n//g; $tex =~ s/(\\[a-zA-Z]+)\s+/\1/g; $tex =~ s/\n{2,}/\n/g; my @cmds = split(/\n/g, $tex); print '% --- before processing:' . "\n"; foreach my $t (split (/\n/g, $tex)) { print '% ', $t, "\n"; } print '% ---'; print ' (' . (0+@cmds) . " lines)\n"; print '\begin{phicture}', "\n"; for (my $c = 0; $c < 0+@cmds; $c++) { my $cmd = $cmds[$c]; $cmd =~ s/^\s+//g; $cmd =~ s/%.*//g; my ($head, $tail) = split(/ /, $cmd, 2); my %opts = {}; foreach my $p (split(/ /, $tail)) { my ($q, $t) = split(/:/, $p); $opts{$q} = $t; } if (index($head, '->') >= 0) { my $draw = '\draw['; if (exists $opts{'pi'}) { $draw = $draw . ''; if (not exists $opts{'a'}) { $opts{'a'} = '\pi'; } } if (exists $opts{'rho'} and not(exists $opts{'bend'})) { $draw = $draw . ''; } $draw = $draw . ']'; my ($from, $to) = split (/->/, $head); $draw = $draw . " (${from}) "; if (exists $opts{'bend'}) { $draw = $draw . 'edge ['; if (exists $opts{'rho'}) { $draw = $draw . ''; } $draw = $draw . ']'; } else { $draw = $draw . '--'; } if (exists $opts{'a'}) { my $a = $opts{'a'}; if (index($a, '$') == -1) { $a = '$' . fmt($a) . '$'; } else { $a = fmt($a); } $draw = $draw . ''; } if (exists $opts{'break'}) { $draw = $draw . ''; } $draw = $draw . " ()"; if (exists $opts{'break'}) { print tailor($draw, 'F') . ";\n"; print ' \node[outer sep=.1cm,inner sep=0cm] ' . 'at (break) (break-v) {$' . vertex($to) . '$};' . "\n"; print ' ' . tailor($draw, 'B'); } else { print tailor($draw, 'M'); } } elsif (index($head, '=>') >= 0) { my ($from, $to) = split (/=+>/, $head); my $size = () = $head =~ /=/g; if ($from eq '') { print '\node [phi-arrow, left=' . ($size * 0.6) . 'cm of ' . $to . '.center]'; } elsif ($to eq '') { print '\node [phi-arrow, right=' . ($size * 0.6) . 'cm of ' . $from . '.center]'; } else { print '\node [phi-arrow] at ($(' . $from . ')!0.5!(' . $to . ')$)'; } print '{}'; } elsif (index($head, '!') >= 0) { my ($v, $marker) = split (/!+/, $head); my $size = () = $head =~ /!/g; print '\node [phi-marker, left=' . ($size * 0.6) . 'cm of ' . $v . '.center]{' . fmt($marker) . '}'; } elsif (index($head, '+') >= 0) { my ($v, $suffix) = split (/\+/, $head); my @friends = ($v); foreach my $c (@cmds) { $e = $c; $e =~ s/^\s+//g; my $h = $e; $h = substr($e, 0, index($e, ' ')) if index($e, ' ') >= 0; foreach my $f (@friends) { my $add = ''; if (index($h, $f . '->') >= 0) { $add = substr($h, index($h, '->') + 2); } if ($h =~ /->\Q${f}\E$/) { $add = substr($h, 0, index($h, '->')); } if (index($e, ' xy:' . $f . ',') >= 0) { $add = $h; } if (index($add, '+') == -1 and $add ne '' and not(grep(/^\Q${add}\E$/, @friends))) { push(@friends, $add); } } } my @extra = (); foreach my $e (@cmds) { $m = $e; if ($m =~ /^\s*\Q${v}\E\s/) { next; } if ($m =~ /^\s*[^\s]+\+/ and not($m =~ /^\s*\Q${head}\E\s/)) { next; } foreach my $f (@friends) { my $h = $f; $h =~ s/[a-z]$//g; if ($m =~ s/^(\s*)\Q${f}\E\+\Q${suffix}\E\s?/\1${h}${suffix} /g) { last; } $m =~ s/^(\s*)\Q${f}\E\s/\1${h}${suffix} /g; $m =~ s/^(\s*)\Q${f}\E->/\1${h}${suffix}->/g; $m =~ s/\sxy:\Q${f}\E,/ xy:${h}${suffix},/g; $m =~ s/->\Q${f}\E\s/->${h}${suffix} /g; } if ($m ne $e) { push(@extra, ' ' . $m); } } splice(@extra, 0, 0, @extra[-1]); splice(@extra, -1, 1); splice(@extra, 0, 0, '% clone of ' . $v . ' (' . $head . '), friends: [' . join(', ', @friends) . '] in ' . (0+@cmds) . ' lines'); splice(@cmds, $c, 1, @extra); print '% cloned ' . $v . ' at line no.' . $c . ' (+' . (0+@extra) . ' lines -> ' . (0+@cmds) . ' lines total)'; } elsif ($head =~ /^v[0-9]+[a-z]?$/) { print '\node['; if (exists $opts{'xy'}) { my ($v, $right, $down) = split(/,/, $opts{'xy'}); my $loc = ''; if ($down > 0) { $loc = 'below '; } elsif ($down < 0) { $loc = 'above '; } if ($right > 0) { $loc = $loc . 'right'; } elsif ($right < 0) { $loc = $loc . 'left'; } print ',' . $loc . '='; print abs(num($down)) . 'cm and ' . abs(num($right)) . 'cm of ' . $v . '.center'; } if (exists $opts{'data'}) { print ',phi-data'; if (not $opts{'data'} eq '') { my $d = $opts{'data'}; if (index($d, '|') == -1) { $d = '$\Delta\phiDotted\text{' . '\textnormal{\texttt{' . fmt($d) . '}}}$'; } else { $d = fmt($d); } $opts{'box'} = $d; } } elsif (exists $opts{'atom'}) { print ',phi-atom'; if (not $opts{'atom'} eq '') { my $a = $opts{'atom'}; if (index($a, '$') == -1) { $a = '$\lambda\phiDotted{}' . fmt($a) . '$'; } else { $a = fmt($a); } $opts{'box'} = $a; } } else { print ',phi-object'; } print ']'; print ' (' . $head . ')'; print ' {'; if (exists $opts{'tag'}) { my $t = $opts{'tag'}; if (index($t, '$') == -1) { $t = '$' . $t . '$'; } else { $t = fmt($t); } print $t; } else { print '$' . vertex($head) . '$'; } print '}'; if (exists $opts{'box'}) { print ' node[phi-box] at ('; print $head, '.south east) {'; print $opts{'box'}, '}'; } } else { print $cmd; } print ";\n"; } print '\end{phicture}%', "\n"; print "% --- after processing:\n%"; foreach my $c (@cmds) { print '% ', $c, "\n"; } print '% --- (' . (0+@cmds) . " lines)\n"; print '\endinput'; \end{VerbatimOut} \message{eolang: File with Perl script '\eolang@tmpdir/eolang-sodg.pl' saved^^J}% \makeatother \setcounter{FancyVerbLine}{0} \RequirePackage{tikz} \usetikzlibrary{arrows} \usetikzlibrary{shapes} \usetikzlibrary{decorations} \usetikzlibrary{decorations.pathmorphing} \usetikzlibrary{decorations.pathreplacing} \usetikzlibrary{positioning} \usetikzlibrary{calc} \usetikzlibrary{math} \usetikzlibrary{arrows.meta} \newenvironment{phicture}% {\noindent\begin{tikzpicture}[ ->,>=stealth',node distance=0,thick, pics/parallel arrow/.style={ code={\draw[-latex,phi-rho] (##1) -- (-##1);}}]}% {\end{tikzpicture}} \tikzstyle{phi-arrow} = [fill=white!80!black, single arrow, minimum height=0.5cm, minimum width=0.5cm, single arrow head extend=2mm] \tikzstyle{phi-marker} = [inner sep=0pt, minimum height=1.4em, minimum width=1.4em, font={\small\color{white}\ttfamily}, fill=gray] \tikzstyle{phi-thing} = [thick,inner sep=0pt,minimum height=2.4em, draw,font={\small}] \tikzstyle{phi-object} = [phi-thing,circle] \tikzstyle{phi-data} = [phi-thing,regular polygon, regular polygon sides=8] \tikzstyle{phi-empty} = [phi-object] \tikzset{% phi-rho/.style={ postaction={% decoration={ show path construction, curveto code={ \tikzmath{ coordinate \I, \F, \v; \I = (\tikzinputsegmentfirst); \F = (\tikzinputsegmentlast); \v = ($(\I) -(\F)$); real \d, \a, \r, \t; \d = 0.8; \t = atan2(\vy, \vx); if \vx<0 then { \a = 90; } else { \a = -90; }; { \draw[arrows={-latex}, decorate, decoration={% snake, amplitude=.4mm, segment length=2mm, post length=1mm }] ($(\F)!.5!(\I) +(\t: -\d em) +(\t +\a: 1ex)$) -- ++(\t: 2*\d em); }; } }, lineto code={ \tikzmath{ coordinate \I, \F, \v; \I = (\tikzinputsegmentfirst); \F = (\tikzinputsegmentlast); \v = ($(\I) -(\F)$); real \d, \a, \r, \t; \d = 0.8; \t = atan2(\vy, \vx); if \vx<0 then { \a = 90; } else { \a = -90; }; { \draw[arrows={-latex}, decorate, decoration={% snake, amplitude=.4mm, segment length=2mm, post length=1mm}] ($(\F)!.5!(\I) +(\t: -\d em) +(\t +\a: 1ex)$) -- ++(\t: 2*\d em); }; } } }, decorate } } } \tikzstyle{phi-pi} = [draw,dotted] \tikzstyle{phi-atom} = [phi-object,double] \tikzstyle{phi-box} = [xshift=-5pt,yshift=3pt,draw,fill=white, rectangle,thin,minimum width=1.2em,anchor=north west, font={\scriptsize}] \tikzstyle{phi-attr} = [midway,sloped,inner sep=0pt, above=2pt,sloped/.append style={transform shape}, font={\scriptsize},color=black] \makeatletter \newcommand\sodgSaveTo[1]{\def\eolang@sodgSaveTo{#1}} \makeatother \makeatletter\newenvironment{sodg}% {\catcode`\|=12 \VerbatimEnvironment% \setcounter{eolang@lineno}{\value{FancyVerbLine}}% \begin{VerbatimOut} {\eolang@tmpdir/\jobname/sodg.tex}} {\end{VerbatimOut}% \def\hash{\eolang@mdfive {\eolang@tmpdir/\jobname/sodg.tex}}% \iexec[null]{cp "\eolang@tmpdir/\jobname/sodg.tex" "\eolang@tmpdir/\jobname/\hash.tex"}% \catcode`\$=3 % \iexec[trace,stdout=\eolang@tmpdir/\jobname/\hash-post.tex]{ perl "\eolang@tmpdir/eolang-sodg.pl" "\eolang@tmpdir/\jobname/\hash.tex" \ifdefined\eolang@nocomments | perl -pe 's/\%.*(\\n|$)//g'\fi \ifdefined\eolang@sodgSaveTo > \eolang@sodgSaveTo\fi}% \catcode`\$\active% \setcounter{FancyVerbLine}{\value{eolang@lineno}}% \def\eolang@sodgSaveTo{\relax}% }\makeatother \newcommand\eolang{% \ifdefined\anon% \anon[XYZ]{{\sffamily EO}}% \else% {\sffamily EO}% \fi% } \RequirePackage{hyperref} \newcommand\phic{% \ifdefined\anon% \anon[\texorpdfstring{$\alpha$}{a}-cal\-cu\-lus] {\texorpdfstring{$\varphi$}{phi}-cal\-cu\-lus}% \else% \texorpdfstring{$\varphi$}{phi}-cal\-cu\-lus% \fi% } \newcommand\xmir{% \ifdefined\anon% \anon[XML$^+$]{XMIR}% \else% XMIR% \fi% } \newcommand\phiConst{% \mathrel{\hspace{.15em}}% \mapstochar\mathrel{\hspace{-.15em}}\mapsto} \newcommand\phiWave{% \mapstochar\mathrel{\mspace{0.45mu}}\leadsto} \newcommand\phiSlot[1]{% \xrightarrow{\text{\sffamily\scshape #1}}} \makeatletter \newcommand{\phiOset}[2]{% \mathrel{\mathop{#2}\limits^{ \vbox to 0ex{\kern-2\ex@ \hbox{$\scriptscriptstyle#1$}\vss}}}} \newcommand{\phiUset}[2]{% \mathrel{\mathop{#2}\limits_{ \vbox to 0ex{\kern-6.3\ex@ \hbox{$\scriptscriptstyle#1$}\vss}}}} \makeatother \newcommand\phiMany[3]{% \phiOset{#3}{\phiUset{#2}{#1}}} \newcommand\phiEOL{\\[-4pt]} \RequirePackage{trimclip} \RequirePackage{amsfonts} \makeatletter \newcommand{\phiDotted}{% \mapstochar\mathrel{\mathpalette\phiDotted@\relax}} \newcommand{\phiDotted@}[2]{% \begingroup% \settowidth{\dimen\z@}{$\m@th#1\rightarrow$}% \settoheight{\dimen\tw@}{$\m@th#1\rightarrow$}% \sbox\z@{% \makebox[\dimen\z@][s]{% \clipbox{0 0 {0.4\width} 0}% {\resizebox{\dimen\z@}{\height}% {$\m@th#1\dashrightarrow$}}% \hss% \clipbox{{0.69\width} {-0.1\height} 0 {-\height}}{$\m@th#1\rightarrow$}% }% }% \ht\z@=\dimen\tw@ \dp\z@=\z@% \box\z@% \endgroup% } \makeatother \endinput %% %% End of file `eolang.sty'.