T X Makroer Andreas Kirkeskov Carlsen Macro-seminar, 10. maj 2005 E.

Slides:



Advertisements
Lignende præsentationer
Kvantitative metoder 2 Dummyvariabler 28. marts 2007 KM2: F16.
Advertisements

Sikkerhed i Skyen og andre steder - At regne uden at kigge Ivan Damgård, Institut for Datalogi, Aarhus Universitet.
Kan en Internet tilkoblet bruger sende en til andre Internet tilkoblede brugere uafhængig af hvilket operativsystem modtageren har? •Ja •Nej.
Test First Development
CFIN Århus Universitetshospital Århus Sygehus Aarhus Universitet.
Dansk med it © Duncker & Ruus DIT-systemet Dansk med it Generel præsentation for studerende Dorthe Duncker og Hanne Ruus Institut for Nordiske Studier.
Nu er vi ved DEL 3 Flere tegn og signaler et tegn (fx et symbol) kan godt bruges som et signal: fx kan dannebrog signalere at at vi nu er i Danmark og.
Kvantitative metoder. Indsamlingsflow 4-ugers projekt 03 Web-popup på på dagligvarekoncerns hjemmeside som led i større Usability test Spurgte om: –køn,
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel , , 28
Dansk med it Duncker & Ruus © DIT-systemet Generel introduktion DIT-systemet Udvikling og testning Dorthe Duncker og Hanne Ruus Institut for.
Fortællinger fra kanten
Chefen ser fortvivlet på sit ur, og opdager at hans underordnede ikke er kommet til tiden, til at holde et meget vigtigt foredrag. På en konference, som.
Denne serie (nr. 1 af 3) indeholder lange stræk af forskellige typer: -Langstræk -Vejvalgsstræk -Grovorienteringsstræk -Transportstræk Jeg har ikke taget.
Specialeskrivning og arbejdsprocesser
Præsentation af Aalborg Universitet 1 af 31 Social kapital og sociale netværk som mulig ressource i forebyggelsesindsatsen. Lars Skov Henriksen Institut.
Organisering og navigation John Paulin Hansen September 04 Usability.
Implementering af brandingstrategi på nettet
Introduktion til Fagsprogslingvistikken II
Velkommen til Projekt Frivillig Infomøde og workshop d. 23. maj 2013 Maj 2013 | Projekt Frivillig | Foreninger i Aarhus Kommune.
SkoleIntra og integration med kommunale platforme - digital Signatur
FEN Diskret matematik/Seminar 3 - proofs 1 Beviser Et bevis er en argumentation, som overbeviser om, at en påstand er sand, påstanden kaldes.
Ændr 2. linje i overskriften til AU Passata Light 3. SEPTEMBER 2014 MARIE KJÆRGAARD AARHUS UNIVERSITET AU WORKSHOP ATU, SEP
1 Bevisteknikker. 2 Bevisteknikker (relevant både ved design og verifikation) Teorem: Der findes uendeligt mange primtal Bevis: Antag at der findes et.
Forskningsenheden for Almen Praksis Århus Universitet Forskningsklinikken for Funktionelle Lidelser Århus Universitetshospital Sundhedssystemet.
GP 10, 7/ Grundlæggende programmering Efterår 2001 Forelæsning 10 onsdag 7/ kl. 9:15 – 12:00.
FEN Rekursion og induktion1 Induktion og (især) rekursion Mange begreber defineres ud fra en basis og så en gentagen anvendelse af et antal regler.
Statistik II 5. Lektion Log-lineære modeller.
25. september 2007 Dias 1 Center for Sprogteknologi Evalueringsmetoder i MT Bente Maegaard og Lene Offersgaard Center for Sprogteknologi.
The KaosPilots August Arne Kleven og & friends Opgaven Introduktion til analysen Praktisk gennemførsel - personlig tilbagemelding.
Integration af undervisning om kliniske retningslinjer i professionsbacheloruddannelsen - ideer og tanker Lea D. Nielsen, Cand. Cur, Adjunkt, UC Syddanmark,
Hallo... Jeg ville bare se om du var tilstede... I just wanted to see if you were there...
Opfølgning på obligatorisk opgave 1 ONK1. Ingeniørhøjskolen i Århus Slide 2 af 14 Overordnet Generelt rigtigt fine opgaver –Mange fyldt med gode overvejelser.
Opsamling Loops Klassedesign Immutable Lister shallowCopy() Projekt 2 FEN KbP/seminar3: Opsamling.
IT i Byggeriet Semester 6, kursusgang Databaser (2) Kjeld Svidt Kjeld Svidt  Institut for Bygningsteknik  Aalborg Universitet.
Introduktion til. Eksempler på anvendelse Jeg skal bruge avisartikler på fransk til min gymnasieopgave Jeg vil gerne se avisen fra mit hjemland Libanon.
Design, verifikation og analyse
Biomasse Fra Affald til Olie.
Program Kort introduktion til workshoppen 1. time Generel introduktion til DEF og deff.dk - den samlede on-line indgang til Danmarks Elektroniske Forskningsbibliotek.
Mobil Usability , ITU. Spørgsmål jeg gerne vil høre: ”Det gik lidt hurtigt, kan du ikke gentage?” ”Kan du ikke snakke lidt langsommere?” ”Skruer.
FEN KbP/seminar2: design21 Kontraktbaseret programmering Seminar 2 Klassedesign: Immutable lister Queue Shallowcopy og alkvantoren.
Organisering og navigation John Paulin Hansen September 04 Usability.
AFSLUTTENDE RAPPORT Afleveres senest mandag den 11. maj kl til Ida.
Afleveres senest mandag den 3. maj, kl til Mikael via mail.
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel , , 28
Økonometri 1: Inferens i den lineære regressionsmodel1 Økonometri 1 Kvalitative variable 8. marts 2006.
Identitet vs lighed. Spørgsmål Hvad udskriver run metoden? 1.”Ens!” 2.”Forskellige!” 3.Ved ikke public class Driver{ public static void run(){ String.
Organisering og navigation John Paulin Hansen Februar 05 Usability.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.1 Fletning.
(let ((title ’(Scheme Macros)) title) Syntaktiske transformationer og en masse parenteser.
Fremtiden er for vigtig - til at overlade til mændene Karen Falkenberg Lund Alexandra Instituttet.
 Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.1 Destilleret UML Oversættelse fra UML til Java.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge46 Ancestor.
23. juni 2015 Det Semantiske Web Mads Carlsen. 23. juni 2015 Problemer med det nuværende Internet Ingen semantiske specifikationer. Søgning giver mange.
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet.
Dylan makroer / JSE Andreas Kirkeskov Carlsen 27. april 2005.
DAIMIIntroducerende objektorienteret programmeringfletning.1 Fletning.
DAIMI, AUIntroducerende objektorienteret programmering11A.1 Destilleret UML Oversættelse fra UML til Java.
Videregående pc-vejledning
Tekniske hjælpemidler Bekendtgørelse Anvendelse af tekniske hjælpemidler § 1. Bekendtgørelsen omfatter: anvendelsen af tekniske hjælpemidler ved.
AARHUS UNIVERSITET BUSINESS AND SOCIAL SCIENCES 4. DECEMBER 2013 FØLGEFORSKNING 4. DECEMBER 2013 FØLGEFORSKNING Forsøgsprogram om modersmålsbaseret undervisning.
Nordisk database for Ph.d.-kurser Kontakt Arcanic for assistance på eller
Adam Tulinius | | 2010
Kapitel 8 Vareregnskabet Vareforbrug.
FARMAKOLOGI Hånden på hjertet KAPITEL 11: MEDICINERINGSPROCESSEN.
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1
Parameterfremstilling og punktmængde
Geometriske Steder Introduktion Beskrivelse af aktiviteten
Præsentationens transcript:

T X Makroer Andreas Kirkeskov Carlsen Macro-seminar, 10. maj 2005 E

TeX er et leksikalt makrosystem Alle makroer starter med tegnet ”\” TeX indeholder desuden TeX-kommandoer Kan ses som TeX-makroer med sideeffekter T X Makroer E Test \bye Test TeX

Mange implementationer eksisterer: Til Unix-kompatible systemer: teTeX Til Windows: MiKTeX, PCTeX, TrueTeX, … Til Macintosh: OzTeX, XeTeX, … T X Makroer E

Nye makroer kan introduceres med ”\def” T X Makroer E \def\AUDat{ \begin{flushleft} Aarhus Universitet \hspace{\fill} \today \\ \textbf{Datalogisk Institut} \\ IT-parken \\ \AA{}bogade \\ 8200 \AA{}rhus N \\ \end{flushleft}} Definition:Brug: \AUDat Aarhus Universitet 10. maj 2005 Datalogisk Institut IT-parken Åbogade 8200 Århus N Resultat:

Nye makroer kan introduceres med ”\def” T X Makroer E \def\AUDat{ \begin{flushleft} Aarhus Universitet \hspace{\fill} \today \\ \textbf{Datalogisk Institut} \\ IT-parken \\ \AA{}bogade \\ 8200 \AA{}rhus N \\ \end{flushleft}} Definition:Brug: \AUDat Aarhus Universitet 10. maj 2005 Datalogisk Institut IT-parken Åbogade 8200 Århus N Resultat:

Nye makroer kan introduceres med ”\def” T X Makroer E \def\AUDat{ \begin{flushleft} Aarhus Universitet \hspace{\fill} \today \\ \textbf{Datalogisk Institut} \\ IT-parken \\ \AA{}bogade \\ 8200 \AA{}rhus N \\ \end{flushleft}} Definition:Brug: \AUDat Aarhus Universitet 10. maj 2005 Datalogisk Institut IT-parken Åbogade 8200 Århus N Resultat:

Argumenter til makroer er angivet med #1 til #9 T X Makroer E \def\myindent#1#2{ \hangindent=0.3in \hangafter=-1 \noindent \textbf{#1} #2 \smallskip} Definition:Brug: \myindent{I kapitel 1} {besk\ae{}ftiger vi os med... \\ og … \\ og desuden …} I kapitel 1 beskæftiger vi os med… og … og desuden … Resultat:

Argumenter til makroer er angivet med #1 til #9 T X Makroer E \def\myindent#1#2{ \hangindent=0.3in \hangafter=-1 \noindent \textbf{#1} #2 \smallskip} Definition:Brug: \myindent{I kapitel 1} {besk\ae{}ftiger vi os med... \\ og … \\ og desuden …} I kapitel 1 beskæftiger vi os med… og … og desuden … Resultat:

Argumenter til makroer er angivet med #1 til #9 T X Makroer E \def\myindent#1#2{ \hangindent=0.3in \hangafter=-1 \noindent \textbf{#1} #2 \smallskip} Definition:Brug: \myindent{I kapitel 1} {besk\ae{}ftiger vi os med... \\ og … \\ og desuden …} I kapitel 1 beskæftiger vi os med… og … og desuden … Resultat:

Argumenter kan adskilles af tokens: T X Makroer E \def\myindent#1#2by#3{ \hangindent=#3in \hangafter=-1 \noindent \textbf{#1} #2 \smallskip} Definition:Brug: \myindent{I kapitel 1} {besk\ae{}ftiger vi os med... \\ og … \\ og desuden …} by {0.1} I kapitel 1 beskæftiger vi os med… og … og desuden … Resultat:

Argumenter kan adskilles af tokens: T X Makroer E \def\myindent#1#2by#3{ \hangindent=#3in \hangafter=-1 \noindent \textbf{#1} #2 \smallskip} Definition:Brug: \myindent{I kapitel 1} {besk\ae{}ftiger vi os med... \\ og … \\ og desuden …} by {0.1} I kapitel 1 beskæftiger vi os med… og … og desuden … Resultat:

Argumenter kan adskilles af tokens: T X Makroer E \def\myindent#1#2by#3{ \hangindent=#3in \hangafter=-1 \noindent \textbf{#1} #2 \smallskip} Definition:Brug: \myindent{I kapitel 1} {besk\ae{}ftiger vi os med... \\ og … \\ og desuden …} by {0.1} I kapitel 1 beskæftiger vi os med… og … og desuden … Resultat:

Både direkte og indirekte rekursion er muligt: T X Makroer E \newcount \plusses \def\AddPlussesLoop#1{ \ifnum \plusses=0 #1 \else \advance \plusses by -1 \AddPlussesLoop{#1}+ \fi} \def\AddPlusses#1#2{ \plusses=#2 \AddPlussesLoop {#1}} Definition:Brug: \AddPlusses{C}{2} C + + Resultat:

Både direkte og indirekte rekursion er muligt: T X Makroer E \newcount \plusses \def\AddPlussesLoop#1{ \ifnum \plusses=0 #1 \else \advance \plusses by -1 \AddPlussesLoop{#1}+ \fi} \def\AddPlusses#1#2{ \plusses=#2 \AddPlussesLoop {#1}} Definition:Brug: \AddPlusses{C}{2} C + + Resultat:

Både direkte og indirekte rekursion er muligt: T X Makroer E \newcount \plusses \def\AddPlussesLoop#1{ \ifnum \plusses=0 #1 \else \advance \plusses by -1 \AddPlussesLoop{#1}+ \fi} \def\AddPlusses#1#2{ \plusses=#2 \AddPlussesLoop {#1}} Definition:Brug: \AddPlusses{C}{2} C + + Resultat:

Er TeX makroer sproguafhængige? Implementeres (så vidt jeg ved) altid som integreret del af ”oversættelsen” til dvi-fil (eller lignende) Er i deres opbygning ikke sprogafhængige - ”naiv” leksikalsk ekspansion Svaret afhænger af definitionen af sprogafhængighed – makroerne udgør sproget T X Makroer E

Ekspansionsorden: Outer T X Makroer E \def\type{\immediate\write16{}} \def\mymessage#1{\type\message{#1}} \def\Id#1{\mymessage{ID} #1} \def\One#1{\mymessage{ONE} \Id{#1}} \def\Two{\mymessage{TWO} {a}{b}} Definition:Brug: \One\Two ONE ID TWO Resultat: ”Makro-beskeder”: ab

Ekspansionsorden: Outer T X Makroer E \def\type{\immediate\write16{}} \def\mymessage#1{\type\message{#1}} \def\Id#1{\mymessage{ID} #1} \def\One#1{\mymessage{ONE} \Id{#1}} \def\Two{\mymessage{TWO} {a}{b}} Definition:Brug: \One\Two ONE ID TWO Resultat: ”Makro-beskeder”: ab

Ekspansionsorden: Outer T X Makroer E \def\type{\immediate\write16{}} \def\mymessage#1{\type\message{#1}} \def\Id#1{\mymessage{ID} #1} \def\One#1{\mymessage{ONE} \Id{#1}} \def\Two{\mymessage{TWO} {a}{b}} Definition:Brug: \One\Two ONE ID TWO Resultat: ”Makro-beskeder”: ab

Bodyexpansion: Lazy T X Makroer E \def\LazyCall#1#2{#2} Definition:Brug: \LazyCall {\CallOfNonExistingMacro} {Hallo} Resultat: Hallo

Bodyexpansion: Lazy T X Makroer E \def\LazyCall#1#2{#2} Definition:Brug: \LazyCall {\CallOfNonExistingMacro} {Hallo} Resultat: Hallo

Bodyexpansion: Lazy T X Makroer E \def\LazyCall#1#2{#2} Definition:Brug: \LazyCall {\CallOfNonExistingMacro} {Hallo} Resultat: Hallo

Parsing ambiguities: shortest Multiple definitioner: nej – gendefinerer makroen T X Makroer E \def\Test#1 by #2{#1 -$>$ #2} \Test 1 by 2\\ \def\Test#1{#1} \Test 1 by 2\\ \def\Test#1 by #2{#1 -$>$ #2} \Test 1 by 2\\ \Test 1 by by 2 Definition og brug: Resultat: 1 -> 2 1 by 2 1 -> 2 1 -> by 2

Parsing ambiguities: shortest Multiple definitioner: nej – gendefinerer makroen T X Makroer E \def\Test#1 by #2{#1 -$>$ #2} \Test 1 by 2\\ \def\Test#1{#1} \Test 1 by 2\\ \def\Test#1 by #2{#1 -$>$ #2} \Test 1 by 2\\ \Test 1 by by 2 Definition og brug: Resultat: 1 -> 2 1 by 2 1 -> 2 1 -> by 2

Makroer som resultat: Ja? T X Makroer E \def\OnlyAppearOnce {\def\OnlyAppearOnce{} Introduktion…} Definition:Brug: \OnlyAppearOnce Introduktion… Resultat:

Makroer som resultat: Ja? T X Makroer E \def\OnlyAppearOnce {\def\OnlyAppearOnce{} Introduktion…} Definition:Brug: \OnlyAppearOnce Introduktion… Resultat:

Makroer som resultat: Ja? T X Makroer E \def\OnlyAppearOnce {\def\OnlyAppearOnce{} Introduktion…} Definition:Brug: \OnlyAppearOnce Introduktion… Resultat:

Garanteret terminering: nej T X Makroer E \def\loop {\loop} Definition:Brug: \loop Resultat: Ved det ikke – venter stadig…

Garanteret terminering: nej T X Makroer E \def\loop {\loop} Definition:Brug: \loop Resultat: Ved det ikke – venter stadig…

Garanteret terminering: nej T X Makroer E \def\loop {\loop} Definition:Brug: \loop Resultat: Ved det ikke – venter stadig…

Programmerbare: Ja De er turingkomplette (rekursion+conditionals) Svært at skelne mellem om TeX-kommandoer udføres på makroekspansionstid eller efter T X Makroer E