# %!txt2tags faq

### Última atualização: 08.11.2004 versão online

# 1. Informações Gerais

Voltar para o topo

## 1.1. O que é txt2tags?

O txt2tags é um gerador de documentos. Ele recebe um arquivo de texto com marcações mínimas como **negrito** e //itálico//, e gera documentos nos seguintes formatos:

- Documento HTML
- Documento XHTML
- Documento SGML
- Documento LaTeX
- Página de manual UNIX (manpage)
- Página do MoinMoin
- Apresentação do Magic Point (mgp)
- Documento do PageMaker 6.0

Voltar para o topo

## 1.2. Onde obter o txt2tags?

O txt2tags pode ser encontrado em (http://txt2tags.sourceforge.net/pt/v2.html) nos seguintes formatos:

- TGZ
- RPM
- SLACKWARE
- EXE
- IPK

Voltar para o topo

## 1.3. Onde posso encontrar suporte do txt2tags?

Assine a lista de discursão (http://br.groups.yahoo.com/group/txt2tags-br/). Lá estão os maiores especialistas em txt2tags do país sempre dispostos para esclarecer suas dúvidas.

Voltar para o topo

## 1.4. Encontrei um BUG no txt2tags o que eu faço?

Mande um email para a lista (http://br.groups.yahoo.com/group/txt2tags-br/) reportando o problema. Informe o que você fez e o que você obteve.

Se o problema for referente a apresentação em HTML ou XHTML, informe qual o browser que está sendo utilizado, sua versão e sobre qual sistema operacional está sendo executado.

Voltar para o topo

## 1.5. Onde encontro os manuais de txt2tags?

Junto com a instalação do txt2tags e no site do txt2tags [http://txt2tags.sourceforge.net/pt/]. São 5 documentos:

Conhecendo o txt2tags
  Uma breve apresentação do txt2tags.

Características
  Outra breve apresentação.

Página de Manual
  A página manual do txt2tags.

REGRAS
  A especificação de txt2tags, são as regras sintáticas da linguagem.

Guia do Usuário
  Manual completo descrevendo todas as funcionalidades, características, opções de linha de comando, configuração, etc.

# 2. HTML

Voltar para o topo

## 2.1. Como criar tags <BR>, <DIV>?

Usando `%!postproc`.

    %!postproc(html): '{(.*)}' '<\1>'

    """<ESPACO>{div class="blah"}

    ... blah ...  ... blah ...  ... blah ...  ... blah ...  ... blah ... {br}
    ... blah ...  ... blah ...  ... blah ...  ... blah ...  ... blah ... {br}
    ... blah ...  ... blah ...  ... blah ...  ... blah ...  ... blah ... {br}
    ... blah ...

    """<ESPACO>{/div}

Voltar para o topo

## 2.2. Como colocar quebras de linha nas células de uma tabela?

O parse para a construção das tabelas é feito linha a linha, logo para colocar uma quebra linha em determinada célula vai ter que usar uma regra `%!postproc` para criar um `<BR>`.

    %!postproc(html): '{(.*)}' '<\1>'

    || blah | bleh | blih | bloh | bluh
     | b    | c    | d    | e    | f
     | b    | c    | d    | e    | f
     | b    | c    | linha muito longa ... {br} muito longa ... {br} ... muito longa mesmo ... | e    | f
     | b    | c    | d    | e    | f

Note que essa dica é muito boa para HTML mas em Latex ela faz um estrago enorme.

Voltar para o topo

## 2.3. Como colocar uma figura em um link centralizada na página?

Quando a figura possui um link não é possível centraliza-la. Isso é um conhecido BUG que por enquanto está sem solução. A solução em forma de xunxo é colocar dentro de uma tabela centralizada e sem borda:

         | [[imagem.png] http://www.abc.com]

Voltar para o topo

## 2.4. Como centralizar um texto qualquer na pagina?

Use uma citação (`BLOCKQUOTE`) e centralize na folha de estilos.

Voltar para o topo

## 2.5. Como especificar âncoras?

Isso só é possível na versão 2.0, e para isso basta declarar a âncora entre colchetes após algum título.

    == Minha seção==[Blah]

e para referenciar:

    [seção blah #Blah]

Voltar para o topo

## 2.6. Existe FOOTER?

Não, mas pode se obter um usando o `%!include` no final do documento.

    %!include: rodape.t2t

Voltar para o topo

## 2.7. Como colocar uma imagem remota?

Mais uma vez use as regras `%!postproc`.

    %!postproc   IMAGEM.PNG   http://www.abc.com/imagem

       ...

    veja a imagem: [IMAGEM.PNG]

Voltar para o topo

## 2.8. Existe colspan e rowspan?

Não, isso deve ser incorporado no futuro. Hoje existe o reST que possui uma sintaxe mais poderosa para criação de tabelas. Pode usar ele para gerar as tabelas em arquivos separados e em seguida incluir esses arquivos nos arquivos do txt2tags com `%!include`.

    %!include: ''tabela.html''

Voltar para o topo

## 2.9. Como colocar texto no atributo 'alt' das imagens?

Usando as regras `%!postproc`:

    %!postproc(html): '("beach.jpg.*?alt=")'  '\1 a really nice beach'
    %!postproc(html): '("city.jpg.*?alt=")'   '\1 this is my city'

    Olá, esta é uma foto da minha cidade: [city.jpg]
    E essa é de uma praia próxima: [beach.jpg]

# 3. TeX

Voltar para o topo

## 3.1. Como usar a classes book em vez de article para o output?

Isso só poder ser feito colocando:

    %!postproc(tex): {article} {book}

Voltar para o topo

## 3.2. Como configurar lingua no TEX (babel)?

Usando uma regra `%!postproc`:

    %!postproc(tex): {babel} [portuges]{babel}

para funcionar corretamente o `%!style` deve ser configurado para babel:

    %!style(tex): babel

ou com uma regra de postproc mais agressiva:

    %!postproc(tex): '(\\usepackage{amsfonts,graphicx,url})' '\1\n\\usepackage[brazil]{babel}'

Voltar para o topo

## 3.3. Como começar capítulo no topo da página?

Existem duas formas de fazer isso:

1. Usando uma regra `%!postproc` para colocar um `\clearpage` antes do `\section`.

       %!postproc(tex): '\\section' '\clearpage\section'

2. Mudando a classe para book, `\section` para `\chapter` e assim por diate. Usando `%!postproc` é claro.

       %!postproc(tex): '{article}'       '{book}'
       %!postproc(tex): '\\section'       '\chapter'
       %!postproc(tex): '\\subsection'    '\section'
       %!postproc(tex): '\\subsubsection' '\subsection'

   Note que os primeiros termos são expressões regulares e que as `\` devem ser escapadas `\\`.

Voltar para o topo

## 3.4. Como colocar equações matemáticas?

A primeira idéia que vem a mente é usar o marcador ''raw'' para colocar equações matemáticas no texto da seguinte forma:

    """ $teste^\omega$

este deveria gerar `$teste^\omega$`, mas a target é ''tex'' gera:

    \$teste\^{}$\backslash$omega\$

O ''raw'' serve para proteger o texto para não ser confundido com marcações do txt2tags, tipo colocar um **foo** literal, sem ser negrito. Esse texto passa pelo parsing normal de escapes, por isso a saída ficou com o \backslash no TeX.

Para obter o resultado desejado deve-se usar a marca de ''pass-thru'', que manda o texto direto para a saída, sem processamento nenhum. Isso deve ser feito com:

    %! include(tex): ''equacao.tex''

ou seja, a equação deve ser colocada num arquivo separado, e incluída com aspóstrofos ao redor do nome do arquivo. Caso não queira manter as equações em um arquivo separado use as regras de `postproc`:

    %!postproc: @math-1@  <your-fisrt-formula>
    %!postproc: @math-2@  <the-second-one>

Voltar para o topo

## 3.5. Como colocar notas de rodapé?

Usando as regras `%!postproc`:

    %!postproc(tex): 'footnote#' '\footnote{'
    %!postproc(tex): '#' '}'

O texto de uma nota de rodapé deve vir inserido no local onde a marca deve aparecer.

Código-fonte

      Aqui está uma prova footnote#Bem feia, é verdade# de que é possível
      usar o txt2tags para tarefas que exijam notas de rodapé.

Código gerado

      Aqui está uma prova \footnote{Bem feia, é verdade} de que é possível
      usar o txt2tags para tarefas que exijam notas de rodapé.

# 4. Miscelânia

Voltar para o topo

## 4.1. Como gerar PDF a partir de um .t2t?

Existem duas formas de fazer isso:

1. Convertendo o `.t2t` para `.tex` e usando `pdflatex`.

       txt2tags -t tex arquivo.t2t
       pdflatex arquivo.tex

2. Convertendo o `.t2t` para `.html` e usando `htmldoc`.

   http://www.easysw.com/htmldoc/software.php

3. Convertendo o `.t2t` para `.html` e usando o MS Word ou OpenOffice.

   Tanto o OpenOffice quanto o MS Word abrem HTML aí é só salvar como `.doc`, `.sxw` ou `.pdf`(o OpenOffice salva PDF).

Voltar para o topo

## 4.2. Como usar o txt2tags em um programa Python

O txt2tags é feito em Python e é também um módulo nessa linguagem. Para usar o txt2tags em programas Python basta importar o módulo, veja o código abaixo:

    import txt2tags

    texto = """Oi, tudo bem?

    Primeiro **uma** linha,
    depois a //outra//.

    Tchau."""

    texto = texto.split('\n')   # deve ser uma lista

    config = txt2tags.ConfigMaster()._get_defaults()
    config['target'] = 'html'   # formato de saida: HTML

    result, toc = txt2tags.convert(texto, config)
    print '\n'.join(result)     # result eh uma lista

Voltar para o topo

## 4.3. Como fazer compilação condicional com txt2tags?

Com o txt2tags é possível gerar diferentes documentos partindo de um mesmo .t2t com o uso de `%!preproc`. Imagine que você precisa gerar um apostila que servirá tanto a alunos quanto a professores. Entretanto algumas partes do documento deverão existir somente para os professores e vice-versa. Para isso crie as seguintes regras:

    %
    % Mostra areas dos professores
    %!preproc: '^%prof% '   ''
    %
    % Mostra areas dos alunos
    %!preproc: '^%aluno% '  ''
    %

e ao longo do texto:

    %aluno% frase que só vai ter na apostila do aluno
    %aluno% frase que só vai ter na apostila do aluno
    %aluno% frase que só vai ter na apostila do aluno
    %aluno% frase que só vai ter na apostila do aluno

    %prof% essa só na do prof
    %prof% essa só na do prof
    %prof% essa só na do prof
    %prof% essa só na do prof

Wilson Freitas <wilson em econofisisca com br>