4.12.1 Exemplos
Aqui você observa algumas das "infinitas" aplicações de macros nos seus documentos.
Tags DMHelp múltiplos
<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>
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
<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).
Consulte 4.12.1 Exemplos (que é esta própria página).
Simulação de Tags HTML
<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>.
Note a aplicação de tags DMHelp
parecidos com tags HTML.
Simulação do Tag HTML ul (Unordered List)
<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>
-> 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
<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>
Célula 11 | Célula 12 | Célula 21 | Célula 22 |
|
Palavras comuns
<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>.
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
<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}>
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.