4.12.1 Exemplos

Aqui você observa algumas das "infinitas" aplicações de macros nos seus documentos.

Tags DMHelp múltiplos

Exemplo:

<md    MyTable={<tb btw=.b bbw=.b blw=.b brw=.b>}>
<md    /MyTable={</tb>}>
<md    MyCell={<tc bgc=.MyColor><p sa=0 lm=0 rm=0 ha=C><f bgc=.MyColor>.MyColor<><>}>
<MyTable b=1>
<tr>
<MyCell MyColor=FFFF00>
<MyCell MyColor=0000FF>
<MyCell MyColor=FF0000>
</MyTable>

_

Resultado:

FFFF00

0000FF

FF0000

_

Note que que a macro MyTable aplica o argumento b em todas as bordas externas da Tabela.

Observe, também, que a macro MyCell define uma célula, um parágrafo e um fonte e aplica MyColor na côr de fundo da célula e do fonte e, além disso, também aplica o argumento no conteúdo da célula, resultando na tabela apresentada acima.

Você pode fazer macros que, de uma só vez, inclua um arquivo, crie uma página, etc., apenas configurando-a adequadamente.

Simplificando os Links de Páginas

Exemplo:

<md
    linkto = {<lk pn=.page><fi k=LPC><fi K=AP APR={ (vide página }></lk><fi K=AP APR={)}>}
>
Consulte <linkto page=pn_MacExemplos> (que é esta própria página).

_

Resultado:

Consulte 4.12.1 Exemplos (que é esta própria página).

_

Simulação de Tags HTML

Exemplo:

<md
   b       = {<f b=1>}
   /b      = {<>}
   i       = {<f i=1>}
   /i      = {<>}
   u       = {<f u=1>}
   /u      = {<>}
   br      = {<fi k=LB>}
   break   = {<fi k=PB>}
>
Note a <b>aplicação</b> de
<i><u>tags DMHelp</u></i><br>parecidos
com <i><u>tags HTML</u></b>.

_

Resultado:

Note a aplicação de tags DMHelp
parecidos com tags HTML.

_

Simulação do Tag HTML ul (Unordered List)

Exemplo:

<md
    ul  = {<f>}
    li  = {<><p lm=3cm flm=-18pt sa=0><f f={Courier New}> -\\> <>}
    /ul = {<>}
>
<ul>
    <li>Esta é a linha 1.
    <li>Esta é a linha 2.
        Esta linha 2 tem um parágrafo mais longo
        para mostrar como ele fica bem alinhado
        nas "quebras de linha".
        Foram necessárias várias palavras, como
        estas que você está lendo, para que
        pudesse ser demonstrado o efeito desse
        alinhamento.
    <li>Esta é a linha 3.
</ul>

_

Resultado:

-> Esta é a linha 1.

-> Esta é a linha 2. Esta linha 2 tem um parágrafo mais longo para mostrar como ele fica bem alinhado nas "quebras de linha". Foram necessárias várias palavras, como estas que você está lendo, para que pudesse ser demonstrado o efeito desse alinhamento.

-> Esta é a linha 3.

_

Note que interessante a declaração <f> na macro ul que não faz nada mas serve para "sincronizar" a aplicação dos tags de parágrafos na macro li que precisa começar com <> para permitir múltiplas linhas e, por fim, a macro /ul "fecha" (ou "desempilha") o último parágrafo.

Outro fato importante a ser notado neste exemplo, é que, na macro li foi utilizado -\\>. Essas duas barras são aqui necessárias pois na macro substituição, -\\> será "convertido" em -\> e na interpretação do resultado da macro substituição -\> resultará em -> que é o realmente desejado neste exemplo.

Tabelas

Exemplo:

<md
    mytable      = {<p lm=.Margin rm=.Margin><tb><p ha=C lm=0 rm=0 sa=0><f>}
    myrow        = {<tr>}
    mycell       = {<><tc bgc=.Color><f i=1 bgc=.Color>}
    /mytable     = {<></tb><><>}
>
<mytable Margin=5cm>
<myrow><mycell Color=FFFF00>Célula 11<mycell Color=FFFF00>Célula 12
<myrow><mycell Color=8080FF>Célula 21<mycell Color=8080FF>Célula 22
</mytable>

_

Resultado:

Célula 11

Célula 12

Célula 21

Célula 22

_

Palavras comuns

Exemplo:

<md
    company   =   {XPNet Comunicações Ltda.}
    project   =   {andre.garcia@xpnet.com.br}
>
Esta linguagem e este programa foram desenvolvidos por <company>, pelo líder
de projeto <project>, para fazer doações para <company> envie um e-mail
para <project>.

_

Resultado:

Esta linguagem e este programa foram desenvolvidos por XPNet Comunicações Ltda., pelo líder de projeto andre.garcia@xpnet.com.br, para fazer doações para XPNet Comunicações Ltda. envie um e-mail para andre.garcia@xpnet.com.br.

_

Note como todas as palavras, ou frases, mais importantes do seu documento podem ser definidas em um local e aplicadas em vários outros locais.

Template de Orçamento

Exemplo:

<md
    orçamento      = {<p ha=C><fi k=DT DTFM={São Paulo %dd de %mmmm de %yyyy.}><>

    Para : <f b=1>.CompanyTo<><fi k=LB>
    A/C : <f b=1>.PersonTo<><fi k=LB>

    Segue orçamento solicitado:

    <p lm=3cm rm=3cm>
    <tb>
    <p sa=0 lm=0 rm=0>
    <tr>
    <tc bgc=C0C0C0><p ha=C><f bgc=C0C0C0>Qtde.<><>
    <tc bgc=C0C0C0 wu=3><p ha=L><f bgc=C0C0C0>Item<><>
    <tc bgc=C0C0C0><p ha=C><f bgc=C0C0C0>Unidade<><>
    <tc bgc=C0C0C0><p ha=R><f bgc=C0C0C0>Valor<><>
    }
    item_orçamento = {<tr>
    <tc><p ha=C>.Qtde<>
    <tc wu=3><p ha=L>.Item<>
    <tc><p ha=C>.Unit<>
    <tc><p ha=R>.Value<>}
    /orçamento = {<tr>
    <tc bgc=C0C0C0><p ha=C><f bgc=C0C0C0><><>
    <tc bgc=C0C0C0 wu=3><p ha=L><f bgc=C0C0C0><><>
    <tc bgc=C0C0C0><p ha=C><f bgc=C0C0C0><><>
    <tc bgc=FFFF00><p ha=R><f bgc=FFFF00>.Total<><>
    </tb><><>

    Condições de pagamento:

    Validade da proposta, falar com, fone para contacto, blá, blá, blá}
>

<orçamento CompanyTo={Empresa XYZ Ltda.} PersonTo={Sr. Joaquim Antônio}>
<item_orçamento Qtde=20 Item={Produto X} Unit={R$} Value={100,32}>
<item_orçamento Qtde=10 Item={Produto Z} Unit={R$} Value={15,00}>
</orçamento Total={2156,40}>

_

Resultado:

São Paulo 08 de Outubro de 2007.

Para : Empresa XYZ Ltda.
A/C : Sr. Joaquim Antônio

Segue orçamento solicitado:

Qtde.

Item

Unidade

Valor

20

Produto X

R$

100,32

10

Produto Z

R$

15,00

   

2156,40

Condições de pagamento:

Validade da proposta, falar com, fone para contacto, blá, blá, blá

_

Observe, neste exemplo, que a contrução da macro foi "meio chatinha" mas sua aplicação foi "banal" (apenas 4 linhas).

Você pode, na realidade criar macros de tabelas (ou células de tabelas), como a exemplificada anteriormente, para definir os tipos de células mais comuns e simplificar a construção das próprias macros.

Use sua imaginação

Você pode criar, realmente, uma infinidade de macros para:

- Definir Templates (como o exemplificado no orçamento acima) para vários tipos de documentos como: Cartas de Cobrança, Convites, Tipos de documentos específicos como Erratas, etc.

- Mudança de sintaxe. Se você não gostou da sintaxe de um determinado comando da linguagem DMHelp, defina a sua sintaxe. Por exemplo, se você não gosta de <f f=Arial> e prefere <font face=Arial>, defina <md font={<f f=.face>}> e utilize do jeito que você gosta.