José Carlos Ramalho
Pode fazer download do programa FLEX aqui: ppp.fl.
PPP - Composição e Instalação
PPP - Invocação
PPP - Ptext PreProcessor
- Comandos latex/html
- Exemplos
- Acentos e Cedilhas
- Cabeçalhos e Preâmbulos de um Documento
- Texto Formatado
- Texto não formatado
- Listas
- Items
- Descritivas
- Numeradas
- Macros pré-definidas
- Comentários
- Links
- Grafismos (só em HTML)
- Tabelas (de momento só para HTML)
Como é sabido por quem tenha já praticado a escrita de textos
em latex e html, não é fácil, por exemplo, a acentuação e a
cedilhação.
Apesar dos muitos conversores existentes no mercado, a conversão de textos latex para html
e vice-versa não é tão fácil como às vezes seria de desejar.
Actualmente muitos utilizadores latex tentam disponibilizar na Internet
através do serviço WWW os seus documentos e lutam com o processo de
conversão de modo a tornar a versão final html o mais próxima possível
da versão latex e, não menos importante, o mais eficiente possível
para o utilizador final (a eficiência traduz-se em tempos de espera de carregamento
de páginas o que está relacionado com a sua organização e natureza).
Neste contexto surgiu a ideia de criar uma linguagem um pouco mais
abstracta que o latex ou o html, que não é nem pretende ser um
substituto de nenhum dos dois mas sim uma plataforma intermédia entre os
dois a partir da qual seja fácil e trivial converter em latex ou html.
A linguagem proposta neste documento não cobre nem de perto as
facilidades e potencialidades quer do latex quer do html, cobre apenas um
subconjunto que se pensou ser o utilizado em cerca de 75% dos documentos
(foi criado um mecanismo que permite a introdução de texto na linguagem
destino: latex ou html).
Em resumo os objectivos deste preprocessador são facilitar:
- a conversão entre latex e html
- a introdução de acentos e cedilhas
- a introdução de capítulos, secções, etc.
- o mecanismo de descrição por listas de items
- o mecanismo de descrição por listas enumeradas
- o mecanismo de descrição por listas descritivas
- a introdução de comentários no texto
- grafismos (só em HTML)
- links (só em HTML)
- Tabelas
- formatação de caracteres
- geração de índices
- modos protegidos
- e outras coisas que vão surgindo no dia-a-dia...
A versão actual do PPP está desenvolvida em flex, estando prevista uma futura versão em Perl.
A ferramenta é assim constituída pelos ficheiros:
- ppp.fl
- código fonte da ferramenta.
- makefile
- a makefile que cria o executável na plataforma corrente (tem que ter o flex instalado).
Para instalar a ferramenta basta copiar os 2 ficheiros para a directoria apropriada e mandar executar a makefile. Isso fará com que um executável de nome ppp seja criado nessa directoria.
Inicialmente o PPP permitia várias opções de invocação, mas à medida que foi evoluindo, algumas dessas opções incompatibilizaram-se com alguns dos procedimentos da ferramenta, de modo que a invocação aconselhada será:
- para gerar LaTeX
- ppp -l fich.pre fich.tex
- para gerar HTML
- ppp -h fich.pre fich.html
Nas secções seguintes descreve-se de maneira sucinta o funcionamento e
as facilidades inseridas na ferramenta criada.
Como já foi referido o utilizador pode em qualquer altura introduzir
comandos nativos em latex/html (ao fazê-lo não está a tirar partido
da ferramenta, mas para as facilidades não cobertas pelo PPP é a
única solução).
Devido à característica multi-língua da ferramenta os comandos
escritos numa das linguagens nativas têm que ser protegidos, e só
aparecerão no documento da linguagem a que pertencem. Por exemplo, se
num documento quisermos introduzir texto latex puro, podemos fazê-lo em
modo protegido latex mas, esse texto só aparecerá na conversão do
texto para latex.
Como temos duas linguagens alvo possíveis temos dois modos protegidos:
- latex
- \latex ... texto latex ... \endlatex .
- html
- \html ... texto html ... \endhtml .
- latex
-
\latex
\maketitle
\endlatex
- html
-
\html
<IMG ALIGN=TOP SRC="exemplo.gif">
\endhtml
Este foi um dos aspectos que mais motivou a presente ferramenta.
A sintaxe definida é a seguinte:
- 'a = á
- `a = à
- ^e = ê
- ~O = Õ
- ,c = ç
Título e Autor do Documento:
- =titulo=[texto]
- =autor=[texto]
Pano de Fundo (só em HTML):
Aqui o [imagem] refere o "pathname" da imagem fundo (normalmente um GIF pequeno), que irá ser colocada como "BACKGROUND" da página HTML gerada.
Índices:
Os índices são gerados no ponto do documento onde este comando aparece e contendo informação desse ponto em diante. É assim possivel, ter indices que abrangem apenas parte do documento. Neste momento, só é possivel criar um índice por documento.
Secções e Subsecções:
- =título de secção
- ==título de subsecção
- ===título de subsubsecção
- ====t'tulo de subsecção de nível 4
- =====título de subsecção de nível 5
Os "=" devem aparecer no início das linhas
respectivas dando origem automáticamente à numeração. Deste modo,
os títulos não devem incluir outra numeração.
Por exemplo:
- == 2.5. A utilidade do boi
daria origem a duas numerações
- 3.2 2.5 A utilidade do boi
Qualquer pedaço de texto pode ser formatado em itálico bold ou simplesmente realçado.
A seguir apresentam-se exemplos de cada um dos casos:
- itálico
- coloca-se no texto o seguinte comando envolvente "\bf{texto}".
- bold
- coloca-se no texto o seguinte comando envolvente "\it{texto}".
- realçado
- coloca-se no texto o seguinte comando envolvente "\emph{texto}".
Uma das necessidade de um formatador de texto é, em certas
partes, não formatar, copiando simplesmente para a saída o texto
entrado sem quaisquer modificações.
Isso pode ser realizado envolvendo
o texto a "proteger" entre os comandos "\noprep" e "\prep"
ou "\begin{verbatim\}" "\end{verbatim\}", se o texto fôr composto por várias linhas, mas se o texto que a gente quer proteger da acção do PPP fôr uma parte de uma linha pode-se e deve-se usar a macro "\sic" (ver à frente em macros).
Em termos de protecção o par "\noprep" e "prep" é o mais poderoso pois vai converter todos os caracteres em código ASCII puro (o melhor ainda é experimentar e ver o código gerado).
Neste momento, o PPP suporta três tipos de listas, que podem ser misturados e aninhados consoante a vontade do utilizador: listas de items, descritivas e numeradas.
Utilizaremos uma descrição por items para descrever este
comando:
- Iniciado por ":" no final de uma linha.
- Cada Item começado por "." como primeiro caracter não branco da
linha e seguido por um caracter diferente de "[" ou digito.
- Terminada por um caracter #.
Utilizaremos uma lista descritiva para descrever este
comando:
- (a)
- Iniciado por ":" no final de uma linha.
- (b)
- Cada Item começado por "." como primeiro caracter não branco da
linha e seguido por uma palavra ou mais palavras entre "[" "]".
- (c)
- Terminada por um caracter #.
Utilizaremos uma lista numerada para descrever este
comando:
- Iniciado por ":" no final de uma linha.
- Cada Item começado por "." como primeiro caracter não branco da
linha e seguido por um digito.
- Terminada por um caracter #.
Lista das macros definidas:
- \sic{...} = não modifica o argumento
- \cao = ção
- \coes = ções
- 1\.a = 1ª
- 2\.o = 2º
- \ENDINGS = coloca um rodapé no documento semelhante ao que se pode encontrar no fim deste; só deve ser usada no fim do documento.
É frequentemente util introduzir notas de comentários no texto
de modo que não apareçam no texto final. Estes comentários podem ser
introduzidos entre "%" na primeira coluna e .
Neste momento, só são pré-processados os links "normais", isto é, aqueles compostos por um URL e o texto que lhe fica associado:
- Sintaxe
- \link{URL,texto}.
- Exemplo
- \link{http://www.di.uminho.pt/~jcr,este 'e um link para a minha p'agina}, que dá: este é um link para a minha página.
- Imagens
- \image{path para a imagem}
- Linha Horizontal
- \linha - coloca uma linha horizontal a preto; este comando deve aparecer no início da linha.
Sintaxe:
Comando |
Descrição
|
\table |
inicia uma tabela com 1 linha e com "border".
|
\tablen |
inicia uma tabela com 1 linha e sem "border".
|
## |
termina a linha corrente e inicia uma nova linha.
|
#x#texto |
Cria uma nova coluna com cabeçalho texto. O parâmetro x pode tomar os seguintes valores:
l (encosta à esquerda), r (encosta à direita), c (centra).
|
&x&texto |
Preenche a coluna corrente da linha corrente com o texto.
|
\endtable |
Termina a tabela.
|
- generated by PPP in
Fri Mar 9 18:57:12 WET 2001