1 Star 0 Fork 0

墨客实验室 / interactive-eukleides

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
eukleides.tm 128.72 KB
一键复制 编辑 原始数据 按行查看 历史
沈达 提交于 2022-03-13 11:26 . More interactive examples
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822
<TeXmacs|2.1.1>
<style|<tuple|book|british>>
<\body>
<doc-data|<doc-title|Eukleides Reference Manual>>
<\table-of-contents|toc>
Introduction <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-1>
1<space|2spc>Basics <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-2>
<with|par-left|1tab|1.1<space|2spc>General Syntax
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-3>>
<with|par-left|1tab|1.2<space|2spc>Numbers
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-4>>
<with|par-left|2tab|Numeric operators
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-5>>
<with|par-left|2tab|Numeric functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-6>>
<with|par-left|2tab|Numeric constant <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-9>>
<with|par-left|1tab|1.3<space|2spc>Strings
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-10>>
<with|par-left|2tab|Special characters
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-11>>
<with|par-left|2tab|String related functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-12>>
2<space|2spc>Objects <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-13>
<with|par-left|1tab|2.1<space|2spc>Points
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-14>>
<with|par-left|2tab|Point related functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-15>>
<with|par-left|1tab|2.2<space|2spc>Vectors
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-22>>
<with|par-left|2tab|Vector operators <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-23>>
<with|par-left|2tab|Vector related functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-24>>
<with|par-left|1tab|2.3<space|2spc>Sets
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-40>>
<with|par-left|2tab|Set operators <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-41>>
<with|par-left|2tab|Set related functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-42>>
<with|par-left|2tab|Set constant <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-43>>
<with|par-left|2tab|Set related assignments
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-44>>
<with|par-left|1tab|2.4<space|2spc>Lines
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-45>>
<with|par-left|2tab|Line related functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-46>>
<with|par-left|1tab|2.5<space|2spc>Circles
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-47>>
<with|par-left|1tab|2.5 Circles <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-48>>
<with|par-left|2tab|Circle related functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-49>>
<with|par-left|1tab|2.6<space|2spc>Conics
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-50>>
<with|par-left|2tab|Conic related functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-51>>
3<space|2spc>Geometry <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-52>
<with|par-left|1tab|3.1<space|2spc>Transformations
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-53>>
<with|par-left|2tab|Generic transformations
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-54>>
<with|par-left|2tab|Projections <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-55>>
<with|par-left|1tab|3.2<space|2spc>Intersections
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-56>>
<with|par-left|2tab|Intersection functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-57>>
<with|par-left|1tab|3.3<space|2spc>Triangles
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-58>>
<with|par-left|2tab|Generic triangles
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-59>>
<with|par-left|2tab|Right triangles <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-60>>
<with|par-left|2tab|Isosceles triangles
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-61>>
<with|par-left|2tab|Equilateral triangles
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-62>>
<with|par-left|2tab|Triangle related functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-63>>
<with|par-left|1tab|3.4<space|2spc>Quadrilaterals
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-64>>
<with|par-left|2tab|Generic quadrilateral assignments
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-65>>
<with|par-left|2tab|Default quadrilateral assignments
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-66>>
<with|par-left|2tab|Vector based quadrilateral assignment
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-67>>
<with|par-left|1tab|3.5<space|2spc>Locus Assignments
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-68>>
<with|par-left|2tab|Examples <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-69>>
4<space|2spc>Drawing <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-70>
<with|par-left|1tab|4.1<space|2spc>Drawing Commands
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-71>>
<with|par-left|2tab|Aspect parameters
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-72>>
<with|par-left|2tab|Font description <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-73>>
<with|par-left|2tab|Single drawing statements
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-74>>
<with|par-left|2tab|Output setting commands
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-75>>
<with|par-left|1tab|4.2<space|2spc>Label Commands
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-81>>
<with|par-left|2tab|Label parameters <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-82>>
<with|par-left|2tab|Single label statements
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-83>>
5<space|2spc>Programming <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-84>
<with|par-left|1tab|5.1<space|2spc>Input and Output
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-85>>
<with|par-left|2tab|Input commands <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-86>>
<with|par-left|2tab|Input functions <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-87>>
<with|par-left|2tab|Output commands <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-88>>
<with|par-left|1tab|5.2<space|2spc>Conditional Statements
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-89>>
<with|par-left|2tab|Boolean operators
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-90>>
<with|par-left|2tab|Boolean constants
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-91>>
<with|par-left|2tab|Comparison operators
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-92>>
<with|par-left|2tab|Set assertions <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-93>>
<with|par-left|2tab|Geometric assertions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-94>>
<with|par-left|2tab|Output format flags
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-95>>
<with|par-left|2tab|Ternary operator <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-96>>
<with|par-left|1tab|5.3<space|2spc>Iterative Statements
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-97>>
<with|par-left|1tab|5.4<space|2spc>Function Definitions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-98>>
<with|par-left|1tab|5.5<space|2spc>Modules
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-99>>
<with|par-left|1tab|5.6<space|2spc>Interactive Variables
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-100>>
<with|par-left|2tab|Mobile points <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-101>>
<with|par-left|2tab|Interactive numeric variables
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-102>>
<with|par-left|2tab|Initialisation directives
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-103>>
<with|par-left|2tab|Animation <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-104>>
6<space|2spc>Usage <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-105>
<with|par-left|1tab|6.1<space|2spc>Invocation
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-106>>
<with|par-left|2tab|Common options <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-107>>
<with|par-left|2tab|Options specific to <with|font-family|ss|eukleides>
and <with|font-family|ss|euktopst> <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-108>>
<with|par-left|2tab|Option specific to <with|font-family|ss|eukleides>
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-109>>
<with|par-left|2tab|Options specific to <with|font-family|ss|euktoeps>
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-110>>
<with|par-left|1tab|6.2<space|2spc>TeX
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-111>>
<with|par-left|1tab|6.3<space|2spc>Localized Keywords
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-112>>
<vspace*|1fn><with|font-series|bold|math-font-series|bold|Index>
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-113><vspace|0.5fn>
</table-of-contents>
<new-page>
<section*|Introduction>
\;
This manual describes the second version of the Eukleides language, as
implemented in the <samp|eukleides> 1.5.4 interpreter. The first version of
the language was implemented in <samp|eukleides> up to 1.0, which is not
developed any longer. Even though both versions have rather close designs,
there is no backwards compatibility.
Eukleides is a computer language devoted to elementary plane geometry. It
aims to be a fairly comprehensive system to create geometric figures,
either static or dynamic. It allows to handle basic types of data: numbers
and strings, as well as geometric types of data: points, vectors, sets (of
points), lines, circles, and conics.
A Eukleides script usually consists in a declarative part where objects are
defined, and a descriptive part where objects are drawn. Nonetheless,
Eukleides is also a full featured programming language, providing
conditional and iterative structures, user defined functions, modules, etc.
Hence, it can easily be extended.
The Eukleides distribution provides two distinct interpreters:
<samp|eukleides> and <samp|euktopst>, and three shell scripts:
<samp|euktoeps>, <samp|euktotex>, and <samp|euktopdf>. The former
interpreter produces Encapsulated PostScript (EPS). The later, which is run
by the scripts, produces TeXable PSTricks macros. The <samp|euktoeps>
script is an alternative to <samp|eukleides> when mathematics typesetting
is required. The two other scripts are useful when using Eukleides together
with LaTeX.
The first version of Eukleides came with a graphical user interface (GUI)
named <samp|xeukleides>, allowing to create and view interactive figures. A
GUI for the second version will be developed in the future. Yet, the
specifications of the language already include interactivity.
Eukleides is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your option)
any later version.
Bug reports as well as comments or contributions should be sent to the
author of Eukleides, Christian Obrecht (<code*|obrecht ><var|at><code*|
eukleides ><var|dot><code*| org>).
<section|Basics>
<subsection|General Syntax>
\;
Eukleides source files should be ISO 8859-1 encoded text files. Line breaks
can be either in DOS, Mac OS or Unix format.
Eukleides code consists in directives, statements and comments.
<label|index-directives-2>Directives are one-line special instructions
starting with either the number sign (<with|font-family|tt|#>) or the at
sign (@).
<label|index-statements-3><label|index-commands-4>Statements end in a
semi-colon or a line break. Runs of white space are ignored. A statement
may be written on more than one line using a backslash (\\) as line
continuation character. Statements are either assignments or commands.
Command parameters require no parentheses, which differs from the syntax of
the first version of the language.
<label|index-comments-5>Comments start with a percent sign
(<with|font-family|tt|%>) and run to the end of the line.
<label|index-identifiers-6>Identifiers are case sensitive. Valid symbols in
identifiers are letters, underscore (<with|font-family|tt|_>), ISO
8859-1<nbsp>accented letters (<code*|0xC0> to <code*|0xFF>, except
<code*|0xD7> and <code*|0xF7>) and (except for the first character) digits
and single quote (<with|font-family|tt|'>).
Default keywords are taken from the English vocabulary, hence contain only
unaccented letters, but localized keywords may contain accented letters as
well.
<label|index-variables-7><label|index-clear-8>A variable may contain any
type of data: number, string, point, vector, set, line, circle or conic.
Assignments to single variables are made using the equal sign
(<with|font-family|tt|=>). A variable in use may be unset using the
<code*|clear> command.
Angular parameters may be given either in degrees or radians. An angle
measure consists in a number followed by either the <code*|deg> keyword or
a colon (<with|font-family|tt|:>) or a degree sign (\<degree\>) for degrees
or by the <code*|rad> keyword for radians. Usage of colons is deprecated.
In this manual, optional parameters are enclosed in braces.
<subsection|Numbers>
\;
Numbers are stored in double precision floating point format.
<label|index-integers-11>There's no integer type. Whenever an integer
argument is expected, the passed value is truncated.
<label|index-constant-numbers-12>Constant numbers consist in decimal digits
and possibly a decimal dot. The dot may start the sequence; in this case
the first digit is assumed to be a zero.
<label|index-numeric-operators-13><label|index-mod-14><subsubsection*|Numeric
operators>
<\description>
<item*|<code*|x + y>>Sum of x and y.
<item*|<code*|x - y>>Difference of x and y.
<item*|<code*|x * y>>Product of x and y.
<item*|<code*|x / y>>Quotient of x and y.
<item*|<code*|x ^ y>>x to the power y.
<item*|<code*|x mod y>>Remainder after division of x by y.
</description>
<label|index-numeric-functions-15><label|index-sqrt-16><label|index-exp-17><label|index-ln-18><label|index-sin-19><label|index-cos-20><label|index-tan-21><label|index-asin-22><label|index-acos-23><label|index-atan-24><label|index-deg-25><label|index-rad-26><label|index-abs-27><label|index-sign-28><label|index-ceil-29><label|index-floor-30><label|index-round-31><label|index-min-32><label|index-max-33><label|index-clamp-34><subsubsection*|Numeric
functions>
<\description>
<item*|<code*|<index|sqrt>sqrt(x)>>Square root of x.
<item*|<code*|exp(x)>>Base-e exponential of x.
<item*|<code*|ln(x)>>Natural logarithm of x.
<item*|<code*|sin(x), cos(x), tan(x)>>Sine, cosine, tangent of x degrees.
<item*|<code*|asin(x), acos(x), atan(x)>>Arcsine, arccosine, arctangent
of x (in degrees).
<item*|<code*|deg(x)>>Radians to degrees conversion.
<item*|<code*|rad(x)>>Degrees to radians conversion.
<item*|<code*|abs(x)>>Absolute value of x.
<item*|<code*|sign(x)>>-1 if x \<less\> 0, 0 if x = 0, 1 if x \<gtr\> 0.
<item*|<code*|ceil(x)>>Smallest integral value greater than or equal to
x.
<item*|<code*|floor(x)>>Largest integral value less than or equal to x.
<item*|<code*|round(x)>>Integral value nearest to x.
<item*|<code*|min(x, y)>>Minimum of x and y.
<item*|<code*|max(x, y)>>Maximum of x and y.
<item*|<code*|clamp(x, y, z)>>y if x \<less\> y, z if x \<gtr\> z, x
otherwise.
</description>
<label|index-pi-35><label|index-pi-36><subsubsection*|Numeric constant>
<description|<item*|<code*|pi>>Archimedes' constant.>
<subsection|Strings>
\;
Literal strings must be enclosed in double quotes (") or dollar signs
(<with|font-family|tt|$>). With <samp|eukleides>, enclosing characters
yield no difference but with <samp|euktopst> dollar signs are taken as part
of the string. Literal strings may be split in several lines.
<label|index-special-characters-38><subsubsection*|Special characters>
<\description>
<item*|<code*|%n>>Newline (LF).
<item*|<code*|%r>>Return (CR).
<item*|<code*|%t>>Tab.
<item*|<code*|%">>Double quote (when enclosing character).
<item*|<code*|%$>>Dollar sign (when enclosing character).
<item*|<code*|%%>>Percent sign.
</description>
<label|index-string-related-functions-39><label|index-length-40><label|index-sub-41><label|index-cat-42><subsubsection*|String
related functions>
<\description>
<item*|<code*|length(s)>>Length of string s.
<item*|<code*|sub(s, i, j)>>Substring of string s from index i to j.
Indices start at 0.
<item*|<code*|cat(><var|list><code*|)>>Concatenates <var|list> into a
single string, where <var|list> is a comma separated sequence of strings,
numbers, points or sets. Numbers are formatted using at most 6 digits,
with no trailing zeros or decimal point (i.e. the
<with|font-family|tt|%g> format for <code*|printf> in C). Points are
converted to their Cartesian coordinates. With <samp|eukleides> abscissa
and ordinate are simply separated by a white space. With <samp|euktopst>
coordinates are formated in the usual mathematical way, using parenthesis
and comma.
</description>
<section|Objects>
<subsection|Points>
Points are stored using an implicit Cartesian coordinate system.
<subsubsection*|Point related functions>
<\description>
<index|point><item*|<code*|point(x, y)>>Point of Cartesian coordinates
(x, y).
<index|point><item*|<code*|point(r, a)>>Point of polar coordinates (r,
a).
<index|abscissa><item*|<code*|abscissa(A)>>Abscissa of point A.
<index|ordinate><item*|<code*|ordinate(A)>>Ordinate of point A.
<index|distance><item*|<code*|distance(A, B)>>Distance between point A
and point B.
<index|barycenter><item*|<code*|barycenter(><var|list><code*|)>>Barycenter
of a set of weighted points. In the given list, each point has to be
followed by its weight.
</description>
Examples:
<\session|eukleides|default>
<\unfolded-io>
eukleides]\
<|unfolded-io>
A= point(0, 0)
B= point(3, 0)
C= point(0, 4)
D= barycenter(A, 1, B, 3, C, 2)
\;
draw A.B.C.A
draw D
\;
label
\ \ A -135:
\ \ B -90:
\ \ C 135:
\ \ D -90:
end
<|unfolded-io>
<image|<tuple|<#252150532D41646F62652D332E3020455053462D332E300A2525426F756E64696E67426F783A202D35362E36393239202D35362E36393239203232362E37373137203137302E303738370A25255469746C653A202F686F6D652F73616468656E2F2E586D6163732F73797374656D2F746D702F67726170685F65756B6C65696465735F33323134362F65756B6C65696465732E7478740A252543726561746F723A2065756B6C65696465730A2525456E64436F6D6D656E74730A67736176652032382E3334363435363639323920647570207363616C650A20302E30313736207365746C696E6577696474682031207365746C696E656361702031207365746C696E656A6F696E0A20302E303030302020302E303030302020332E303030302020302E303030302020302E303030302020342E303030302020302E303030302020302E30303030206D6F7665746F0A33207B6C696E65746F7D20726570656174207374726F6B650A2F446F74207B3020333630206172632066696C6C7D2062696E64206465660A20312E353030302020312E333333332020302E3035303020446F740A2F4E657743656E747572795363686C626B2D526F6D616E2066696E64666F6E7420302E333532373738207363616C65666F6E7420736574666F6E740A2F5072696E74207B6773617665207472616E736C6174652064757020302030206D6F7665746F2066616C736520636861727061746820666C617474656E70617468207061746862626F78202D32206469762034203120726F6C6C202D32206469762034203120726F6C6C20706F7020706F70206D6F7665746F2073686F772067726573746F72657D2062696E64206465660A284129202D302E32313231202D302E32313231205072696E740A2842292020332E30303030202D302E33303030205072696E740A284329202D302E323132312020342E32313231205072696E740A2844292020312E353030302020312E30333333205072696E740A73686F77706167652067726573746F72650A2525454F460A>|ps>|0.618par|||>
</unfolded-io>
<\input>
eukleides]\
<|input>
\;
</input>
</session>
<subsection|Vectors>
Vectors are stored using their Cartesian coordinates.
<subsubsection*|Vector operators>
<\description>
<item*|<code*|u + v>>Sum of u and v.
<item*|<code*|u - v>>Difference of u and v.
<item*|<code*|k * u>>Scalar product of u by k.
<item*|<code*|u / k>>Scalar quotient of u by k.
<item*|<code*|u * v>>Dot product of u and v.
</description>
<subsubsection*|Vector related functions>
<\description>
<item*|<code*|<index|vector>vector(x, y)>>Vector of Cartesian coordinates
(x, y).
<item*|<code*|<index|vector>vector(r, a)>>Vector of polar coordinates (r,
a).
<item*|<index|vector><code*|vector(A, B)>>Vector going from point A to
point B.
<index|abscissa><item*|<code*|abscissa(u)>>Abscissa of u.
<item*|<index|item><code*|ordinate(u)>>Ordinate of u.
<item*|<index|length><code*|length(u)>>Length of u.
<item*|<index|arg><code*|arg(u)>>Polar angle of u (in degrees).
<item*|<index|angle><code*|angle(u, v)>>Angle between u and v (in
degrees).
</description>
<subsection|Sets>
\;
A set consists in a finite ordered list of points. Thus a set can also be
seen as an open path of line segments or as a polygon.
<label|index-segments-60>A set of two points is considered as a single line
segment. When a parameter is expected to be a segment, any subsequent point
is ignored.
<label|index-set-operators-61><subsubsection*|Set operators>
<\description>
<item*|<code*|s.t>>Concatenates s and t. Each operand can be either a set
or a point.
<item*|<code*|s[i]>>Point of index i in variable s, assuming s contains a
set. Indices start at 0.
</description>
<label|index-set-related-functions-62><label|index-set-63><label|index-card-64><label|index-length-65><label|index-perimeter-66><label|index-area-67><label|index-arg-68><label|index-point-69><label|index-midpoint-70><label|index-bisector-71><label|index-isobarycenter-72><label|index-centroid-73><label|index-element-74><label|index-vector-75><label|index-sub-76><label|index-polygon-77><label|index-pentagon-78><label|index-hexagon-79><subsubsection*|Set
related functions>
<\description>
<item*|<code*|set(P)>>Singleton containing point P.
<item*|<code*|card(s)>>Number of elements of set s.
<item*|<code*|length(s)>>Length of path s.
<item*|<code*|perimeter(s)>>Perimeter of polygon s.
<item*|<code*|area(s)>>Area enclosed by polygon s, provided s is not
self-intersecting.
<item*|<code*|arg(s)>>Polar angle of segment s (in degrees).
<item*|<code*|point(s, x)>>Point of abscissa x on an axis containing
segment s. The point is on segment s when x ranges from 0 to 1.
<item*|<code*|midpoint(s)>>Midpoint of segment s.
<item*|<code*|bisector(s)>>Perpendicular bisector of segment s.
<item*|<code*|isobarycenter(s)>>Isobarycenter of set s.
<item*|<code*|centroid(s)>>Centroid of polygon s.
<item*|<code*|element(s, i)>>Point of index i in set s.
<item*|<code*|vector(s)>>Vector going from first to second point of
segment s.
<item*|<code*|sub(s, i, j)>>Subset of set s from index i to j.
<item*|<code*|polygon(n, O, r, a)>>
<item*|<code*|pentagon(O, r, a)>>
<item*|<code*|hexagon(O, r, a)>>Vertices of a n-sided (or 5-sided or
6-sided) convex regular polygon of center O. The first point has (r, a)
as polar coordinates with respect to O. The vertices are ordered
anticlockwise.
</description>
<label|index-empty-set-80><label|index-empty-81><subsubsection*|Set
constant>
<description|<item*|<code*|empty>>Empty set.>
<label|index-set-related-assignments-82><subsubsection*|Set related
assignments>
\;
Each element of a variable containing a set may be modified individually
using its index enclosed in square brackets.
Example: <code*|S[1] = point(2, pi/3)>
When using empty square brackets, the given point is added to the tail of
the set.
Example: <code*|S[] = point(0, 0)>
Several elements of a set may be assigned at once to a dot separated list
of variables. Exceeding points, if any, are ignored.
Example: <code*|A.B.C.D.E = pentagon(O, 1, 0\<degree\>)>
<subsection|Lines>
\;
A line is internally represented by an origin point and an angular
direction, i.e. the anticlockwise angle from the horizontal axis to the
line. Thus, lines have an implicit orientation.
<label|line-related-functions><label|index-line-85><label|index-parallel-86><label|index-perpendicular-87><label|index-bisector-88><label|index-distance-89><label|index-arg-90><label|index-point-91><label|index-abscissa-92><label|index-ordinate-93><label|index-vector-94><subsubsection*|Line
related functions>
<\description>
<item*|<code*|line(A, a)>>Line of origin A and direction a.
<item*|<code*|line(A, B)>>Line of origin A, passing through point B.
<item*|<code*|line(A, u)>>Line of origin A, directed by vector u.
<item*|<code*|line(s)>>Line passing through segment s. The origin is set
to the first point of s.
<item*|<code*|parallel(l, A)>>Parallel to line l of origin A.
<item*|<code*|parallel(s, A)>>Parallel to segment s of origin A.
<item*|<code*|perpendicular(l, A)>>Perpendicular to line l of origin A.
<item*|<code*|perpendicular(s, A)>>Perpendicular to segment s of origin
A.
<item*|<code*|bisector(l, l')>>Bisector of lines l and l'. The resulting
angular direction is the mean of the directions of l and l'.
<item*|<code*|distance(A, l)>>Distance between point A and line l.
<item*|<code*|arg(l)>>Polar angle of line l (in degrees).
<item*|<code*|point(l, x)>>Point of abscissa x on line l with respect to
its implicit origin and orientation.
<item*|<code*|abscissa(l, x)>>Point of abscissa x on line l with respect
to the implicit coordinate system.
<item*|<code*|ordinate(l, y)>>Point of ordinate y on line l with respect
to the implicit coordinate system.
<item*|<code*|vector(l)>>Unit vector having the same direction than line
l.
</description>
<subsection|Circles>
<subsection*|2.5 Circles>
<label|index-circles-95>A circle is internally represented by its center
and radius.
<label|index-circle-related-functions-96><label|index-circle-97><label|index-radius-98><label|index-perimeter-99><label|index-area-100><label|index-arg-101><label|index-point-102><label|index-center-103><label|index-line-104><subsubsection*|Circle
related functions>
<\description>
<item*|<code*|circle(A, x)>>Circle of center A and radius x.
<item*|<code*|circle(s)>>Circle of diameter s.
<item*|<code*|radius(c)>>Radius of circle c.
<item*|<code*|perimeter(c)>>Perimeter of circle c.
<item*|<code*|area(c)>>Area enclosed in circle c.
<item*|<code*|arg(A, c)>>Polar angle of point A with respect to the
center of c (in degrees).
<item*|<code*|point(c, a)>>Point on c with polar angle a with respect to
its center.
<item*|<code*|center(c)>>Center of circle c.
<item*|<code*|line(c, a)>>Tangent line to circle c. The contact point has
polar angle a with respect to the center of c.
</description>
<subsection|Conics>
\;
An ellipse is internally represented by its center, major axis, minor axis
and direction of its major axis. The associated parametric representation
in the coordinate system defined by its axis is :
x = a cos(t) and y = b sin(t)
where a is the major axis, b is the minor axis and t ranges from -pi to pi.
An hyperbola is internally represented by its center, real axis, imaginary
axis and direction of its real axis. The associated parametric
representation in the coordinate system defined by its axis is :
x = a/sin(t) and y = b/tan(t)
where a is the real axis, b is the imaginary axis and t ranges from -pi to
pi except 0.
A parabola is represented by its focus, parameter and the direction of its
axis. The associated parametric representation is :
x = - p cos(t)/(1 + cos(t)) and y = - p sin(t)/(1 + cos(t))
where p is the parameter and t ranges from -pi to pi. The corresponding
coordinate system uses the focus as origin and the axis of the parabola as
ordinate axis.
<label|index-conic-related-functions-107><label|index-ellipse-108><label|index-hyperbola-109><label|index-parabola-110><label|index-conic-111><label|index-major-112><label|index-minor-113><label|index-eccentricity-114><label|index-arg-115><label|index-point-116><label|index-center-117><label|index-foci-118><label|index-line-119><subsubsection*|Conic
related functions>
<\description>
<item*|<code*|ellipse(A, x, y, a)>>Ellipse of center A, major axis x,
minor axis y. The direction of the major axis is a.
<item*|<code*|hyperbola(A, x, y, a)>>Hyperbola of center A, real axis x,
imaginary axis y. The direction of the real axis is a.
<item*|<code*|parabola(A, x, a)>>Parabola of summit A and parameter x.
The direction of its axis is a.
<item*|<code*|parabola(A, l)>>Parabola of focus A and directrix l.
<item*|<code*|conic(A, l, x)>>Conic of focus A, directrix l and
eccentricity x.
<item*|<code*|conic(A, B, x)>>Conic of foci A and B and eccentricity x.
<item*|<code*|major(c)>>Major axis of conic c if c is an ellipse, real
axis if c is an hyperbola, parameter if c is a parabola.
<item*|<code*|minor(c)>>Minor axis of conic c if c is an ellipse,
imaginary axis if c is an hyperbola, 0 if c is a parabola.
<item*|<code*|eccentricity(c)>>Eccentricity of conic c.
<item*|<code*|arg(c)>>Polar angle of the major axis of c if c is an
ellipse, of the real axis if c is an hyperbola, of the axis if c is a
parabola (in degrees).
<item*|<code*|arg(A, c)>>Argument of point A on conic c with respect to
its parametric representation. If A is not on c this function uses the
projection of A on c with respect to its center for centered conics or
its focus for parabolas.
<item*|<code*|point(c, a)>>Point on conic c of argument a with respect to
its parametric representation.
<item*|<code*|center(c)>>Center of centered conic c.
<item*|<code*|foci(c)>>Set containing the foci of conic c.
<item*|<code*|line(c, a)>>Tangent line to conic c. The contact point has
argument a with respect to the parametric representation of c.
</description>
<section|Geometry>
<subsection|Transformations>
Transformations consist in either generic transformations, which can be
applied on any kind of geometric objects, or projections, which are only
defined for points.
<label|index-generic-transformations-121><label|index-translation-122><label|index-reflection-123><label|index-symmetric-124><label|index-rotation-125><label|index-homothecy-126><subsubsection*|Generic
transformations>
<\description>
<item*|<code*|translation(o, u)>>Translation of object o using vector u.
<item*|<code*|reflection(o, l)>>Reflection of object o with respect to
line l.
<item*|<code*|symmetric(o, A)>>Symmetric (i.e. 180\<degree\> rotation) of
object o with respect to point A.
<item*|<code*|rotation(o, A, a)>>Rotation of object o with respect to
point A, using angle a.
<item*|<code*|homothecy(o, A, x)>>Homothecy (i.e. reduction or dilation)
of object o with respect to point A, using scale x.
</description>
<label|index-projections-127><label|index-projection-128><subsubsection*|Projections>
<\description>
<item*|<code*|projection(A, l)>>Orthogonal projection of point A on line
l.
<item*|<code*|projection(A, l, l')>>Projection of point A on line l using
direction of line l'.
</description>
<subsection|Intersections>
\;
Intersection functions provide the points belonging to both of two given
geometric objects. Sets are considered as open paths. For line-line
intersections the function is point valued, otherwise it is set valued.
<label|index-intersection-130><subsubsection*|Intersection functions>
<\description>
<item*|<code*|intersection(l, l')>>Intersection of line l and line l'.
Parallel lines cause an error.
<item*|<code*|intersection(l, s)>>Intersection of line l and set s.
<item*|<code*|intersection(l, c)>>Intersection of line l and circle or
conic c.
<item*|<code*|intersection(s, s')>>Intersection of set s and set s'.
<item*|<code*|intersection(c, c')>>Intersection of circle c and circle
c'.
<item*|<code*|intersection(c, s)>>Intersection of circle c and set s.
</description>
<subsection|Triangles>
\;
Triangular assignments consist in a list of three variable names followed
by either <code*|triangle>, <code*|right>, <code*|isosceles> or
<code*|equilateral>, and some optional parameters.
Example:
<\session|eukleides|default>
<\unfolded-io>
eukleides]\
<|unfolded-io>
A B C triangle 6, 5, 4, 0:
draw A.B
draw B.C
draw C.A
<|unfolded-io>
<image|<tuple|<#252150532D41646F62652D332E3020455053462D332E300A2525426F756E64696E67426F783A202D35362E36393239202D35362E36393239203232362E37373137203137302E303738370A25255469746C653A202F686F6D652F73616468656E2F2E586D6163732F73797374656D2F746D702F67726170685F65756B6C65696465735F39343833332F65756B6C65696465732E7478740A252543726561746F723A2065756B6C65696465730A2525456E64436F6D6D656E74730A67736176652032382E3334363435363639323920647570207363616C650A20302E30313736207365746C696E6577696474682031207365746C696E656361702031207365746C696E656A6F696E0A20302E303030302020302E303030302020362E303030302020302E30303030206D6F7665746F0A6C696E65746F207374726F6B650A20362E303030302020302E303030302020322E323530302020332E33303732206D6F7665746F0A6C696E65746F207374726F6B650A20322E323530302020332E333037322020302E303030302020302E30303030206D6F7665746F0A6C696E65746F207374726F6B650A73686F77706167652067726573746F72650A2525454F460A>|ps>|0.618par|||>
</unfolded-io>
<\input>
eukleides]\
<|input>
\;
</input>
</session>
In the following, we will use letter x for the first side of the triangle,
i.e. the segment joining the first and the second vertices, y for the
second side, i.e. the segment joining the second and the third vertices,
and z for the third side. Likewise, we will use letter u for the first
angle, v for the second angle, and a for the direction of the first side.
In a triangular assignment one or two vertices may be predefined, i.e. the
first or the first and the second variables already contain points. If no
vertices are predefined then the first variable is set to the origin of the
implicit coordinate system. The direction of the first side is horizontal
unless specified by an angular value at the end of the parameter list. If
two vertices are predefined then the parameters giving the length and the
orientation of the first side have to be omitted.
If no parameter is given, the length of the first side is set to 6.
<label|index-triangle-132><subsubsection*|Generic triangles>
<\description>
<item*|<code*|triangle { x { , a } }>>
<item*|<code*|triangle { x, } y, z { , a }>>
<item*|<code*|triangle { x, } u, v { , a }>>
<item*|<code*|triangle { x, } u, z { , a }>>
<item*|<code*|triangle { x, } z, v { , a }>>
</description>
The first assignment yields an optimal scalene triangle.
<label|index-right-133><subsubsection*|Right triangles>
<\description>
<item*|<code*|right { x { , a } }>>
<item*|<code*|right { x, } y { , a }>>
<item*|<code*|right { x, } u { , a }>>
</description>
With these assignments the resulting triangle has a right angle at its
second vertex. The first assignment yields a right triangle with sides
proportional to 4-3-5.
<label|index-isosceles-134><subsubsection*|Isosceles triangles>
<\description>
<item*|<code*|isosceles { x { , a } }>>
<item*|<code*|isosceles { x, } y { , a }>>
<item*|<code*|isosceles { x, } u { , a }>>
</description>
With these assignments the resulting triangle is isosceles at its third
vertex. The first assignment yields a golden triangle.
<label|index-equilateral-135><subsubsection*|Equilateral triangles>
<description|<item*|<code*|equilateral { x { , a } }>>>
<subsubsection*|Triangle related functions>
<label|index-angle-136><label|index-height-137><label|index-orthocenter-138><label|index-altitude-139><label|index-bisector-140><label|index-median-141><label|index-circle-142><label|index-incircle-143>
<\description>
<item*|<code*|angle(A, B, C)>>Degree measure of angle ABC.
<item*|<code*|height(A, B, C)>>Height of triangle ABC with respect to
vertex A.
<item*|<code*|orthocenter(A, B, C)>>Orthocenter of triangle ABC.
<item*|<code*|altitude(A, B, C)>>Altitude of triangle ABC with respect to
vertex A.
<item*|<code*|bisector(A, B, C)>>Bisector of angle ABC.
<item*|<code*|median(A, B, C)>>Median of triangle ABC with respect to
vertex A.
<item*|<code*|circle(A, B, C)>>Circumcircle of triangle ABC.
<item*|<code*|incircle(A, B, C)>>Incircle of triangle ABC.
</description>
<subsection|Quadrilaterals>
\;
Quadrilateral assignments consist in a list of four variable names followed
by either <code*|parallelogram>, <code*|rectangle> or <code*|square>, and
some optional parameters.
Example: <code*|\<degree\>>
<\session|eukleides|default>
<\unfolded-io>
eukleides]\
<|unfolded-io>
A B C D parallelogram 6, 3, 60:
draw
\ \ A.B; B.C; C.D; D.A
end
<|unfolded-io>
<image|<tuple|<#252150532D41646F62652D332E3020455053462D332E300A2525426F756E64696E67426F783A202D35362E36393239202D35362E36393239203232362E37373137203137302E303738370A25255469746C653A202F686F6D652F73616468656E2F2E586D6163732F73797374656D2F746D702F67726170685F65756B6C65696465735F39343833332F65756B6C65696465732E7478740A252543726561746F723A2065756B6C65696465730A2525456E64436F6D6D656E74730A67736176652032382E3334363435363639323920647570207363616C650A20302E30313736207365746C696E6577696474682031207365746C696E656361702031207365746C696E656A6F696E0A20302E303030302020302E303030302020362E303030302020302E30303030206D6F7665746F0A6C696E65746F207374726F6B650A20362E303030302020302E303030302020372E353030302020322E35393831206D6F7665746F0A6C696E65746F207374726F6B650A20372E353030302020322E353938312020312E353030302020322E35393831206D6F7665746F0A6C696E65746F207374726F6B650A20312E353030302020322E353938312020302E303030302020302E30303030206D6F7665746F0A6C696E65746F207374726F6B650A73686F77706167652067726573746F72650A2525454F460A>|ps>|0.618par|||>
</unfolded-io>
<\input>
eukleides]\
<|input>
\;
</input>
</session>
In the following, we will use letter x for the first side of the
quadrilateral, i.e. the segment joining the first and the second vertices,
y for the fourth side, i.e. the segment joining the first and the fourth
vertices, u and v the corresponding vectors. Likewise, we will use letter a
for the first angle, and b for the angular direction of the first side.
In quadrilateral assignments, one, two or three vertices may be predefined.
Like with triangular assignments, if no vertices are predefined then the
first variable is set to the origin of the implicit coordinate system. The
direction of the first side is horizontal unless specified by an angular
value at the end of the parameter list. If two vertices are predefined then
the parameters giving the length and the orientation of the first side have
to be omitted. If three vertices are predefined then only
<code*|parallelogram> is valid.
<label|index-parallelogram-145><label|index-rectangle-146><label|index-square-147><subsubsection*|Generic
quadrilateral assignments>
<\description>
<item*|<code*|parallelogram { x, } y, a { , b }>>
<item*|<code*|rectangle { x, } y, { , b }>>
<item*|<code*|square { x { , b } }>>
</description>
<subsubsection*|Default quadrilateral assignments>
\;
Default assignments, i.e. assignments without parameters, are only valid
with at most one predefined vertex.
<\description>
<item*|<code*|parallelogram>>Assigns a parallelogram such as x = 5, y = 4
and a = 75\<degree\>.
<item*|<code*|rectangle>>Assigns a golden rectangle such as x = 6.
<item*|<code*|square>>Assigns a square such as x = 4.
</description>
<subsubsection*|Vector based quadrilateral assignment>
This assignment is only valid with at most one predefined vertex.
<description|<item*|<code*|parallelogram u, v, a>>>
<subsection|Locus Assignments>
A locus assignment is useful to generate a set of points giving an
approximation of a locus. It consists in a locus statement followed by a
block of instructions delimited by <code*|end>. The instruction block must
contain a put statement, i.e. the <code*|put> keyword followed by a
point-valued expression. The syntax for locus statements is:
<code| \ \ \ \ locus l(t = a to b { step n })>
The associated instruction block is repeated n times with values of number
t increasing from a to b. Each put statement appends a point to the
resulting set l. Default value for n is 120.
<subsubsection*|Examples>
\;
A cardioid.
<\session|eukleides|default>
<\unfolded-io>
eukleides]\
<|unfolded-io>
box -1, -1, 1, 1
locus C(t = 0 to 360)
\ \ put point(sin(t/2), t:)
end
draw C
<|unfolded-io>
<image|<tuple|<#252150532D41646F62652D332E3020455053462D332E300A2525426F756E64696E67426F783A202D32382E33343635202D32382E333436352032382E333436352032382E333436350A25255469746C653A202F686F6D652F73616468656E2F2E586D6163732F73797374656D2F746D702F67726170685F65756B6C65696465735F32353339302F65756B6C65696465732E7478740A252543726561746F723A2065756B6C65696465730A2525456E64436F6D6D656E74730A67736176652032382E3334363435363639323920647570207363616C650A20302E30313736207365746C696E6577696474682031207365746C696E656361702031207365746C696E656A6F696E0A20302E303030302020302E303030302020302E303236312020302E303031342020302E303532302020302E303035352020302E303737352020302E303132330A20302E313032322020302E303231372020302E313236312020302E303333382020302E313438382020302E303438332020302E313730312020302E303635330A20302E313839392020302E303834362020302E323038302020302E313036302020302E323234312020302E313239342020302E323338322020302E313534370A20302E323530302020302E313831362020302E323539342020302E323130312020302E323636332020302E323339382020302E323730362020302E323730360A20302E323732322020302E333032332020302E323730392020302E333334362020302E323636382020302E333637332020302E323539392020302E343030320A20302E323530302020302E343333302020302E323337322020302E343635352020302E323231352020302E343937362020302E323033302020302E353238380A20302E313831362020302E353539302020302E313537362020302E353838302020302E313330382020302E363135362020302E313031362020302E363431350A20302E303639392020302E363635352020302E303336302020302E363837342020302E303030302020302E37303731202D302E303338302020302E373234340A2D302E303737372020302E37333931202D302E313139302020302E37353130202D302E313631362020302E37363032202D302E323035332020302E373636330A2D302E323530302020302E37363934202D302E323935332020302E37363934202D302E333431312020302E37363632202D302E333837312020302E373539370A2D302E343333302020302E37353030202D302E343738362020302E37333730202D302E353233372020302E37323038202D302E353638302020302E373031340A2D302E363131332020302E36373839202D302E363533332020302E36353333202D302E363933382020302E36323437202D302E373332362020302E353933320A2D302E373639342020302E35353930202D302E383034312020302E35323232202D302E383336352020302E34383330202D302E383636342020302E343431340A2D302E383933362020302E33393738202D302E393137392020302E33353234202D302E393339332020302E33303532202D302E393537372020302E323536360A2D302E393732382020302E32303638202D302E393834362020302E31353630202D302E393933322020302E31303434202D302E393938332020302E303532330A2D312E303030302020302E30303030202D302E39393833202D302E30353233202D302E39393332202D302E31303434202D302E39383436202D302E313536300A2D302E39373238202D302E32303638202D302E39353737202D302E32353636202D302E39333933202D302E33303532202D302E39313739202D302E333532340A2D302E38393336202D302E33393738202D302E38363634202D302E34343134202D302E38333635202D302E34383330202D302E38303431202D302E353232320A2D302E37363934202D302E35353930202D302E37333236202D302E35393332202D302E36393338202D302E36323437202D302E36353333202D302E363533330A2D302E36313133202D302E36373839202D302E35363830202D302E37303134202D302E35323337202D302E37323038202D302E34373836202D302E373337300A2D302E34333330202D302E37353030202D302E33383731202D302E37353937202D302E33343131202D302E37363632202D302E32393533202D302E373639340A2D302E32353030202D302E37363934202D302E32303533202D302E37363633202D302E31363136202D302E37363032202D302E31313930202D302E373531300A2D302E30373737202D302E37333931202D302E30333830202D302E37323434202D302E30303030202D302E373037312020302E30333630202D302E363837340A20302E30363939202D302E363635352020302E31303136202D302E363431352020302E31333038202D302E363135362020302E31353736202D302E353838300A20302E31383136202D302E353539302020302E32303330202D302E353238382020302E32323135202D302E343937362020302E32333732202D302E343635350A20302E32353030202D302E343333302020302E32353939202D302E343030322020302E32363638202D302E333637332020302E32373039202D302E333334360A20302E32373232202D302E333032332020302E32373036202D302E323730362020302E32363633202D302E323339382020302E32353934202D302E323130310A20302E32353030202D302E313831362020302E32333832202D302E313534372020302E32323431202D302E313239342020302E32303830202D302E313036300A20302E31383939202D302E303834362020302E31373031202D302E303635332020302E31343838202D302E303438332020302E31323631202D302E303333380A20302E31303232202D302E303231372020302E30373735202D302E303132332020302E30353230202D302E303035352020302E30323631202D302E303031340A20302E30303030202D302E30303030206D6F7665746F0A313230207B6C696E65746F7D20726570656174207374726F6B650A73686F77706167652067726573746F72650A2525454F460A>|ps>|0.618par|||>
</unfolded-io>
<\input>
eukleides]\
<|input>
\;
</input>
</session>
A quadratrix generated from the intersection of two uniformly-moving lines:
one angular, one linear (original script by Robert D. Goulding).
<\session|eukleides|default>
<\unfolded-io>
eukleides]\
<|unfolded-io>
locus q(t = 10^-3 to 1)
\ \ l1 = line(point(0, 0), t*pi/2 rad)
\ \ l2 = line(point(0, t), 0 rad)
\ \ put intersection(l1, l2)
end
draw q
<|unfolded-io>
<image|<tuple|<#252150532D41646F62652D332E3020455053462D332E300A2525426F756E64696E67426F783A202D35362E36393239202D35362E36393239203232362E37373137203137302E303738370A25255469746C653A202F686F6D652F73616468656E2F2E586D6163732F73797374656D2F746D702F67726170685F65756B6C65696465735F32353339302F65756B6C65696465732E7478740A252543726561746F723A2065756B6C65696465730A2525456E64436F6D6D656E74730A67736176652032382E3334363435363639323920647570207363616C650A20302E30313736207365746C696E6577696474682031207365746C696E656361702031207365746C696E656A6F696E0A20302E363336362020302E303031302020302E363336362020302E303039332020302E363336352020302E303137372020302E363336332020302E303236300A20302E363336302020302E303334332020302E363335372020302E303432362020302E363335332020302E303531302020302E363334382020302E303539330A20302E363334322020302E303637362020302E363333362020302E303735392020302E363332392020302E303834332020302E363332312020302E303932360A20302E363331332020302E313030392020302E363330342020302E313039322020302E363239342020302E313137362020302E363238332020302E313235390A20302E363237322020302E313334322020302E363235392020302E313432352020302E363234372020302E313530392020302E363233332020302E313539320A20302E363231392020302E313637352020302E363230342020302E313735382020302E363138382020302E313834322020302E363137312020302E313932350A20302E363135342020302E323030382020302E363133362020302E323039312020302E363131372020302E323137352020302E363039372020302E323235380A20302E363037372020302E323334312020302E363035352020302E323432342020302E363033342020302E323530382020302E363031312020302E323539310A20302E353938372020302E323637342020302E353936332020302E323735372020302E353933382020302E323834312020302E353931322020302E323932340A20302E353838362020302E333030372020302E353835382020302E333039302020302E353833302020302E333137342020302E353830312020302E333235370A20302E353737312020302E333334302020302E353734302020302E333432332020302E353730392020302E333530372020302E353637372020302E333539300A20302E353634342020302E333637332020302E353631302020302E333735362020302E353537352020302E333834302020302E353533392020302E333932330A20302E353530332020302E343030362020302E353436362020302E343038392020302E353432372020302E343137332020302E353338382020302E343235360A20302E353334382020302E343333392020302E353330382020302E343432322020302E353236362020302E343530362020302E353232332020302E343538390A20302E353138302020302E343637322020302E353133362020302E343735352020302E353039302020302E343833392020302E353034342020302E343932320A20302E343939372020302E353030352020302E343934392020302E353038382020302E343930302020302E353137312020302E343835302020302E353235350A20302E343739392020302E353333382020302E343734372020302E353432312020302E343639352020302E353530352020302E343634312020302E353538380A20302E343538362020302E353637312020302E343533302020302E353735342020302E343437332020302E353833382020302E343431352020302E353932310A20302E343335362020302E363030342020302E343239362020302E363038372020302E343233352020302E363137312020302E343137332020302E363235340A20302E343131302020302E363333372020302E343034362020302E363432302020302E333938302020302E363530342020302E333931342020302E363538370A20302E333834362020302E363637302020302E333737372020302E363735332020302E333730382020302E363833372020302E333633362020302E363932300A20302E333536342020302E373030332020302E333439312020302E373038362020302E333431362020302E373137302020302E333334302020302E373235330A20302E333236332020302E373333362020302E333138342020302E373431392020302E333130342020302E373530332020302E333032332020302E373538360A20302E323934312020302E373636392020302E323835372020302E373735322020302E323737322020302E373833362020302E323638352020302E373931390A20302E323539372020302E383030322020302E323530382020302E383038352020302E323431372020302E383136392020302E323332352020302E383235320A20302E323233312020302E383333352020302E323133362020302E383431382020302E323033392020302E383530322020302E313934312020302E383538350A20302E313834312020302E383636382020302E313733392020302E383735312020302E313633362020302E383833352020302E313533312020302E383931380A20302E313432342020302E393030312020302E313331362020302E393038342020302E313230362020302E393136382020302E313039342020302E393235310A20302E303938302020302E393333342020302E303836342020302E393431372020302E303734372020302E393530312020302E303632382020302E393538340A20302E303530362020302E393636372020302E303338332020302E393735302020302E303235372020302E393833342020302E303133302020302E393931370A20302E303030302020312E30303030206D6F7665746F0A313230207B6C696E65746F7D20726570656174207374726F6B650A73686F77706167652067726573746F72650A2525454F460A>|ps>|0.618par|||>
</unfolded-io>
<\input>
eukleides]\
<|input>
\;
</input>
</session>
<section|Drawing>
<subsection|Drawing Commands>
A drawing command is either a single or a multiple drawing statement. A
single drawing statement consists in the <code*|draw> keyword followed by a
drawable object and a possibly empty comma separated list of aspect
parameters.
<\session|eukleides|default>
<\unfolded-io>
eukleides]\
<|unfolded-io>
draw point(2, 3) red
<|unfolded-io>
<image|<tuple|<#252150532D41646F62652D332E3020455053462D332E300A2525426F756E64696E67426F783A202D35362E36393239202D35362E36393239203232362E37373137203137302E303738370A25255469746C653A202F55736572732F64612F2E586D6163732F73797374656D2F746D702F67726170685F65756B6C65696465735F35343931302F65756B6C65696465732E7478740A252543726561746F723A2065756B6C65696465730A2525456E64436F6D6D656E74730A67736176652032382E3334363435363639323920647570207363616C650A20302E30313736207365746C696E6577696474682031207365746C696E656361702031207365746C696E656A6F696E0A312030203020736574726762636F6C6F720A2F446F74207B3020333630206172632066696C6C7D2062696E64206465660A20322E303030302020332E303030302020302E3035303020446F740A73686F77706167652067726573746F72650A2525454F460A>|ps>|0.618par|||>
</unfolded-io>
<\input>
eukleides]\
<|input>
\;
</input>
</session>
A multiple drawing statement consists in the <code*|draw> keyword followed
by a list of global aspect parameters and a list of drawable objects (with
possibly local aspect parameters) delimited by <code*|end>.
<\session|eukleides|default>
<\unfolded-io>
eukleides]\
<|unfolded-io>
A = point(1, 1)
B = point(5, 1)
C = point(1, 2)
D = point(5, 2)
E = point(1, 3)
F = point(5, 3)
draw blue
\ \ A.B
\ \ C.D dashed, black
\ \ E.F dotted
end
<|unfolded-io>
<image|<tuple|<#252150532D41646F62652D332E3020455053462D332E300A2525426F756E64696E67426F783A202D35362E36393239202D35362E36393239203232362E37373137203137302E303738370A25255469746C653A202F55736572732F64612F2E586D6163732F73797374656D2F746D702F67726170685F65756B6C65696465735F35343931302F65756B6C65696465732E7478740A252543726561746F723A2065756B6C65696465730A2525456E64436F6D6D656E74730A67736176652032382E3334363435363639323920647570207363616C650A20302E30313736207365746C696E6577696474682031207365746C696E656361702031207365746C696E656A6F696E0A302030203120736574726762636F6C6F720A20312E303030302020312E303030302020352E303030302020312E30303030206D6F7665746F0A6C696E65746F207374726F6B650A302030203020736574726762636F6C6F720A5B2E33202E325D203020736574646173680A20312E303030302020322E303030302020352E303030302020322E30303030206D6F7665746F0A6C696E65746F207374726F6B650A302030203120736574726762636F6C6F720A5B30202E325D203020736574646173680A20312E303030302020332E303030302020352E303030302020332E30303030206D6F7665746F0A6C696E65746F207374726F6B650A73686F77706167652067726573746F72650A2525454F460A>|ps>|0.618par|||>
</unfolded-io>
<\input>
eukleides]\
<|input>
\;
</input>
</session>
Local parameters override global ones.
<subsubsection*|Aspect parameters>
<label|index-color-154><label|index-scale-factor-155><label|index-point-shape-156><label|index-line-style-157><label|index-partition-158><label|index-direction-159><label|index-endings-160><label|index-font-161><label|index-black-162><label|index-darkgray-163><label|index-gray-164><label|index-lightgray-165><label|index-white-166><label|index-red-167><label|index-green-168><label|index-blue-169><label|index-cyan-170><label|index-magenta-171><label|index-yellow-172><label|index-dot-173><label|index-disc-174><label|index-box-175><label|index-plus-176><label|index-cross-177><label|index-full-178><label|index-dashed-179><label|index-dotted-180><label|index-entire-181><label|index-half-182><label|index-forth-183><label|index-back-184><label|index-none-185><label|index-arrow-186><label|index-arrows-187><label|index-font-188>
<\description>
<item*|<cite*|Color>><code*|black> (default), <code*|darkgray>,
<code*|gray>, <code*|lightgray>, <code*|white>, <code*|red>,
<code*|green>, <code*|blue>, <code*|cyan>, <code*|magenta>,
<code*|yellow>.
<item*|<cite*|Scale factor>>A number greater than 0 (default: 1).
<item*|<cite*|Point shape>><code*|dot> (default), <code*|disc>,
<code*|box>, <code*|plus>, <code*|cross>.
<item*|<cite*|Line style>><code*|full> (default), <code*|dashed>,
<code*|dotted>.
<item*|<cite*|Partition>><code*|entire> (default), <code*|half>.
<item*|<cite*|Direction>><code*|forth> (default), <code*|back>.
<item*|<cite*|Endings>><code*|none> (default), <code*|arrow>,
<code*|arrows>.
<item*|<cite*|Conics draw step>>An angular parameter (default:
3\<degree\>) setting the current drawing step (with respect of the
parametric representation).
<item*|<cite*|Font>><code*|font(><var|s><code*|)> where <var|s> is a
string containing the font description.
</description>
<subsubsection*|Font description>
With <samp|eukleides> the font description string has to follow the
standard PostScript format, i.e. <code*|"><var|name><code*|-><var|face><code*|-><var|size><code*|">.
Example: <code*|"Helvetica-Bold-12">
The default font is <code*|"NewCenturySchlbk-Roman-10">.
With <samp|euktopst> the font description string should be a sequence of
parameterless commands (without the leading backslash) appropriate to the
TeX format in use, e.g. <code*|"bf"> with plain TeX or
<code*|"sffamily\\bfseries"> with LaTeX.
<subsubsection*|Single drawing statements>
<\description>
<item*|<code*|draw A ><var|list>>Draws point A, where <var|list> may
contain color, scale and shape parameters.
<item*|<code*|draw v O ><var|list>>Draws vector v from point O, where
<var|list> may contain color, scale and style parameters. The scale
factor determines the line thickness.
<item*|<code*|draw s ><var|list>>Draws the open path corresponding to set
s, where <var|list> may contain color, scale, style, direction and
endings parameters.
<item*|<code*|draw (s) ><var|list>>Draws the polygon corresponding to set
s, where <var|list> may contain color, scale, style, direction and
endings parameters.
<item*|<code*|draw [s] { ><var|color><code*| }>>Fills the polygon
corresponding to set s.
<item*|<code*|draw [s] a ><var|list>>Hatches the polygon corresponding to
set s, where <var|list> may contain color and scale parameters. The
angular parameter a determines the direction of the hatches. The scale
factor determines the spacing of the hatches (default: 1.5 mm).
<item*|<code*|draw l ><var|list>>Draws line l where <var|list> may
contain color, scale, style, partition and direction parameters. Using
<code*|half> yields the ray having same origin and direction than line l,
using both <code*|half> and <code*|back> yields the ray with reverse
direction.
<item*|<code*|draw c ><var|list>>Draws circle c where <var|list> may
contain color, scale and style parameters.
<item*|<code*|draw c a b ><var|list>>Draws arc of circle c from polar
angle a to polar angle b (with respect to the center of c) where
<var|list> may contain color, scale, style, direction and endings
parameters.
<item*|<code*|draw [c] { ><var|color><code*| }>>Fills circle c.
<item*|<code*|draw [c] a ><var|list>>Hatches circle c where <var|list>
may contain color and scale parameters. The angular parameter a
determines the direction of the hatches. The scale factor determines the
spacing of the hatches (default: 1.5 mm).
<item*|<code*|draw c ><var|list>>Draws conic c where <var|list> may
contain color, scale, style and step parameters.
<item*|<code*|draw c a b ><var|list>>Draws conic c from argument a to
argument b (with respect to the parametric representation of c) where
<var|list> may contain color, scale, style, direction, endings and step
parameters.
<item*|<code*|draw l A a ><var|list>>Writes string l with respect to
point A in direction a, where <var|list> may contain color, scale and
font parameters. The scale factor determines the distance from the center
of the string to the point.
<item*|<code*|draw l s a ><var|list>>Writes string l with respect to the
middle of segment s in direction a, where <var|list> may contain color,
scale and font parameters. The scale factor determines the distance from
the center of the string to the middle of the segment (default: 3 mm).
</description>
<subsubsection*|Output setting commands>
<\description>
<item*|<index|scale><code*|scale z>>Sets the value of the length unit.
(Default: 1 cm.)
<item*|<index|box><code*|box x, y, x', y' { , z }>>
<index|frame><item*|<code*|frame x, y, x', y' { , z }>>Sets the
coordinates of the lower left and upper right corner of the drawing
frame, with optional scale factor z. Default coordinates are (-2, -2) and
(8, 6). With <samp|eukleides> and <samp|euktopst>, both commands yield
the same result.
</description>
<subsection|Label Commands>
Label commands are useful to mark segments or angles with usual symbols, or
to write point names. As for drawing commands, a label command is either a
single or a multiple statement.
\;
<\session|eukleides|default>
<\unfolded-io>
eukleides]\
<|unfolded-io>
B = point(-1,2)
C = point(7,2)
draw B.C
label B.C double
<|unfolded-io>
<image|<tuple|<#252150532D41646F62652D332E3020455053462D332E300A2525426F756E64696E67426F783A202D35362E36393239202D35362E36393239203232362E37373137203137302E303738370A25255469746C653A202F55736572732F64612F2E586D6163732F73797374656D2F746D702F67726170685F65756B6C65696465735F35343931302F65756B6C65696465732E7478740A252543726561746F723A2065756B6C65696465730A2525456E64436F6D6D656E74730A67736176652032382E3334363435363639323920647570207363616C650A20302E30313736207365746C696E6577696474682031207365746C696E656361702031207365746C696E656A6F696E0A2D312E303030302020322E303030302020372E303030302020322E30303030206D6F7665746F0A6C696E65746F207374726F6B650A2F446F75626C65207B6773617665207472616E736C61746520726F7461746520647570207363616C6520302E313235207365746C696E657769647468202D31202D31206D6F7665746F20302031206C696E65746F2030202D31206D6F7665746F20312031206C696E65746F207374726F6B652067726573746F72657D2062696E64206465660A20302E313030302020302E303030302020332E303030302020322E3030303020446F75626C650A73686F77706167652067726573746F72650A2525454F460A>|ps>|0.618par|||>
</unfolded-io>
<\unfolded-io>
eukleides]\
<|unfolded-io>
A = point(1, 1)
B = point(5, 1)
C = point(1, 2)
D = point(5, 2)
E = point(1, 3)
F = point(5, 3)
draw blue
\ \ A.B
\ \ C.D dashed, black
\ \ E.F dotted
end
label blue
\ \ A.B
\ \ C.D cross, black
\ \ E.F double
end
\;
<|unfolded-io>
<image|<tuple|<#252150532D41646F62652D332E3020455053462D332E300A2525426F756E64696E67426F783A202D35362E36393239202D35362E36393239203232362E37373137203137302E303738370A25255469746C653A202F55736572732F64612F2E586D6163732F73797374656D2F746D702F67726170685F65756B6C65696465735F35343931302F65756B6C65696465732E7478740A252543726561746F723A2065756B6C65696465730A2525456E64436F6D6D656E74730A67736176652032382E3334363435363639323920647570207363616C650A20302E30313736207365746C696E6577696474682031207365746C696E656361702031207365746C696E656A6F696E0A302030203120736574726762636F6C6F720A20312E303030302020312E303030302020352E303030302020312E30303030206D6F7665746F0A6C696E65746F207374726F6B650A302030203020736574726762636F6C6F720A5B2E33202E325D203020736574646173680A20312E303030302020322E303030302020352E303030302020322E30303030206D6F7665746F0A6C696E65746F207374726F6B650A302030203120736574726762636F6C6F720A5B30202E325D203020736574646173680A20312E303030302020332E303030302020352E303030302020332E30303030206D6F7665746F0A6C696E65746F207374726F6B650A5B5D203020736574646173680A2F53696D706C65207B6773617665207472616E736C61746520726F7461746520647570207363616C6520302E313235207365746C696E657769647468202D302E35202D31206D6F7665746F20302E352031206C696E65746F207374726F6B652067726573746F72657D2062696E64206465660A20302E313030302020302E303030302020332E303030302020312E303030302053696D706C650A302030203020736574726762636F6C6F720A2F43726F7373207B6773617665207472616E736C61746520726F7461746520647570207363616C6520302E32207365746C696E65776964746820312030206D6F7665746F202D312030206C696E65746F20302031206D6F7665746F2030202D31206C696E65746F207374726F6B652067726573746F72657D2062696E64206465660A20302E313030302034352E303030302020332E303030302020322E303030302043726F73730A302030203120736574726762636F6C6F720A2F446F75626C65207B6773617665207472616E736C61746520726F7461746520647570207363616C6520302E313235207365746C696E657769647468202D31202D31206D6F7665746F20302031206C696E65746F2030202D31206D6F7665746F20312031206C696E65746F207374726F6B652067726573746F72657D2062696E64206465660A20302E313030302020302E303030302020332E303030302020332E3030303020446F75626C650A73686F77706167652067726573746F72650A2525454F460A>|ps>|0.618par|||>
</unfolded-io>
<\input>
eukleides]\
<|input>
\;
</input>
</session>
Local parameters override global ones.
<subsubsection*|Label parameters>
<\description>
<item*|<cite*|Segment mark shape>><code*|simple> (default),
<code*|double>, <code*|triple>, <code*|cross>.
<item*|<cite*|Angle mark shape>><code*|simple> (default), <code*|double>,
<code*|triple>, <code*|right>, <code*|forth>, <code*|back>.
<item*|<cite*|Angle mark decoration>><code*|none> (default),
<code*|dotted>, <code*|dashed>.
<item*|<cite*|Color>><code*|black> (default), <code*|darkgray>,
<code*|gray>, <code*|lightgray>, <code*|white>, <code*|red>,
<code*|green>, <code*|blue>, <code*|cyan>, <code*|magenta>,
<code*|yellow>.
<item*|<cite*|Scale factor>>A number greater than 0 (default: 1).
<item*|<cite*|Font>><code*|font(><var|s><code*|)> where <var|s> is a
string containing the font description.
</description>
<subsubsection*|Single label statements>
<\description>
<item*|<code*|label s ><var|list>>Marks segment s where <var|list> may
contain shape, color and scale parameters.
<item*|<code*|label B, A, C ><var|list>>Marks angle BAC (i.e. angle from
ray AB to ray AC in anticlockwise direction) where <var|list> may contain
shape, decoration, color and scale parameters. The <code*|forth> and
<code*|back> shape yield arrowed angle marks (respectively in direct and
reverse direction). The <code*|dotted> decoration adds a dot inside the
angle mark. The <code*|dashed> decoration adds a tick on the angle mark.
<item*|<code*|label P a ><var|list>>Assuming variable P contains a point,
writes the name of P in direction a from P, where <var|list> may contain
color, scale and font parameters. The scale factor determines the
distance from the center of the label to the point (default: 3 mm).
</description>
<section|Programming>
<subsection|Input and Output>
<subsubsection*|Input commands>
<\description>
<item*|<code*|read s>>Opens the file whose name is string s for reading.
<item*|<code*|close>>Closes the previously opened data file.
</description>
Standard input is used unless a data file is specified at command line
invocation or open for reading.
<label|index-input-functions-223><label|index-number-224><label|index-string-225><subsubsection*|Input
functions>
<\description>
<item*|<code*|number(s)>>Reads a number from current input.
<item*|<code*|string(s)>>Reads a string from current input.
</description>
String s is used as a prompt.
Example:
<\code>
\ \ \ \ \ l = number("Length?")
\ \ \ \ \ w = number("Width?")
\ \ \ \ \ draw rectangle(l, w)
</code>
When running in batch mode with no defined data file, the <samp|number>
function returns 0 and the <samp|string> function returns the empty string.
<label|index-output-commands-226><label|index-printable-objects-227><label|index-file-output-228><label|index-write-229><label|index-append-230><label|index-release-231><label|index-print-232><label|index-error-233><label|index-output-234><subsubsection*|Output
commands>
\;
Output commands take a comma separated list of printable objects as
arguments. Printable objects are strings, numbers, points and sets. They
are formatted the same way as for conversion to string.
<\description>
<item*|<code*|write s>>Opens the file whose name is string s for writing.
If the file exists, its content will be overwritten. Otherwise, it is
created.
<item*|<code*|append s>>Opens the file whose name is string s for
appending. The file is created if it does not exist. Writing starts at
the end of the file.
<item*|<code*|release>>Closes previously opened result file.
<item*|<code*|print ><var|list>>Writes <var|list> to current result file,
or to standard output if none is open.
<item*|<code*|error ><var|list>>Writes <var|list> to standard error
stream.
<item*|<code*|output ><var|list>>Writes <var|list> to output file. This
may be useful to include low level PostScript or PSTricks command
invocations.
</description>
<subsection|Conditional Statements>
Syntax for conditional statement is:
<code| \ \ \ \ if <var|assertion> <var|block> { { elseif \ <var|assertion>
<var|block> } ... else <var|block> } end>
Example:
<\code>
\ \ \ \ \ if x \<less\> 0
\ \ \ \ \ \ \ print ``x is negative."
\ \ \ \ \ elseif x \<gtr\> 0
\ \ \ \ \ \ \ print ``x is positive."
\ \ \ \ \ else
\ \ \ \ \ \ \ print ``x is null."
\ \ \ \ \ end
</code>
<label|index-stop-240>Using the <code*|stop> command within a conditional
statement allows to abort the execution of a script when some condition is
met.
<subsubsection*|Boolean operators>
<label|index-not-241><label|index-and-242><label|index-or-243>
<\description>
<item*|<code*|not a>>Negation of assertion a.
<item*|<code*|a and b>>Disjunction of assertions a and b.
<item*|<code*|a or b>>Conjunction of assertions a and b.
</description>
<subsubsection*|Boolean constants>
<label|index-true-244><label|index-false-245>
<\description>
<item*|<code*|true>>
<item*|<code*|false>>
</description>
<subsubsection*|Comparison operators>
<\description>
<item*|<code*|a == b>>Checks whether objects a and b are equal, i.e. have
the same internal representation. Objects may be numbers, strings,
points, vectors, sets, lines, circles or conics.
<item*|<code*|a != b>>Negation of the former.
<item*|<code*|x \<less\> y>>
<item*|<code*|x \<less\>= y>>
<item*|<code*|x \<gtr\> y>>
<item*|<code*|x \<gtr\>= y>>Comparison of numbers x and y.
</description>
<subsubsection*|Set assertions>
<label|index-in-246><label|index-empty-247>
<\description>
<item*|<code*|A in s>>Checks whether point A belongs to set s.
<item*|<code*|empty(s)>>Checks for emptiness of set s.
</description>
<subsubsection*|Geometric assertions>
<\description>
<item*|<code*|A on s>>Checks whether point A is on object s, where s may
be a set (considered as an open path), a line, a circle or a conic.
<item*|<code*|collinear(A, B, C)>>Checks whether points A, B and C are
collinear.
<item*|<code*|collinear(u, v)>>Checks whether vectors u and v are
collinear, i.e. have same or opposite directions.
<item*|<code*|parallel(l, l')>>
<item*|<code*|perpendicular(l, l')>>Direction comparison of lines l and
l'.
<item*|<code*|ellipse(c)>>
<item*|<code*|hyperbola(c)>>
<item*|<code*|parabola(c)>>Type checking of conic c.
<item*|<code*|isosceles(A, B, C)>>
<item*|<code*|equilateral(A, B, C)>>
<item*|<code*|right(A, B, C)>>Type checking of triangle ABC.
<item*|<code*|parallelogram(A, B, C, D)>>
<item*|<code*|rectangle(A, B, C, D)>>
<item*|<code*|square(A, B, C, D)>>Type checking of quadrilateral ABCD.
</description>
<subsubsection*|Output format flags>
<label|index-eps-261><label|index-pstricks-262><label|index-display-263>
<\description>
<item*|<code*|eps>>True with <samp|eukleides>.
<item*|<code*|pstricks>>True with <samp|euktopst>.
<item*|<code*|display>>True within GUI.
</description>
<subsubsection*|Ternary operator>
<description|<item*|<var|assertion><code*| ? x \| y>>Number x if
<var|assertion> is true, number y otherwise.>
<subsection|Iterative Statements>
<\description>
<item*|<code*|while ><var|assertion> <var|block><code*| end>>Repeats
<var|block> while <var|assertion> is true.
<item*|<code*|for i = a to b { step c } ><var|block><code*| end>>Repeats
<var|block> while incrementing number i by c (default: 1), from a to b.
Numbers b and c are evaluated at each step. Iteration ends as soon as i
is greater than or smaller than b, depending on the sign of c.
<item*|<code*|for P in s ><var|block><code*| end>>Repeats <var|block>
while point P runs through set s.
</description>
Example:
<\session|eukleides|default>
<\unfolded-io>
eukleides]\
<|unfolded-io>
O = point(3,2)
H = hexagon(O, 3, 0:)
draw (H)
\ \ \ \ \
for P in H
\ \ draw O.P dotted
end
<|unfolded-io>
<image|<tuple|<#252150532D41646F62652D332E3020455053462D332E300A2525426F756E64696E67426F783A202D35362E36393239202D35362E36393239203232362E37373137203137302E303738370A25255469746C653A202F686F6D652F73616468656E2F2E586D6163732F73797374656D2F746D702F67726170685F65756B6C65696465735F39343833332F65756B6C65696465732E7478740A252543726561746F723A2065756B6C65696465730A2525456E64436F6D6D656E74730A67736176652032382E3334363435363639323920647570207363616C650A20302E30313736207365746C696E6577696474682031207365746C696E656361702031207365746C696E656A6F696E0A20362E303030302020322E303030302020342E353030302020342E353938312020312E353030302020342E35393831202D302E303030302020322E303030300A20312E35303030202D302E353938312020342E35303030202D302E35393831206D6F7665746F0A35207B6C696E65746F7D2072657065617420636C6F736570617468207374726F6B650A5B30202E325D203020736574646173680A20332E303030302020322E303030302020362E303030302020322E30303030206D6F7665746F0A6C696E65746F207374726F6B650A20332E303030302020322E303030302020342E353030302020342E35393831206D6F7665746F0A6C696E65746F207374726F6B650A20332E303030302020322E303030302020312E353030302020342E35393831206D6F7665746F0A6C696E65746F207374726F6B650A20332E303030302020322E30303030202D302E303030302020322E30303030206D6F7665746F0A6C696E65746F207374726F6B650A20332E303030302020322E303030302020312E35303030202D302E35393831206D6F7665746F0A6C696E65746F207374726F6B650A20332E303030302020322E303030302020342E35303030202D302E35393831206D6F7665746F0A6C696E65746F207374726F6B650A73686F77706167652067726573746F72650A2525454F460A>|ps>|0.618par|||>
</unfolded-io>
<\input>
eukleides]\
<|input>
\;
</input>
</session>
<\code>
\ \ \ \ \
</code>
<subsection|Function Definitions>
\;
A command or function definition consists in a header followed by a block
of instructions delimited by <code*|end>.
A command definition header consists in a command name followed by a comma
separated parameter declaration list enclosed in parenthesis. A parameter
declaration consists in a parameter type: <code*|number>, <code*|point>,
<code*|vector>, <code*|set>, <code*|line>, <code*|circle>, <code*|conic> or
<code*|string>, followed by a parameter name. A function definition header
is identical to a command definition header except that it starts with a
return type.
<label|index-return-270>A function definition must contain at least a
return statement, which consists in the <code*|return> keyword followed by
an appropriate expression. Command definitions may contain empty return
statements.
Example:
<\code>
\ \ \ \ \ number square(number x)
\ \ \ \ \ \ \ return x*x
\ \ \ \ \ end
</code>
<label|index-local-271>Variables may be declared local to a command or
function definition using the <code*|local> keyword.
Example:
<\code>
\ \ \ \ \ vector conjugate(vector v)
\ \ \ \ \ \ \ local x, y
\ \ \ \ \ \ \ x = abscissa(v)
\ \ \ \ \ \ \ y = ordinate(v)
\ \ \ \ \ \ \ return vector(x, -y)
\ \ \ \ \ end
</code>
<subsection|Modules>
\;
Eukleides scripts may be modular using include directives. An include
directive consists in a line starting with the at sign (@) followed without
white space by the path to the file (either absolute or relative). To avoid
circular references, only 20 levels of inclusion are allowed.
<subsection|Interactive Variables>
\;
The GUI for the first version of the Eukleides language, named
<samp|xeukleides>, allowed to interactively modify the value of numeric
variables using the keyboard. The planned GUI for the second version will
have similar features.
<subsubsection*|Mobile points>
\;
A mobile point is a point-valued variable which is bound to a state (A to
Z) and to the keyboard arrows. To switch to a given state, the user has to
hit the corresponding key.
Syntax for a mobile point declaration is:
<\description>
<item*|<code*|mobile ><var|var><code*| { (><var|state><code*|) } =
><var|point>>
<item*|<code*|mobile ><var|var><code*| ( { ><var|state><code*|, } z) =
><var|point>>
<item*|<code*|mobile ><var|var><code*| ( { ><var|state><code*|, } x, y,
x', y' { , z } ) = ><var|point>>
</description>
\;
unless <var|var> already contains a point, in which case the initialisation
part has to be omitted.
A state identifier consists in the number sign (<with|font-family|tt|#>)
followed by the corresponding uppercase letter. When omitted, the variable
is bound to the state corresponding to the first letter of its name. Number
z is the amount by which the appropriate coordinate is incremented or
decremented for each stroke on the arrow keys (default: 0.1). Numbers x and
x' are the minimal and maximal abscissa, numbers y and y' are the minimal
and maximal ordinate. By default there are no boundaries.
Example: <code*|mobile P_0(<with|font-family|tt|#>A, 0.2)>
<subsubsection*|Interactive numeric variables>
\;
An interactive numeric variable is bound to a state (A to Z) and to either
the horizontal or the vertical keyboard arrows.
Syntax for interactive variable declaration is:
<label|index-horizontal-276><label|index-vertical-277>
<\description>
<item*|<code*|horizontal ><var|variable><code*| (><var|state><code*| { ,
x, y } { , z }) = t>>
<item*|<code*|vertical ><var|variable><code*| (><var|state><code*| { , x,
y } { , z }) = t>>
</description>
Numbers x and y are the lower and upper bound. By default there are no
boundaries. Number z is the amount by which the variable is incremented or
decremented (default: 0.1).
Example: <code*|horizontal x(<with|font-family|tt|#>A, -1, 1)>
<subsubsection*|Initialisation directives>
\;
An initialisation directive is equivalent to keystrokes prior to execution.
It consists in a single line starting with a number sign followed by a
space separated list of pairs of letters and integers. Lowercase letters
correspond to horizontal arrows, uppercase to vertical. Negative integers
correspond to left or down directions, positive to right or up.
Example: <code*|<with|font-family|tt|#> a 5 A 10 b -4>
This initialisation directive is equivalent to 5 strokes on the right arrow
key and 10 strokes on the up arrow key in A state and 4 strokes on the left
arrow key in B state.
An initialisation directive may also be given as a command-line parameter
(using the <code*|--interactive> option. If several initialisation
directives are present, only the last one is taken into account.
<subsubsection*|Animation>
\;
With <samp|eukleides>, the <code*|--animate> option allows to generate
PostScript files containing several pages which may be converted into
animated GIFs (using ImageMagik's <samp|convert> for instance). The
parameter for this option consists in a single letter followed by an
integer number (without space), with the same meaning as for initialisation
directives.
Example: <code*|eukleides --animate=A20 figure.euk>
The former command yields a 20 pages PostScript file, each step
corresponding to a stroke on the up arrow key.
<section|Usage>
<subsection|Invocation>
\;
Command-line invocation for <samp|eukleides>, <samp|euktopst>, or
<samp|euktoeps> is:
<code| \ \ \ \ <var|program> { <var|option> ... } <var|file_name>>
The name of the generated output is formed of the base name of the input
file and the <code*|.eps> or <code*|.ps> suffix for <samp|eukleides>, the
<code*|.pst> suffix for <samp|euktopst>, or the <code*|.eps> suffix for
<samp|euktopst>. The base name is the file name deprived of the
<code*|.euk> suffix. If the <code*|.euk> suffix is not present, the base
name is the file name itself.
<subsubsection*|Common options>
<\description>
<item*|<code*|-l, --locale{=><var|lang><code*|}>>Use keywords localized
in language <var|lang>. With no argument given, the current locale is set
to the value of the LANG environment variable. This feature may be
disabled.
<item*|<code*|-<with|font-family|tt|#>,
--interactive=><var|string>>Modify interactive variables.
<item*|<code*|-v, --version>>Print version number and exit.
<item*|<code*|-h, --help>>Print a short help and exit.
</description>
<subsubsection*|Options specific to <samp|eukleides> and <samp|euktopst>>
<\description>
<item*|<code*|-o, --output{=><var|output_file><code*|}>>Set an output
file name. With no argument given, the output stream is set to standard
output.
<item*|<code*|-b, --batchmode{=><var|data_file><code*|}>>Don't stop for
input. If given, use <var|data_file> instead of standard input.
</description>
<subsubsection*|Option specific to <samp|eukleides>>
<description|<item*|<code*|-a, --animate=><var|string>>Animate interactive
script.>
<subsubsection*|Options specific to <samp|euktoeps>>
<\description>
<item*|<code*|-i, --include=><var|string>>Include LaTeX directives in
preamble.
<item*|<code*|-d, --data=><var|data_file>>Use specific data.
</description>
<subsection|TeX>
\;
The <samp|eukleides> package that comes with the Eukleides distribution
provides a convenient way to include geometric figures in LaTeX documents.
Eukleides figures must be enclosed in <samp|eukleides> environments. When
first running <samp|latex> or <samp|pdflatex>, the enclosed codes are saved
to individual files, named after the TeX source. For instance,
<var|mydoc.tex> would yield <var|mydoc-fig1.pst>, <var|mydoc-fig2.pst>,
etc.
When using <samp|latex>, the figure files should then be transformed in TeX
files with the <samp|euktotex> script (which takes the TeX source name as
argument), and <samp|latex> run again. It should be noted that the PSTricks
package is automatically loaded if necessary.
When using <samp|pdflatex>, due to incompatibilities with PSTricks, the
figure files should be transformed in PDF pictures with the <samp|euktopdf>
script (which likewise takes the TeX source name as argument), and
<samp|pdflatex> run again. If specific packages are required to typeset the
figures, the corresponding <samp|\\usepackage> directives have to be
enclosed in a <samp|packages> environment in the preamble. This has no
effect when using <samp|latex>.
<subsection|Localized Keywords>
\;
Localized versions of the keywords are available (currently German and
French). The <code*|--locale> option allows to specify the desired locale.
With no argument given, the current locale is set to the value of the LANG
environment variable. Otherwise the argument has to be a valid locale
identifier, e.g. <code*|fr_FR> or <code*|fr_FR.utf8>, depending on the
default charmap. This feature may be disabled at build time.
Conversion tables for each language are provided with the Eukleides
distribution.
<\the-index|idx>
<index+1|abscissa|<pageref|auto-18>\U<pageref|auto-31>>
<index+1|angle|<pageref|auto-39>>
<index+1|arg|<pageref|auto-37>>
<index+1|barycenter|<pageref|auto-21>>
<index+1|box|<pageref|auto-79>>
<index+1|distance|<pageref|auto-20>>
<index+1|frame|<pageref|auto-80>>
<index+1|item|<pageref|auto-33>>
<index+1|length|<pageref|auto-35>>
<index+1|ordinate|<pageref|auto-19>>
<index+1|point|<pageref|auto-16>>
<index+1|scale|<pageref|auto-77>>
<index+1|sqrt|<pageref|auto-8>>
<index+1|vector|<pageref|auto-26>>
</the-index>
\;
</body>
<\initial>
<\collection>
<associate|page-medium|paper>
</collection>
</initial>
<\references>
<\collection>
<associate|auto-1|<tuple|?|7>>
<associate|auto-10|<tuple|1.3|9>>
<associate|auto-100|<tuple|5.6|26>>
<associate|auto-101|<tuple|5.6|26>>
<associate|auto-102|<tuple|<with|font-family|<quote|tt>|mobile
><with|font-family|<quote|tt>|font-shape|<quote|italic>|var><with|font-family|<quote|tt>|
( { ><with|font-family|<quote|tt>|font-shape|<quote|italic>|state><with|font-family|<quote|tt>|,
} x, y, x', y' { , z } ) = ><with|font-family|<quote|tt>|font-shape|<quote|italic>|point>|27>>
<associate|auto-103|<tuple|<with|font-family|<quote|tt>|vertical
><with|font-family|<quote|tt>|font-shape|<quote|italic>|variable><with|font-family|<quote|tt>|
(><with|font-family|<quote|tt>|font-shape|<quote|italic>|state><with|font-family|<quote|tt>|
{ , x, y } { , z }) = t>|27>>
<associate|auto-104|<tuple|<with|font-family|<quote|tt>|vertical
><with|font-family|<quote|tt>|font-shape|<quote|italic>|variable><with|font-family|<quote|tt>|
(><with|font-family|<quote|tt>|font-shape|<quote|italic>|state><with|font-family|<quote|tt>|
{ , x, y } { , z }) = t>|27>>
<associate|auto-105|<tuple|6|27>>
<associate|auto-106|<tuple|6.1|27>>
<associate|auto-107|<tuple|6.1|28>>
<associate|auto-108|<tuple|<with|font-family|<quote|tt>|-h, --help>|28>>
<associate|auto-109|<tuple|<with|font-family|<quote|tt>|-b,
--batchmode{=><with|font-family|<quote|tt>|font-shape|<quote|italic>|data_file><with|font-family|<quote|tt>|}>|28>>
<associate|auto-11|<tuple|1.3|9>>
<associate|auto-110|<tuple|<with|font-family|<quote|tt>|-a,
--animate=><with|font-family|<quote|tt>|font-shape|<quote|italic>|string>|28>>
<associate|auto-111|<tuple|6.2|28>>
<associate|auto-112|<tuple|6.3|28>>
<associate|auto-113|<tuple|6.3|29>>
<associate|auto-12|<tuple|<with|font-family|<quote|tt>|%%>|9>>
<associate|auto-13|<tuple|2|9>>
<associate|auto-14|<tuple|2.1|9>>
<associate|auto-15|<tuple|2.1|9>>
<associate|auto-16|<tuple|point|9>>
<associate|auto-17|<tuple|point|9>>
<associate|auto-18|<tuple|abscissa|9>>
<associate|auto-19|<tuple|ordinate|9>>
<associate|auto-2|<tuple|1|7>>
<associate|auto-20|<tuple|distance|9>>
<associate|auto-21|<tuple|barycenter|9>>
<associate|auto-22|<tuple|2.2|10>>
<associate|auto-23|<tuple|2.2|10>>
<associate|auto-24|<tuple|<with|font-family|<quote|tt>|u * v>|10>>
<associate|auto-26|<tuple|vector|10>>
<associate|auto-28|<tuple|vector|10>>
<associate|auto-3|<tuple|1.1|7>>
<associate|auto-30|<tuple|vector|10>>
<associate|auto-31|<tuple|abscissa|10>>
<associate|auto-33|<tuple|item|10>>
<associate|auto-35|<tuple|length|10>>
<associate|auto-37|<tuple|arg|10>>
<associate|auto-39|<tuple|angle|11>>
<associate|auto-4|<tuple|1.2|8>>
<associate|auto-40|<tuple|2.3|11>>
<associate|auto-41|<tuple|2.3|11>>
<associate|auto-42|<tuple|<with|font-family|<quote|tt>|s[i]>|11>>
<associate|auto-43|<tuple|<with|font-family|<quote|tt>|hexagon(O, r,
a)>|11>>
<associate|auto-44|<tuple|<with|font-family|<quote|tt>|empty>|11>>
<associate|auto-45|<tuple|2.4|12>>
<associate|auto-46|<tuple|2.4|12>>
<associate|auto-47|<tuple|2.5|12>>
<associate|auto-48|<tuple|2.5|12>>
<associate|auto-49|<tuple|2.5|12>>
<associate|auto-5|<tuple|1.2|8>>
<associate|auto-50|<tuple|2.6|12>>
<associate|auto-51|<tuple|2.6|13>>
<associate|auto-52|<tuple|3|13>>
<associate|auto-53|<tuple|3.1|13>>
<associate|auto-54|<tuple|3.1|13>>
<associate|auto-55|<tuple|<with|font-family|<quote|tt>|homothecy(o, A,
x)>|14>>
<associate|auto-56|<tuple|3.2|14>>
<associate|auto-57|<tuple|3.2|14>>
<associate|auto-58|<tuple|3.3|14>>
<associate|auto-59|<tuple|3.3|15>>
<associate|auto-6|<tuple|<with|font-family|<quote|tt>|x mod y>|8>>
<associate|auto-60|<tuple|<with|font-family|<quote|tt>|triangle { x, } z,
v { , a }>|15>>
<associate|auto-61|<tuple|<with|font-family|<quote|tt>|right { x, } u { ,
a }>|15>>
<associate|auto-62|<tuple|<with|font-family|<quote|tt>|isosceles { x, } u
{ , a }>|15>>
<associate|auto-63|<tuple|<with|font-family|<quote|tt>|equilateral { x {
, a } }>|15>>
<associate|auto-64|<tuple|3.4|16>>
<associate|auto-65|<tuple|3.4|16>>
<associate|auto-66|<tuple|<with|font-family|<quote|tt>|square { x { , b }
}>|16>>
<associate|auto-67|<tuple|<with|font-family|<quote|tt>|square>|17>>
<associate|auto-68|<tuple|3.5|17>>
<associate|auto-69|<tuple|3.5|17>>
<associate|auto-70|<tuple|4|18>>
<associate|auto-71|<tuple|4.1|18>>
<associate|auto-72|<tuple|4.1|19>>
<associate|auto-73|<tuple|<with|font-shape|<quote|italic>|Font>|20>>
<associate|auto-74|<tuple|<with|font-shape|<quote|italic>|Font>|20>>
<associate|auto-75|<tuple|<with|font-family|<quote|tt>|draw l s a
><with|font-family|<quote|tt>|font-shape|<quote|italic>|list>|21>>
<associate|auto-77|<tuple|scale|21>>
<associate|auto-79|<tuple|box|21>>
<associate|auto-8|<tuple|sqrt|8>>
<associate|auto-80|<tuple|frame|21>>
<associate|auto-81|<tuple|4.2|21>>
<associate|auto-82|<tuple|4.2|22>>
<associate|auto-83|<tuple|<with|font-shape|<quote|italic>|Font>|22>>
<associate|auto-84|<tuple|5|23>>
<associate|auto-85|<tuple|5.1|23>>
<associate|auto-86|<tuple|5.1|23>>
<associate|auto-87|<tuple|<with|font-family|<quote|tt>|close>|23>>
<associate|auto-88|<tuple|<with|font-family|<quote|tt>|string(s)>|23>>
<associate|auto-89|<tuple|5.2|23>>
<associate|auto-9|<tuple|<with|font-family|<quote|tt>|clamp(x, y, z)>|9>>
<associate|auto-90|<tuple|5.2|24>>
<associate|auto-91|<tuple|<with|font-family|<quote|tt>|a or b>|24>>
<associate|auto-92|<tuple|<with|font-family|<quote|tt>|false>|24>>
<associate|auto-93|<tuple|<with|font-family|<quote|tt>|x \<gtr\>= y>|24>>
<associate|auto-94|<tuple|<with|font-family|<quote|tt>|empty(s)>|24>>
<associate|auto-95|<tuple|<with|font-family|<quote|tt>|square(A, B, C,
D)>|25>>
<associate|auto-96|<tuple|<with|font-family|<quote|tt>|display>|25>>
<associate|auto-97|<tuple|5.3|25>>
<associate|auto-98|<tuple|5.4|26>>
<associate|auto-99|<tuple|5.5|26>>
<associate|index-abs-27|<tuple|<with|font-family|<quote|tt>|x mod y>|8>>
<associate|index-abscissa-92|<tuple|2.4|12>>
<associate|index-acos-23|<tuple|<with|font-family|<quote|tt>|x mod y>|8>>
<associate|index-altitude-139|<tuple|<with|font-family|<quote|tt>|equilateral
{ x { , a } }>|15>>
<associate|index-and-242|<tuple|5.2|24>>
<associate|index-angle-136|<tuple|<with|font-family|<quote|tt>|equilateral
{ x { , a } }>|15>>
<associate|index-append-230|<tuple|<with|font-family|<quote|tt>|string(s)>|23>>
<associate|index-area-100|<tuple|2.5|12>>
<associate|index-area-67|<tuple|<with|font-family|<quote|tt>|s[i]>|11>>
<associate|index-arg-101|<tuple|2.5|12>>
<associate|index-arg-115|<tuple|2.6|13>>
<associate|index-arg-68|<tuple|<with|font-family|<quote|tt>|s[i]>|11>>
<associate|index-arg-90|<tuple|2.4|12>>
<associate|index-arrow-186|<tuple|4.1|19>>
<associate|index-arrows-187|<tuple|4.1|19>>
<associate|index-asin-22|<tuple|<with|font-family|<quote|tt>|x mod y>|8>>
<associate|index-atan-24|<tuple|<with|font-family|<quote|tt>|x mod y>|8>>
<associate|index-back-184|<tuple|4.1|19>>
<associate|index-bisector-140|<tuple|<with|font-family|<quote|tt>|equilateral
{ x { , a } }>|15>>
<associate|index-bisector-71|<tuple|<with|font-family|<quote|tt>|s[i]>|11>>
<associate|index-bisector-88|<tuple|2.4|12>>
<associate|index-black-162|<tuple|4.1|19>>
<associate|index-blue-169|<tuple|4.1|19>>
<associate|index-box-175|<tuple|4.1|19>>
<associate|index-card-64|<tuple|<with|font-family|<quote|tt>|s[i]>|11>>
<associate|index-cat-42|<tuple|<with|font-family|<quote|tt>|%%>|9>>
<associate|index-ceil-29|<tuple|<with|font-family|<quote|tt>|x mod y>|8>>
<associate|index-center-103|<tuple|2.5|12>>
<associate|index-center-117|<tuple|2.6|13>>
<associate|index-centroid-73|<tuple|<with|font-family|<quote|tt>|s[i]>|11>>
<associate|index-circle-142|<tuple|<with|font-family|<quote|tt>|equilateral
{ x { , a } }>|15>>
<associate|index-circle-97|<tuple|2.5|12>>
<associate|index-circle-related-functions-96|<tuple|2.5|12>>
<associate|index-circles-95|<tuple|2.5|12>>
<associate|index-clamp-34|<tuple|<with|font-family|<quote|tt>|x mod
y>|8>>
<associate|index-clear-8|<tuple|1.1|8>>
<associate|index-color-154|<tuple|4.1|19>>
<associate|index-commands-4|<tuple|1.1|7>>
<associate|index-comments-5|<tuple|1.1|7>>
<associate|index-conic-111|<tuple|2.6|13>>
<associate|index-conic-related-functions-107|<tuple|2.6|13>>
<associate|index-constant-numbers-12|<tuple|1.2|8>>
<associate|index-cos-20|<tuple|<with|font-family|<quote|tt>|x mod y>|8>>
<associate|index-cross-177|<tuple|4.1|19>>
<associate|index-cyan-170|<tuple|4.1|19>>
<associate|index-darkgray-163|<tuple|4.1|19>>
<associate|index-dashed-179|<tuple|4.1|19>>
<associate|index-deg-25|<tuple|<with|font-family|<quote|tt>|x mod y>|8>>
<associate|index-direction-159|<tuple|4.1|19>>
<associate|index-directives-2|<tuple|1.1|7>>
<associate|index-disc-174|<tuple|4.1|19>>
<associate|index-display-263|<tuple|<with|font-family|<quote|tt>|square(A,
B, C, D)>|25>>
<associate|index-distance-89|<tuple|2.4|12>>
<associate|index-dot-173|<tuple|4.1|19>>
<associate|index-dotted-180|<tuple|4.1|19>>
<associate|index-eccentricity-114|<tuple|2.6|13>>
<associate|index-element-74|<tuple|<with|font-family|<quote|tt>|s[i]>|11>>
<associate|index-ellipse-108|<tuple|2.6|13>>
<associate|index-empty-247|<tuple|<with|font-family|<quote|tt>|x \<gtr\>=
y>|24>>
<associate|index-empty-81|<tuple|<with|font-family|<quote|tt>|hexagon(O,
r, a)>|11>>
<associate|index-empty-set-80|<tuple|<with|font-family|<quote|tt>|hexagon(O,
r, a)>|11>>
<associate|index-endings-160|<tuple|4.1|19>>
<associate|index-entire-181|<tuple|4.1|19>>
<associate|index-eps-261|<tuple|<with|font-family|<quote|tt>|square(A, B,
C, D)>|25>>
<associate|index-equilateral-135|<tuple|<with|font-family|<quote|tt>|isosceles
{ x, } u { , a }>|15>>
<associate|index-error-233|<tuple|<with|font-family|<quote|tt>|string(s)>|23>>
<associate|index-exp-17|<tuple|<with|font-family|<quote|tt>|x mod y>|8>>
<associate|index-false-245|<tuple|<with|font-family|<quote|tt>|a or
b>|24>>
<associate|index-file-output-228|<tuple|<with|font-family|<quote|tt>|string(s)>|23>>
<associate|index-floor-30|<tuple|<with|font-family|<quote|tt>|x mod
y>|8>>
<associate|index-foci-118|<tuple|2.6|13>>
<associate|index-font-161|<tuple|4.1|19>>
<associate|index-font-188|<tuple|4.1|19>>
<associate|index-forth-183|<tuple|4.1|19>>
<associate|index-full-178|<tuple|4.1|19>>
<associate|index-generic-transformations-121|<tuple|3.1|13>>
<associate|index-gray-164|<tuple|4.1|19>>
<associate|index-green-168|<tuple|4.1|19>>
<associate|index-half-182|<tuple|4.1|19>>
<associate|index-height-137|<tuple|<with|font-family|<quote|tt>|equilateral
{ x { , a } }>|15>>
<associate|index-hexagon-79|<tuple|<with|font-family|<quote|tt>|s[i]>|11>>
<associate|index-homothecy-126|<tuple|3.1|13>>
<associate|index-horizontal-276|<tuple|<with|font-family|<quote|tt>|mobile
><with|font-family|<quote|tt>|font-shape|<quote|italic>|var><with|font-family|<quote|tt>|
( { ><with|font-family|<quote|tt>|font-shape|<quote|italic>|state><with|font-family|<quote|tt>|,
} x, y, x', y' { , z } ) = ><with|font-family|<quote|tt>|font-shape|<quote|italic>|point>|27>>
<associate|index-hyperbola-109|<tuple|2.6|13>>
<associate|index-identifiers-6|<tuple|1.1|7>>
<associate|index-in-246|<tuple|<with|font-family|<quote|tt>|x \<gtr\>=
y>|24>>
<associate|index-incircle-143|<tuple|<with|font-family|<quote|tt>|equilateral
{ x { , a } }>|15>>
<associate|index-input-functions-223|<tuple|<with|font-family|<quote|tt>|close>|23>>
<associate|index-integers-11|<tuple|1.2|8>>
<associate|index-intersection-130|<tuple|3.2|14>>
<associate|index-isobarycenter-72|<tuple|<with|font-family|<quote|tt>|s[i]>|11>>
<associate|index-isosceles-134|<tuple|<with|font-family|<quote|tt>|right
{ x, } u { , a }>|15>>
<associate|index-length-40|<tuple|<with|font-family|<quote|tt>|%%>|9>>
<associate|index-length-65|<tuple|<with|font-family|<quote|tt>|s[i]>|11>>
<associate|index-lightgray-165|<tuple|4.1|19>>
<associate|index-line-104|<tuple|2.5|12>>
<associate|index-line-119|<tuple|2.6|13>>
<associate|index-line-85|<tuple|2.4|12>>
<associate|index-line-style-157|<tuple|4.1|19>>
<associate|index-ln-18|<tuple|<with|font-family|<quote|tt>|x mod y>|8>>
<associate|index-local-271|<tuple|5.4|26>>
<associate|index-magenta-171|<tuple|4.1|19>>
<associate|index-major-112|<tuple|2.6|13>>
<associate|index-max-33|<tuple|<with|font-family|<quote|tt>|x mod y>|8>>
<associate|index-median-141|<tuple|<with|font-family|<quote|tt>|equilateral
{ x { , a } }>|15>>
<associate|index-midpoint-70|<tuple|<with|font-family|<quote|tt>|s[i]>|11>>
<associate|index-min-32|<tuple|<with|font-family|<quote|tt>|x mod y>|8>>
<associate|index-minor-113|<tuple|2.6|13>>
<associate|index-mod-14|<tuple|1.2|8>>
<associate|index-none-185|<tuple|4.1|19>>
<associate|index-not-241|<tuple|5.2|24>>
<associate|index-number-224|<tuple|<with|font-family|<quote|tt>|close>|23>>
<associate|index-numeric-functions-15|<tuple|<with|font-family|<quote|tt>|x
mod y>|8>>
<associate|index-numeric-operators-13|<tuple|1.2|8>>
<associate|index-or-243|<tuple|5.2|24>>
<associate|index-ordinate-93|<tuple|2.4|12>>
<associate|index-orthocenter-138|<tuple|<with|font-family|<quote|tt>|equilateral
{ x { , a } }>|15>>
<associate|index-output-234|<tuple|<with|font-family|<quote|tt>|string(s)>|23>>
<associate|index-output-commands-226|<tuple|<with|font-family|<quote|tt>|string(s)>|23>>
<associate|index-parabola-110|<tuple|2.6|13>>
<associate|index-parallel-86|<tuple|2.4|12>>
<associate|index-parallelogram-145|<tuple|3.4|16>>
<associate|index-partition-158|<tuple|4.1|19>>
<associate|index-pentagon-78|<tuple|<with|font-family|<quote|tt>|s[i]>|11>>
<associate|index-perimeter-66|<tuple|<with|font-family|<quote|tt>|s[i]>|11>>
<associate|index-perimeter-99|<tuple|2.5|12>>
<associate|index-perpendicular-87|<tuple|2.4|12>>
<associate|index-pi-35|<tuple|<with|font-family|<quote|tt>|clamp(x, y,
z)>|9>>
<associate|index-pi-36|<tuple|<with|font-family|<quote|tt>|clamp(x, y,
z)>|9>>
<associate|index-plus-176|<tuple|4.1|19>>
<associate|index-point-102|<tuple|2.5|12>>
<associate|index-point-116|<tuple|2.6|13>>
<associate|index-point-69|<tuple|<with|font-family|<quote|tt>|s[i]>|11>>
<associate|index-point-91|<tuple|2.4|12>>
<associate|index-point-shape-156|<tuple|4.1|19>>
<associate|index-polygon-77|<tuple|<with|font-family|<quote|tt>|s[i]>|11>>
<associate|index-print-232|<tuple|<with|font-family|<quote|tt>|string(s)>|23>>
<associate|index-printable-objects-227|<tuple|<with|font-family|<quote|tt>|string(s)>|23>>
<associate|index-projection-128|<tuple|<with|font-family|<quote|tt>|homothecy(o,
A, x)>|14>>
<associate|index-projections-127|<tuple|<with|font-family|<quote|tt>|homothecy(o,
A, x)>|14>>
<associate|index-pstricks-262|<tuple|<with|font-family|<quote|tt>|square(A,
B, C, D)>|25>>
<associate|index-rad-26|<tuple|<with|font-family|<quote|tt>|x mod y>|8>>
<associate|index-radius-98|<tuple|2.5|12>>
<associate|index-rectangle-146|<tuple|3.4|16>>
<associate|index-red-167|<tuple|4.1|19>>
<associate|index-reflection-123|<tuple|3.1|13>>
<associate|index-release-231|<tuple|<with|font-family|<quote|tt>|string(s)>|23>>
<associate|index-return-270|<tuple|5.4|26>>
<associate|index-right-133|<tuple|<with|font-family|<quote|tt>|triangle {
x, } z, v { , a }>|15>>
<associate|index-rotation-125|<tuple|3.1|13>>
<associate|index-round-31|<tuple|<with|font-family|<quote|tt>|x mod
y>|8>>
<associate|index-scale-factor-155|<tuple|4.1|19>>
<associate|index-segments-60|<tuple|2.3|11>>
<associate|index-set-63|<tuple|<with|font-family|<quote|tt>|s[i]>|11>>
<associate|index-set-operators-61|<tuple|2.3|11>>
<associate|index-set-related-assignments-82|<tuple|<with|font-family|<quote|tt>|empty>|11>>
<associate|index-set-related-functions-62|<tuple|<with|font-family|<quote|tt>|s[i]>|11>>
<associate|index-sign-28|<tuple|<with|font-family|<quote|tt>|x mod y>|8>>
<associate|index-sin-19|<tuple|<with|font-family|<quote|tt>|x mod y>|8>>
<associate|index-special-characters-38|<tuple|1.3|9>>
<associate|index-sqrt-16|<tuple|<with|font-family|<quote|tt>|x mod y>|8>>
<associate|index-square-147|<tuple|3.4|16>>
<associate|index-statements-3|<tuple|1.1|7>>
<associate|index-stop-240|<tuple|5.2|24>>
<associate|index-string-225|<tuple|<with|font-family|<quote|tt>|close>|23>>
<associate|index-string-related-functions-39|<tuple|<with|font-family|<quote|tt>|%%>|9>>
<associate|index-sub-41|<tuple|<with|font-family|<quote|tt>|%%>|9>>
<associate|index-sub-76|<tuple|<with|font-family|<quote|tt>|s[i]>|11>>
<associate|index-symmetric-124|<tuple|3.1|13>>
<associate|index-tan-21|<tuple|<with|font-family|<quote|tt>|x mod y>|8>>
<associate|index-translation-122|<tuple|3.1|13>>
<associate|index-triangle-132|<tuple|3.3|15>>
<associate|index-true-244|<tuple|<with|font-family|<quote|tt>|a or
b>|24>>
<associate|index-variables-7|<tuple|1.1|8>>
<associate|index-vector-75|<tuple|<with|font-family|<quote|tt>|s[i]>|11>>
<associate|index-vector-94|<tuple|2.4|12>>
<associate|index-vertical-277|<tuple|<with|font-family|<quote|tt>|mobile
><with|font-family|<quote|tt>|font-shape|<quote|italic>|var><with|font-family|<quote|tt>|
( { ><with|font-family|<quote|tt>|font-shape|<quote|italic>|state><with|font-family|<quote|tt>|,
} x, y, x', y' { , z } ) = ><with|font-family|<quote|tt>|font-shape|<quote|italic>|point>|27>>
<associate|index-white-166|<tuple|4.1|19>>
<associate|index-write-229|<tuple|<with|font-family|<quote|tt>|string(s)>|23>>
<associate|index-yellow-172|<tuple|4.1|19>>
<associate|line-related-functions|<tuple|2.4|12>>
</collection>
</references>
<\auxiliary>
<\collection>
<\associate|idx>
<tuple|<tuple|sqrt>|<pageref|auto-8>>
<tuple|<tuple|point>|<pageref|auto-16>>
<tuple|<tuple|point>|<pageref|auto-17>>
<tuple|<tuple|abscissa>|<pageref|auto-18>>
<tuple|<tuple|ordinate>|<pageref|auto-19>>
<tuple|<tuple|distance>|<pageref|auto-20>>
<tuple|<tuple|barycenter>|<pageref|auto-21>>
<tuple|<tuple|vector>|<pageref|auto-26>>
<tuple|<tuple|vector>|<pageref|auto-28>>
<tuple|<tuple|vector>|<pageref|auto-30>>
<tuple|<tuple|abscissa>|<pageref|auto-31>>
<tuple|<tuple|item>|<pageref|auto-33>>
<tuple|<tuple|length>|<pageref|auto-35>>
<tuple|<tuple|arg>|<pageref|auto-37>>
<tuple|<tuple|angle>|<pageref|auto-39>>
<tuple|<tuple|scale>|<pageref|auto-77>>
<tuple|<tuple|box>|<pageref|auto-79>>
<tuple|<tuple|frame>|<pageref|auto-80>>
</associate>
<\associate|toc>
Introduction <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-1>
1<space|2spc>Basics <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-2>
<with|par-left|<quote|1tab>|1.1<space|2spc>General Syntax
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-3>>
<with|par-left|<quote|1tab>|1.2<space|2spc>Numbers
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-4>>
<with|par-left|<quote|2tab>|Numeric operators
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-5>>
<with|par-left|<quote|2tab>|Numeric functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-6>>
<with|par-left|<quote|2tab>|Numeric constant
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-9>>
<with|par-left|<quote|1tab>|1.3<space|2spc>Strings
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-10>>
<with|par-left|<quote|2tab>|Special characters
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-11>>
<with|par-left|<quote|2tab>|String related functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-12>>
2<space|2spc>Objects <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-13>
<with|par-left|<quote|1tab>|2.1<space|2spc>Points
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-14>>
<with|par-left|<quote|2tab>|Point related functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-15>>
<with|par-left|<quote|1tab>|2.2<space|2spc>Vectors
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-22>>
<with|par-left|<quote|2tab>|Vector operators
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-23>>
<with|par-left|<quote|2tab>|Vector related functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-24>>
<with|par-left|<quote|1tab>|2.3<space|2spc>Sets
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-40>>
<with|par-left|<quote|2tab>|Set operators
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-41>>
<with|par-left|<quote|2tab>|Set related functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-42>>
<with|par-left|<quote|2tab>|Set constant
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-43>>
<with|par-left|<quote|2tab>|Set related assignments
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-44>>
<with|par-left|<quote|1tab>|2.4<space|2spc>Lines
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-45>>
<with|par-left|<quote|2tab>|Line related functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-46>>
<with|par-left|<quote|1tab>|2.5<space|2spc>Circles
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-47>>
<with|par-left|<quote|1tab>|2.5 Circles
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-48>>
<with|par-left|<quote|2tab>|Circle related functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-49>>
<with|par-left|<quote|1tab>|2.6<space|2spc>Conics
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-50>>
<with|par-left|<quote|2tab>|Conic related functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-51>>
3<space|2spc>Geometry <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-52>
<with|par-left|<quote|1tab>|3.1<space|2spc>Transformations
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-53>>
<with|par-left|<quote|2tab>|Generic transformations
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-54>>
<with|par-left|<quote|2tab>|Projections
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-55>>
<with|par-left|<quote|1tab>|3.2<space|2spc>Intersections
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-56>>
<with|par-left|<quote|2tab>|Intersection functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-57>>
<with|par-left|<quote|1tab>|3.3<space|2spc>Triangles
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-58>>
<with|par-left|<quote|2tab>|Generic triangles
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-59>>
<with|par-left|<quote|2tab>|Right triangles
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-60>>
<with|par-left|<quote|2tab>|Isosceles triangles
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-61>>
<with|par-left|<quote|2tab>|Equilateral triangles
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-62>>
<with|par-left|<quote|2tab>|Triangle related functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-63>>
<with|par-left|<quote|1tab>|3.4<space|2spc>Quadrilaterals
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-64>>
<with|par-left|<quote|2tab>|Generic quadrilateral assignments
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-65>>
<with|par-left|<quote|2tab>|Default quadrilateral assignments
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-66>>
<with|par-left|<quote|2tab>|Vector based quadrilateral assignment
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-67>>
<with|par-left|<quote|1tab>|3.5<space|2spc>Locus Assignments
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-68>>
<with|par-left|<quote|2tab>|Examples
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-69>>
4<space|2spc>Drawing <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-70>
<with|par-left|<quote|1tab>|4.1<space|2spc>Drawing Commands
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-71>>
<with|par-left|<quote|2tab>|Aspect parameters
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-72>>
<with|par-left|<quote|2tab>|Font description
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-73>>
<with|par-left|<quote|2tab>|Single drawing statements
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-74>>
<with|par-left|<quote|2tab>|Output setting commands
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-75>>
<with|par-left|<quote|1tab>|4.2<space|2spc>Label Commands
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-81>>
<with|par-left|<quote|2tab>|Label parameters
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-82>>
<with|par-left|<quote|2tab>|Single label statements
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-83>>
5<space|2spc>Programming <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-84>
<with|par-left|<quote|1tab>|5.1<space|2spc>Input and Output
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-85>>
<with|par-left|<quote|2tab>|Input commands
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-86>>
<with|par-left|<quote|2tab>|Input functions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-87>>
<with|par-left|<quote|2tab>|Output commands
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-88>>
<with|par-left|<quote|1tab>|5.2<space|2spc>Conditional Statements
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-89>>
<with|par-left|<quote|2tab>|Boolean operators
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-90>>
<with|par-left|<quote|2tab>|Boolean constants
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-91>>
<with|par-left|<quote|2tab>|Comparison operators
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-92>>
<with|par-left|<quote|2tab>|Set assertions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-93>>
<with|par-left|<quote|2tab>|Geometric assertions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-94>>
<with|par-left|<quote|2tab>|Output format flags
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-95>>
<with|par-left|<quote|2tab>|Ternary operator
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-96>>
<with|par-left|<quote|1tab>|5.3<space|2spc>Iterative Statements
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-97>>
<with|par-left|<quote|1tab>|5.4<space|2spc>Function Definitions
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-98>>
<with|par-left|<quote|1tab>|5.5<space|2spc>Modules
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-99>>
<with|par-left|<quote|1tab>|5.6<space|2spc>Interactive Variables
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-100>>
<with|par-left|<quote|2tab>|Mobile points
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-101>>
<with|par-left|<quote|2tab>|Interactive numeric variables
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-102>>
<with|par-left|<quote|2tab>|Initialisation directives
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-103>>
<with|par-left|<quote|2tab>|Animation
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-104>>
6<space|2spc>Usage <datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-105>
<with|par-left|<quote|1tab>|6.1<space|2spc>Invocation
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-106>>
<with|par-left|<quote|2tab>|Common options
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-107>>
<with|par-left|<quote|2tab>|Options specific to
<with|font-family|<quote|ss>|eukleides> and
<with|font-family|<quote|ss>|euktopst>
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-108>>
<with|par-left|<quote|2tab>|Option specific to
<with|font-family|<quote|ss>|eukleides>
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-109>>
<with|par-left|<quote|2tab>|Options specific to
<with|font-family|<quote|ss>|euktoeps>
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-110>>
<with|par-left|<quote|1tab>|6.2<space|2spc>TeX
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-111>>
<with|par-left|<quote|1tab>|6.3<space|2spc>Localized Keywords
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-112>>
<vspace*|1fn><with|font-series|<quote|bold>|math-font-series|<quote|bold>|Index>
<datoms|<macro|x|<repeat|<arg|x>|<with|font-series|medium|<with|font-size|1|<space|0.2fn>.<space|0.2fn>>>>>|<htab|5mm>>
<no-break><pageref|auto-113><vspace|0.5fn>
</associate>
</collection>
</auxiliary>
1
https://gitee.com/XmacsLabs/interactive-eukleides.git
git@gitee.com:XmacsLabs/interactive-eukleides.git
XmacsLabs
interactive-eukleides
interactive-eukleides
main

搜索帮助