En komputado, **makroo** estas resuma termino por **makrokomando**, **makroklavo** kaj **makrodifino**.

Makrodifino
-----------

En programlingvo aŭ en dialoga tekstoredaktilo, **makrodifino** estas rimedo per kiu la programisto aŭ uzanto povas atribui, respektive, al nomo aŭ al klavokombino ian *anstataŭan tekston*. Tia anstataŭa teksto povas havi paramerorojn; ĝiaj pecoj eventuale povas esti ritetataj aŭ preterlastaj depende je iuj kondiĉaj esprimoj.

Makrokomando
------------

**Makrokomado** estas apliko de makrodifino. Ĝi konsistas el la nomo de makroo, kaj, eventuale, la faktaj parametroj. Programo prilaboranta la makroojn, la **makrotraktilo**, anstataŭigas la makrokomandon per teksto de la makroodifino, transformita konforme al la faktaj parametroj (kaj eventuale, atentante nelokajn makrovariablojn kaj aliajn makroojn).

Makrotraktiloj
--------------

Vastekonata makrotraktilo estas CPP, la antaŭtraktilo de la programlingvo C.
Pli povuma estas m4, makrotraktilo disponebla en Uniksoj.

Ekzemplo Teĥa
-------------

Tre povuman makrotraktilon entenas la prespretiga sistemo Teĥo (TeX). Nun la ĉapelitaj literoj de Esperanto disponeblas elskatole en ĉiu deca tiparo, sed en la 20ª jarcento ili estis netruveblaj. Teĥo ebligis komponi la ĉapelitajn literojn, kaj oni uzis nelongan makroon por oporuna enigo (kaj bonkvalita prezento tipografia).

Elskatole Teĥo disponigas komandojn por formi diakritaĵojn; ekz-e \^c surmetas la ĉapelon sur c;  \u u surmetas la bovlon ˘ sur u ktp; tiel ke oni povus komposti la testan frazon eĥoŝanĝo ĉiuĵaŭde kiel

```
e\^ho\^san\^go \^ciu\^\ja\u ude
```

Tio tamen aspektas aĉe, kaj per makroo eblas difini tajpmanieron same legeblan, kiel la iksisma (anstataŭ postmeti ikson oni, tute simetrie, antaŭmetas ĉapelon):

```
e^ho^san^go ^ciu^ja^ude
```

Ĉi-sube estas teksto de tiu makrodifino (ĝi estis uzita en prespretigo de la papera versio de la «Komputika Leksikono»). Estkiel la nomo de makroo servos la Askia signo ^, kiun do necesos *akvivigi*, t.e. fari komanda simbolo; la signo % apartigas la komentojn; la deklivo \  estas eskapilo apartiganta la helpsimbolojn; #1 estas la nomo de la 1-a formala parametro (la 2-a estus #2 ktp; sed ĉi-okaze la makroo havas nur 1 parametron).

```
\catcode`\^=\active % -- aktivigu la ĉapelon ^;

\def^#1{% --------- makrodifino kun unu sola parametro #1;
   \leavevmode % -- alineo povas komenciĝi per "^";
   \ifmmode    % -- ebligu uzon en la matematikaj esprimoj;
       \ifx#1u\breve u\else
       \ifx#1U\breve U\else
       \hat{\ifx#1j\jmath\else#1\fi}\fi\fi
   \else
       \ifx#1u\v u\else \ifx#1U\u U\else
       \ifx#1h{\rlap{\,\^ }h}% -- ĥ havu la ĉapelon surgenue;
       \else \^{\ifx#1j\j\else#1\fi}% -- "\j" estas ȷ, la senpunkta j
       \fi\fi\fi
   \fi}

```

Kun ĉi tiu difino la testa frazo

```
e^ho^san^go ^ciu^ja^ude
```

entenas 6 makrokomandojn (^h ^s ^g ^c ^j ^u); kelkaj el ili post la makromalvolvo ricevos relative simplan formon, ekz‑e ^c iĝos \^c; aliflanke, ^u ricevos specialan supersigon (la bovlon), kaj iĝos \u u; inverse, en ^j okazos ŝanĝo de la baza litero; kaj ^h per netriviala artifiko ricevos la ĉapelon «sur la genuon», kio ŝparos la interlinian intervalon.

Notoj
-----

1. ↑  Komputada Leksikono, NPIV.