SlideShare uma empresa Scribd logo
1 de 91
Baixar para ler offline
PSI2594 - Projeto de Formatura II :
     LabTex - Interface entre LaTeX e LabView
                  Relat´rio Final.
                        o
Aluno: Fernando J. Capeletto Neto (No USP 2370518) (fc@usp.br)
    Orientador: Jo˜o Eduardo Kogler Jr. (kogler@lsi.usp.br)
                   a

                   30 de novembro de 2009
Sum´rio
   a
1 Objetivos                                                                                                             4

2 Introdu¸˜o
         ca                                                                                                             4

3 Justificativas                                                                                                         5

4 O Processador LabTEX                                                                                                   6
  4.1 Estruturas L TEX . . . . . . . . . . . . . . . . . . . . .
                 A                                                  .   .   .   .   .   .   .   .   .   .   .   .   .    6
      4.1.1 Formata¸˜o (Typesetting) . . . . . . . . . . . .
                     ca                                             .   .   .   .   .   .   .   .   .   .   .   .   .    6
      4.1.2 TEX Typesetting system . . . . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .    6
      4.1.3 Linguagens de Macro . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .    7
      4.1.4 L TEX . . . . . . . . . . . . . . . . . . . . . . .
              A                                                     .   .   .   .   .   .   .   .   .   .   .   .   .    7
      4.1.5 Sistema de Formata¸˜o L TEX . . . . . . . . . .
                                  ca A                              .   .   .   .   .   .   .   .   .   .   .   .   .    8
      4.1.6 Apanhado Geral da Estrutura LaTeX. . . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   10
      4.1.7 Classes e Pacotes L TEX . . . . . . . . . . . . .
                                A                                   .   .   .   .   .   .   .   .   .   .   .   .   .   11
      4.1.8 Ajustando comandos existentes . . . . . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   11
      4.1.9 Analise de Viabilidade TEXe L TEX . . . . . . .
                                            A                       .   .   .   .   .   .   .   .   .   .   .   .   .   12
  4.2 AMS-L TEX . . . . . . . . . . . . . . . . . . . . . . . .
            A                                                       .   .   .   .   .   .   .   .   .   .   .   .   .   13
      4.2.1 Classes de opera¸˜o dos s´
                             ca        ımbolos matem´ticos
                                                        a           .   .   .   .   .   .   .   .   .   .   .   .   .   14
  4.3 Gr´ficos LabTeX: Recursos pesquisados . . . . . . . .
         a                                                          .   .   .   .   .   .   .   .   .   .   .   .   .   15
      4.3.1 Pacotes adotados: PGF/TikZ e xcolor . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   15
  4.4 Estruturas LabVIEW . . . . . . . . . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   18
      4.4.1 Instrumenta¸˜o virtual . . . . . . . . . . . . . .
                         ca                                         .   .   .   .   .   .   .   .   .   .   .   .   .   18
      4.4.2 LabVIEW . . . . . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   18
      4.4.3 Programa¸˜o em Fluxo de Dados . . . . . . . .
                      ca                                            .   .   .   .   .   .   .   .   .   .   .   .   .   18
      4.4.4 Programa¸˜o Gr´fica . . . . . . . . . . . . . . .
                      ca     a                                      .   .   .   .   .   .   .   .   .   .   .   .   .   18
      4.4.5 Analise de Viabilidade . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   19

5 Materiais e M´todos
                 e                                                                                                      22
  5.1 Metodologia . . . . . . . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   22
      5.1.1 Metodologia das Tags e C´digos de Opera¸˜o .
                                         o                 ca       .   .   .   .   .   .   .   .   .   .   .   .   .   22
      5.1.2 Cronograma . . . . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   23
  5.2 Desenvolvimento: Objetos e Componentes . . . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   24
      5.2.1 Aplica¸˜o Principal . . . . . . . . . . . . . . . .
                   ca                                               .   .   .   .   .   .   .   .   .   .   .   .   .   25
      5.2.2 Busca (retrieve) e Sele¸˜o (fetch) . . . . . . . .
                                     ca                             .   .   .   .   .   .   .   .   .   .   .   .   .   26
      5.2.3 Preparo e Execu¸˜o das Tags . . . . . . . . . .
                               ca                                   .   .   .   .   .   .   .   .   .   .   .   .   .   27
      5.2.4 Preparo e Execu¸˜o das Express˜es Aritm´ticas
                               ca               o          e        .   .   .   .   .   .   .   .   .   .   .   .   .   29
      5.2.5 Blocos de Apoio . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   30
      5.2.6 Gera¸˜o dos resultados . . . . . . . . . . . . . .
                  ca                                                .   .   .   .   .   .   .   .   .   .   .   .   .   32
  5.3 Recursos Auxiliares . . . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   32
  5.4 Testes e Resultados . . . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   34
      5.4.1 original.tex : C´digo Tex . . . . . . . . . . . .
                             o                                      .   .   .   .   .   .   .   .   .   .   .   .   .   34
      5.4.2 original.pdf : Visualiza¸˜o . . . . . . . . . . . .
                                     ca                             .   .   .   .   .   .   .   .   .   .   .   .   .   38
      5.4.3 resultado.tex : C´digo Tex . . . . . . . . . . .
                               o                                    .   .   .   .   .   .   .   .   .   .   .   .   .   42
      5.4.4 resultado.pdf : Visualiza¸˜o . . . . . . . . . . .
                                       ca                           .   .   .   .   .   .   .   .   .   .   .   .   .   49


                                              2
6 Objetivos                 58

7 Conclus˜o Parcial
         a                  58

8 O Futuro do projeto       59

9 Anexos                    61




                        3
1    Objetivos
Desenvolver ferramenta de interface para LabVIEW que permitir´ tornar execut´veis ex-
                                                                    a              a
press˜es selecionadas e inicializadas dentro de um texto em L TEX, renderizando resultados e
     o                                                      A
gr´ficos gerados pelo LabVIEW dentro do documento L TEX, visando a cria¸˜o de arquivos
   a                                                     A                  ca
t´cnicos ativos.
 e


2    Introdu¸˜o
            ca
As atividades nos campos da ciˆncia e tecnologia se estabelecem e renovam-se por meio da
                                   e
pesquisa de novos m´todos e conceitos. Em conseq¨ˆncia disto h´ tamb´m a necessidade de
                        e                            ue              a       e
documentar e divulgar os resultados e os avan¸os.c
    O projeto busca criar ponte facilitadora a essas atividades no campo da engenharia e
das ciˆncias. O objetivo ´ fazer a ponte tecnol´gica entre duas estruturas largamente uti-
       e                    e                      o
lizadas em cada um desses campos, que por suas caracter´    ısticas, oferecem caminho l´gico da
                                                                                         o
documenta¸˜o cient´
             ca       ıfica ao experimento e dele novamente ` documenta¸˜o.
                                                             a              ca
    Ser´ desenvolvido portanto um processador l´xico para L TEX, implementado em instru-
        a                                          e            A
mento virtual de LabVIEW, com recursos e metodologias que ser˜o descritos a seguir e com
                                                                      a
auxilio da cria¸˜o de um pacote de biblioteca L TE
                ca                               A Xcom a defini¸˜o das tags que transmitir˜o
                                                                   ca                          a
as instru¸˜es adequadas ao funcionamento do processador.
          co
    L TEXtem sido a via mais universalmente aceita e utilizada para a documenta¸˜o cient´
     A                                                                              ca       ıfica
nas ultimas trˆs d´cadas enquanto que no ˆmbito da experimenta¸˜o cient´
     ´           e e                          a                         ca       ıfica, controle e
teste industriais, o LabVIEW tem sido amplamente utilizado h´ 22 anos e seu uso continua
                                                                   a
crescendo.
    Se por um lado o L TEX´ ferramenta ub´
                          A    e               ıqua e de f´cil uso para se expressar o pensa-
                                                           a
mento cient´  ıfico, o LabVIEW mostra-se de modo complementar como uma ferramenta que
idealmente facilita a transforma¸˜o desse pensamento criativo em aplica¸˜es reais.
                                   ca                                        co
    Por meio dessa interface de softwares uniremos processamento ao L TEX(ferramenta de
                                                                             A
documenta¸˜o) e documenta¸˜o ao LabVIEW, ferramenta de processamento.No decorrer
             ca                 ca
deste trabalho ser˜o descritas as caracter´
                    a                     ısticas de ambas as estruturas, como s˜o orientadas
                                                                                   a
e tipadas de modo que permitem essa componentiza¸˜o, destacando seus aspectos comple-
                                                        ca
mentares e definindo as estrat´gias e planos de trabalho para a execu¸˜o do projeto em
                                  e                                           ca
PSI2594, como ser´ feita essa ponte tecnol´gica, necessidades que motivam este projeto,
                      a                        o
aspectos inovadores e vantagens na escolha dessas estruturas (L TEXe LabView) como seus
                                                                    A
componentes.




                                               4
3    Justificativas
Existe a necessidade de investigar o conhecimento documentado do mesmo modo que existe
a necessidade de documentar o conhecimento adquirido, este projeto atua nessa m˜o de via a
dupla.
    Existem no mercado ferramentas de software que se prop˜e a realizar em parte, o objetivo
                                                                 o
desse projeto, no tocante ao processamento de simula¸˜es.Uma referencia ´ o Mathcad -
                                                             co                     e
Enginering Calculation Software da Mathsoft, um software propriet´rio e que ´ um h´
                                                                          a           e     ıbrido
de documenta¸˜o t´cnica com c´lculo num´rico e simb´lico que permite explorar problemas,
                   ca e           a         e              o
formular id´ias, analizar dados, modelar e verificar cen´rios, determinar solu¸˜es; bem como
               e                                           a                       co
tamb´m documentar, apresentar e comunicar resultados. Existem desvantagens no uso do
      e
Mathcad e entre elas est´ a dificuldade de integra¸˜o com dispositivos de hardware, o fato de
                           a                        ca
ter seu funcionamento sustentado em macros, o que faz com que o software seja interpretado
e n˜o compilado, gerando problemas com execu¸˜o em tempo real. Existem outros softwares
   a                                              ca
como o Maple da Maplesoft ou o Mathematica da Wolfram, por´m s˜o mais limitados tamb´m
                                                                    e a                        e
fogem da possibilidade de intera¸˜o com opera¸˜es em tempo real.
                                   ca            co
    O projeto oferece uma alternativa que se baseia em c´digo aberto na interface de docu-
                                                              o
menta¸˜o (TEX) e embora use um software propriet´rio na interface de processamento (Lab-
        ca                                             a
VIEW) ´ ferramenta que tem sido das melhores e mais difundidas plataformas de desen-
           e
volvimento de aplica¸˜es cient´
                        co      ıficas e tecnol´gicas e ´ existente na escola. S˜o plataformas
                                              o          e                          a
suficientemente difundidas para que um trabalho nessas justifique utiliza¸˜o no escopo desse
                                                                              ca
projeto, embora haja conhecimento da existˆncia de outras ferramentas e que no caso de uma
                                             e
implementa¸˜o comercial este seja um t´pico a ser explorado.
                ca                       o
    Em disciplinas da gradua¸˜o os alunos da Escola Polit´cnica tem utilizado o LabVIEW
                               ca                               e
nos experimentos de laborat´rios e em pesquisas, em projetos de aplica¸˜o nas aulas e em
                              o                                                ca
projetos de formatura, desenvolvidos no curso de engenharia el´trica, entre eles onde esse
                                                                        e
projeto agrega. De maneira geral, o LabVIEW est´ dispon´a          ıvel para utiliza¸˜o em todo o
                                                                                    ca
campus da Universidade de S˜o Paulo (Campus Capital) por meio de parceria da Universidade
                              a
com o servi¸o de rela¸˜es acadˆmicas da National Instruments (NI).
               c        co      e
    Este projeto justifica-se na necessidade de avan¸o nos processos documentacionais rela-
                                                       c
cionados ` instrumenta¸˜o virtual e que auxiliem sua reprodu¸˜o com maior facilidade e
             a             ca                                          ca
eficiˆncia. E supre necessidades quando oferece a alternativa de maneira colaborativa e in-
    e
tegrada aos padr˜es das comunidades difundidas.
                     o
    Um car´ter inovador identificado ´ a gera¸˜o de documentos ativos por meio da cria¸˜o de
               a                      e       ca                                           ca
um arquivo t´cnico que pode ser dito ’vivo’ porque possui existˆncia ativa dentro do escopo
                 e                                                    e
das vari´veis simuladas ou adquiridas em tempo de execu¸˜o.
          a                                                   ca




                                                5
4     O Processador LabTEX
Neste t´pico abordaremos o contexto no qual se enquadra o projeto a ser desenvolvido do
       o
ponto de vista t´cnico/cient´
                e           ıfico, descrevendo as caracter´
                                                         ıstitcas principais dos elementos que
o envolvem, ou seja, os objetos constituintes, tanto em estrutura como em componentes.

4.1     Estruturas L TEX
                   A

4.1.1    Formata¸˜o (Typesetting)
                ca
A formata¸˜o envolve a apresenta¸˜o do material textual em forma gr´fica em papel ou algum
           ca                     ca                                 a
outro meio de comunica¸˜o. Antes do advento da publica¸˜o por meio de desktops, tipografia
                         ca                              ca
de material impresso foi produzida por compositores de trabalhos manuais, e mais tarde por
m´quinas.
   a
     O princ´
            ıpio geral da tipografia independente do contexto permanece sendo a composi¸˜o ca
de glifos em linhas para formar organismo: assunto, t´ ıtulos, legendas e outros peda¸os de
                                                                                       c
texto que comp˜em uma imagem de p´gina, e imprimir ou transferir a imagem da p´gina
                 o                       a                                              a
para o papel ou outras m´  ıdias.
     Durante a ´poca da impress˜o tipogr´fica, tipos m´veis foram compostos ` m˜o para
                e                 a        a            o                       a a
cada p´gina. Caracteres de metal eram compostos em palavras e linhas de texto e fortemente
        a
ligadas entre si para criar a imagem de uma p´gina denominada ’forma’, com todas as faces
                                               a
das letras possuindo o mesmo tamanho para formar uma superf´ do mesmo tipo. A forma
                                                                ıcie
era montada em uma prensa com tinta e a impress˜o feita em papel.
                                                   a
     Com a evolu¸˜o dos tipos de tipografia acompanhando a era digital , a disponibilidade de
                  ca
cria¸˜o de fontes por meio de procedimentos mais simples e baratos ou gratuitos, abriu um
     ca
fosso entre designers profissionais e amadores. Com o advento do PostScript, complementado
pelo formato de arquivo PDF, providenciou-se um m´todo universal de verifica¸˜o de desenhos
                                                    e                        ca
e esquemas e leg´ na maioria dos computadores e sistemas operacionais.
                  ıvel
     O sistema TEX[11], desenvolvido por Donald E. Knuth, no final dos anos 70, ´ outro
                                                                                     e
amplo e poderoso sistema de tipografia automatizada que estabeleceu padr˜es elevados, es-
                                                                            o
pecialmente para tipografia de matem´tica. Sobre ele abordamos na seq¨ˆncia.
                                       a                                ue

4.1.2    TEX Typesetting system
Comandos TEXnormalmente come¸am com uma barra invertida (’’) e s˜o agrupados com
                                  c                                        a
chaves. Entretanto, quase todas as propriedades sint´ticas do TEXpodem ser modificadas
                                                      a
instantˆneamente o que torna suas entradas complexas para analizar por qualquer sistema a
        a
n˜o ser por ele pr´prio.
  a               o
    TEX´ uma linguagem baseada em macros e s´
         e                                   ımbolos: v´rios comandos, incluindo defini¸˜es
                                                        a                               co
de usu´rio, s˜o expandidas instantˆneamente at´ que se encontrem apenas s´
       a      a                     a           e                              ımbolos inex-
pans´ıveis remanescentes enquanto s˜o executados.
                                   a
    A expans˜o pr´pria ´ praticamente livre de efeitos colaterais, a recurs˜o de macros n˜o
              a    o     e                                                 a              a
onera em mem´ria e construtores do tipo if/else est˜o dispon´
                o                                   a         ıveis. Isso torna TEXuma lin-
guagem de Turing mesmo no n´   ıvel expandido. (Turing ´ uma linguagem de programa¸˜o
                                                         e                               ca
baseada em Pascal desenvolvida em 1982 por Ric Holt e James Cordy, depois da Universi-
                          a `
dade de Toronto, Canad´. E uma linguagem descendente de Euclides, Pascal e SP/k e se
caracteriza por uma sintaxe limpa e semˆntica precisa independente de m´quina.)
                                        a                                 a



                                              6
O sistema pode ser dividido em quatro n´     ıveis: no primeiro, caracteres s˜o lidos do ar-
                                                                                  a
quivo de entrada e recebem a atribui¸˜o de um c´digo de categoria (chamado de ’catcode’).
                                       ca            o
Combina¸˜es da barra invertida (’’ - qualquer caracter da categoria zero) seguido por letras
          co
(caracteres da categoria 11) ou um unico outro caracter, s˜o substitu´
                                      ´                       a           ıdos por um marcador
controlador de seq¨ˆncia.
                     ue
    Nesse contexto, essa etapa ´ como an´lise l´xica, no pr´ximo est´gio, seq¨ˆncias de con-
                                 e         a      e           o         a         ue
trole expans´ ıveis (como as condicionais e macros definidas) s˜o substitu´
                                                                a            ıdas por seus textos
de substitui¸˜o. A entrada do terceiro est´gio ´ ent˜o uma seq¨ˆncia de caracteres (incluindo
             ca                            a     e     a         ue
aqueles com significado especial) e seq¨ˆncias de controle inexpans´
                                         ue                             ıveis (tipicamente sinal-
iza¸˜es e comandos visuais). Aqui caracteres s˜o montados dentro de um par´grafo. O
   co                                                a                                 a
quarto est´gio insere as listas de linhas verticais e outros materiais dentro das p´ginas.
           a                                                                         a
    O sistema TEXpossui conhecimento preciso dos tamanhos de todos os caracteres e s´    ımbolos
e usando essa informa¸˜o, processa o arranjo ´timo de letras por linha e de linhas por p´gina.
                        ca                      o                                          a
Isso ent˜o produz um arquivo DVI (”Device Independent - Independente do Dispositivo)
         a
contendo a localiza¸˜o final de todos os caracteres. Esse arquivo dvi pode ser impresso
                      ca
diretamente fornecido um driver de impress˜o apropriado, ou pode ser convertitdo para outros
                                             a
formatos. Nos tempos atuais ´ geralmente usado o PDFTex que processa a gera¸˜o do DVI
                                e                                                     ca
para PDF em conjunto.

4.1.3   Linguagens de Macro
TEXoferece uma linguagem de macro n˜o usual, a defini¸˜o de uma macro n˜o apenas in-
                                        a             ca                  a
clui uma lista de comandos mas tamb´m a sintaxe de chamada. Macros s˜o integradas em
                                      e                                a
larga escala com a linguagem interpretada em tempo de compila¸˜o o que tamb´m guia o
                                                               ca             e
processamento.
    O nivel da opera¸˜o da macro TEX´ l´xico, mas ´ constru´ sobre suas facilidades que
                    ca                 e e        e        ıdo
fazem uso da interpreta¸˜o sint´tica.A linguagem macro em TEXfoi utilizada com sucesso
                        ca     a
para extender TEXpor exemplo para L TEX.
                                     A


4.1.4   L TEX
        A

L TEX´ mais amplamente utilizada por matem´ticos, cientistas, engenheiros, fil´sofos, estu-
 A     e                                        a                                  o
dantes acadˆmicos e no mundo comercial e outros segmentos. ´ utilizado devido sua alta
            e                                                     e
qualidade de formata¸˜o atingida pelo TEX. O sistema de formata¸˜o oferece ferramentas
                      ca                                              ca
program´veis de publica¸˜o em desktops e facilidades extendidas para automa¸˜o da maio-
         a               ca                                                       ca
ria dos aspectos de formata¸˜o e publica¸˜o em desktops, incluindo numera¸˜o e referˆncia
                             ca            ca                                  ca        e
cruzada, tabelas e figuras, layout de p´ginas e bibliografias.
                                        a
    L TEXfoi criado com a inten¸˜o de oferecer uma linguagem de alto n´
    A                             ca                                        ıvel que acessasse
o poderio do TEX. L TEA Xessencialmente compreende uma cole¸˜o de macros em T Xe um
                                                                 ca                    E
programa para processar documentos L TEX. Foi originalmente escrito no inicio dos anos 80
                                         A
por Leslie Lamport [14] na SRI International, e se tornou o m´todo dominante para o uso do
                                                              e
TEX, poucas pessoas relativamente escrevem em TEXpuro ainda. A vers˜o corrente ´ chamada
                                                                        a            e
L TEX 2ε .
 A
    O termo L TEXrefere-se apenas a linguagem na qual os documentos s˜o escritos e n˜o
              A                                                              a              a
ao editor usado para escrever estes documentos. Para criar um documento em L TEX, um A
arquivo do tipo .tex precisa ser criado usando algum tipo de editor de texto. Enquanto v´rios
                                                                                         a



                                               7
editores de texto servem ao prop´sito, v´rias pessoas preferem utilizar editores desenvolvidos
                                o       a
especificamente para trabalhar com L TE
                                     A X.
    Distribu´ sob os termos da licen¸a ’L TEXProject Public License’ (LPPL), L TEX´ soft-
            ıdo                       c A                                          A    e
ware livre, detalharemos a quest˜o da licensa na An´lise de Viabilidade.
                                a                    a

4.1.5   Sistema de Formata¸˜o L TEX
                          ca A
L TEX´ baseado na id´ia de que autores devem estar aptos a focar no conte´do que est˜o
 A     e               e                                                       u         a
escrevendo sem serem distra´   ıdos pela sua apresenta¸˜o visual. Ao preparar um documento
                                                      ca
L TEX, o autor especifica a estrutura l´gica utilizando conceitos familiares como ’cap´
 A                                       o                                           ıtulo’,
’se¸˜o’, ’tabela’, ’figura’, etc; e deixa que o sistema L TEXpreocupe-se a respeito da apre-
   ca                                                    A
senta¸˜o dessas estruturas.
      ca
    Isso encoraja portanto a separa¸˜o de layout do conte´do enquanto permite ajustes de
                                      ca                     u
formata¸˜o quando necess´rio. ´ similar ao mecanismo de estilos permitidos em v´rios pro-
         ca                 a     e                                               a
cessadores de texto, definidos globalmente para um documento inteiro, similar ao mecanismo
do CSS usado pelo HTML.
    O exemplo abaixo mostra a entrada L TEXe a correspondente sa´
                                           A                         ıda:

documentclass[12pt]{article}
usepackage{amsmath}
title{LaTeX}
date{}
begin{document}
maketitle
 LaTeX{} is a document preparation system for the TeX{}
  typesetting program. It offers programmable desktop publishing
  features and extensive facilities for automating most aspects of
  typesetting and desktop publishing, including numbering and
  cross-referencing, tables and figures, page layout, bibliographies,
  and much more. LaTeX{} was originally written in 1984 by Leslie
  Lamport and has become the dominant method for using TeX; few
  people write in plain TeX{} anymore. The current version is
  LaTeXe.
  % This is a comment, it is not shown in the final output.
  % The following shows a little of the typesetting power of LaTeX
  begin{align}
   E&=mc^2 
   m&=frac{m_0}{sqrt{1-frac{v^2}{c^2}}}
  end{align}
end{document}




                                              8
Figura 1: Figura proveniente do arquivo exemplo01.jpg gerado da compila¸˜o do c´digo da
                                                                       ca      o
p´gina anterior
 a




                                          9
4.1.6   Apanhado Geral da Estrutura LaTeX.
Em resumo, o centro de processamento do L TEX´ a linguagem de programa¸˜o chamada
                                               A    e                           ca
TEXque provˆ v´rias instru¸˜es de formata¸˜es. Em conjunto com o TEXvem um conjunto
             e a              co             co
de fontes denominadas ’Computer Modern (CM). As CM fontes e a linguagem TeX formam
a base de um sistema TEXt´   ıpico.
    TEX´ expans´
         e       ıvel, ou seja, comandos adicionais podem ser definidos em termos de outros
mais b´sicos. Uma das melhores conhecidas expans˜es do TEX´ o L TEXque introduz a id´ia
       a                                             o          e A                     e
de unidade l´gica.
            o
    O layout visual no L TEX´ determinado pela classe do documento. Expans˜es do L TEXs˜o
                        A     e                                               o    A     a
denominadas pacotes, nas se¸˜es a seguir abordamos os elementos de um documento L TE
                               co                                                     A X,
sua estrutura e componentiza¸˜o passando ao contexto espec´
                                ca                            ıfico dos pacotes AMS - LaTeX
(amssymb e amsmath), apropriados para a representa¸˜o tipogr´fica matem´tica e cient´
                                                        ca       a            a        ıfica
em geral. Ao final do cap´  ıtulo s˜o apresentadas agumas primeiras estruturas num apanhado
                                   a
das mais representativas da biblioteca.
    A componentiza¸˜o resumida dos elementos da estrutura L TEX´ ilustrada na figura abaixo.
                    ca                                      A      e
Essa figura sugere que, em ordem para trabalhar com um documento L TEX, ´ necess´rio
                                                                          A      e     a
primeiro instalar o TEXe as fontes ’Computer Modern’, ent˜o instalar o L TEXe finalmente
                                                             a              A
especificar a classe de documento e os pacotes necess´rios.
                                                       a




Figura 2: Esquema da estrututra de rela¸˜o entre o TeX e o LaTeX. O TeX ´ a funda¸˜o
                                            ca                                  e ca
sobre a qual v´rios pacotes utilit´rios - extens˜es do LaTeX - s˜o constru´
              a                   a             o               a         ıdos.




                                            10
4.1.7   Classes e Pacotes L TEX
                          A

L TEXem sua versao atual, faz distin¸˜o entre as macros que definem o layout de um docu-
 A                                    ca
mento, e as macros que extendem as funcionalidades para fornecer o que o autor realmente
quer.
    A id´ia ´ que um documento de classe L TEXdiz sobre qual a natureza do documento,
         e e                                   A
enquanto os pacotes do documento carregam comandos que refinam sobre a especifica¸˜o        ca
global.
    No disco, os arquivos s´ aparecem diferentes em virtude da extens˜o - arquivos de classes
                           o                                           a
s˜o do tipo *. cls enquanto arquivos de pacotes s˜o do tipo *.sty. Desse modo, encontramos o
 a                                               a
arquivo classe padr˜o para artigo no disco com o nome de ’article.cls’, enquanto que o pacote
                    a
footmisc (que refina as defini¸˜es de notas de rodap´ dos artigos) ´ representado no disco por
                              co                    e              e
um arquivo chamado footmisc.sty
    O usu´rio define a classe do seu documento com o comando documentclass(normalmente
          a
o primeiro comando em um documento), e carrega pacotes com o comando usepackage.Um
documento pode ter v´rios comandos usepackage, mas pode ter apenas um documentclass.
                      a
Existem vers˜es da interface de programa¸˜o de ambos os comandos, j´ que uma classe pode
             o                            ca                            a
escolher carregar outra classe para aperfei¸oar as suas capacidades, e ambas as classes e
                                             c
pacotes podem optar por carregar outros pacotes.

4.1.8   Ajustando comandos existentes
No caso geral, colocar uma sobredefini¸˜o no meio de um comando existente ´ dif´
                                        ca                                       e   ıcil. No
entanto, para adicionar algum c´digo no in´
                                  o         ıcio ou no fim de um comando existente, ´ con-
                                                                                       e
ceitualmente muito f´cil. Para definir uma vers˜o de um comando que faz alguma pequena
                      a                          a
extens˜o da sua defini¸˜o original podemos escrever:
       a                ca
    renewcommand{splat}{mumblesplat}
    Entretanto, isso n˜o dever´ funcionar: uma chamada a splat executaria mumble , e
                        a      a
a chamada que redefine splat novamente; Isso ´ um loop infinitamente recursivo, que ir´
                                                   e                                         a
rapidamente exaurir a mem´ria do TEX. Felizmente, o comando TEXlet nos permite ter
                            o
um ’instantˆneo’ do estado atual de um comando, podemos, ent˜o, usa-lo na sua redefini¸˜o.
             a                                                   a                        ca
Ent˜o:
    a
    letOldSmoothsmooth
    e
    renewcommand{smooth}{mumbleOldSmooth}
    possuem os mesmos efeitos da corre¸˜o necess´ria, de forma segura. Adicionando coisas
                                        ca         a
no fim de um comando funciona de modo similar. Se smooth tem argumentos, eles devem
ser passado por referˆncia:
                      e
    renewcommand{smooth}[2]{mumbleOldSmooth{#1}{#2}}.
    O caso geral pode ser alcan¸ado de duas maneiras. Em primeiro lugar, pode-se usar o
                                 c
comando LaTeX CheckCommand; este compara um comando existente com a defini¸˜o que     ca
vocˆ der a ele, e emite um aviso se dois n˜o s˜o iguais. Sua utiliza¸˜o ´, portanto:
    e                                     a a                       ca e
    CheckCommand{complex}{<original-definition>}
    renewcommand{complex}{<new-definition>}.
    Esta t´cnica ´, obviamente, um pouco trabalhosa, mas se o comando original vem de uma
          e      e
fonte que ´ pass´
           e     ıvel de mudan¸a em ˆmbito do contexto, ele ao menos avisa que seu patch
                               c      a
est´ em perigo de funcionar equivocadamente.
   a


                                             11
Existe a possibilidade de se usar pacotes espec´ ıficos para a finalidade de redefini¸˜o de
                                                                                      ca
comandos:
    O pacote patchcmd restringe o conjunto de comandos que vocˆ pode ajustar; O pacote ted
                                                                  e
[19] ´ um ’editor de lista de tokens’ e provˆ um comando Substituteo qual ajusta o conte´do
     e                                      e                                            u
de uma macro, colocando o resultado em uma lista de tokens ou opcionalmente usando o
resultado para (re)definir a macro. O pacote pode ser usado tamb´m como ferramenta de
                                                                     e
debugging.
    O pacote etoolbox [16] provˆ o comando patchcmdo qual realizar´ uma ’substitui¸˜o
                                   e                                      a              ca
de string’ na defini¸˜o de uma macro. O pacote tamb´m prove commandos que adicionam
                     ca                                  e
pr´-defini¸˜es (pretocmd) ou p´s-defini¸˜es (apptocmd)a uma defini¸˜o de um comando.
  e       co                       o        co                          ca
    Nesse est´gio do trabalho abordamos superficialmente alguns dos comandos e pacotes que
             a
julgamos que ser˜o uteis ao desenvolvimento das tags do LabTeX devido suas funcionalidades
                  a ´
que permitem flexibiliza¸˜o sobre a sintaxe das macros L TEXe oferecem suporte ao ensaio
                           ca                              A
das tags escolhidas como marcadores para o LabTeX, inclusive com possibilidade de debug-
ging. S˜o recursos que auxiliam a metodologia e no decorrer do desenvolvimento do projeto
        a
em PSI2594, quando forem utilizados, cada pacote ser´ apresentado e mencionado em seu
                                                         a
contexto de uso.

4.1.9   Analise de Viabilidade TEXe L TEX
                                    A

Nesta se¸˜o analizaremos quest˜es que envolvem os componentes e suas caracter´
           ca                       o                                                 ısticas que
viabilizam o projeto, como integra¸˜o, aceitabilidade, estabilidade, escalabilidade.
                                       ca
    TEXfoi desenvolvido com dois objetivos principais em mente: permittir que qualquer
pessoa produzisse livros de alta qualidade usando quantidade de esfor¸o razo´vel e prover
                                                                             c     a
um sistema que pudesse gerar exatamente o mesmo resultado em todos os computadores,
agora e no futuro. Tex possui excelentes capacidades de formata¸˜o e trabalha com f´rmulas
                                                                      ca                 o
matem´ticas t˜o bem como texto.
        a         a
    Um grande atrativo da linguagem TeX ´ que seu arquivo c´digo ´ puro texto, algumas
                                                  e                  o     e
vezes denominado um arquivo ’ASCII’. Portanto, artigos contendo mesmo as mais complicadas
express˜es matem´ticas podem ser leg´
        o              a                    ıveis transmitidas eletronicamente, para colegas, co-
autores, journals, editores e publicadores.
    TEX´ independente da plataforma, admite desenvolvimento em um Macintosh por exem-
          e
plo e seu co-autor pode fazer melhorias no mesmo arquivo usando um computador pessoal
compat´  ıvel com IBM; o publicador do journal pode usar um DEC minicomputador, essa
diferen¸a de hardware n˜o muda em nada o processo.
        c                     a
    L TE e
     A X´ muito mas f´cil para trabalhar do que T X, existe grande n´ mero de ferramentas
                            a                           E                   u
seguras constru´    ıdas internamente e um enorme conjunto de mensagens de erro.
    L TEXdiminui o t´dio na escritura¸˜o de tarefas. Considere um artigo completo com
     A                    e                ca
teoremas e equa¸˜es numeradas e apropriadamente referenciadas cruzadamente. Ao fim da
                     co
leitura algumas mudan¸as precisam ser feitas, por exemplo, a se¸˜o 4 precisa ser colocada
                             c                                          ca
ap´s a se¸˜o 7 e um novo teorema precisa ser inserido em algum lugar no meio.Esses tipos
   o        ca
de modifica¸˜es no processamento documentacional convencional pode causar transtornos
               co
enquanto que com L TEXisso se torna simples pois automaticamente refaz todas as numera¸˜es
                        A                                                                    co
e referencias cruzadas.
    L TEX´ uma linguagem universal e estabelecida, acompanhada por comunidades cient´
     A      e                                                                               ıficas
que desde os fins dos anos 60 pesquisavam alternativas que pudessem oferecer recursos ao
                      a    ´
desejo de express˜o. E acess´    ıvel, possui protocolo aberto e poucas tecnicalidades de modo


                                               12
que o leigo instru´ ´ capaz de desenvolver e de modo geral preservar, documentar e publicar
                  ıdo e
conhecimento.
     Em diversos campos t´cnicos em particular a ciˆncia da computa¸˜o, matem´tica e f´
                             e                      e                   ca         a      ısicas,
L TE
 A Xtem se tornado padr˜o. V´rios milhares de livros tem sido publicados usando L T X,
                               a       a                                                  A
                                                                                             E
incluindo livros publicados pela Addison-Wesley, Cambridge University Press, Elsevier, Ox-
ford University Press and Springer.Diversos journals nesses campos s˜o produzidos usando
                                                                            a
TeX or LaTeX, permitindo que autores possam submeter seus trabalhos manuscritos direta-
mente em TeX, o que ´ inclusive eletronicamente mais leve quanto a transmiss˜o eletrˆnica e
                        e                                                         a     o
armazenamento em base de dados.
     A estabilidade do TEXtamb´m merece ser ressaltada, desde a vers˜o 3, TEXusa um id-
                                     e                                       a
iosincrasso sistema de numera¸˜o de vers˜o onde atualiza¸˜es s˜o indicadas pela adi¸˜o de
                                    ca        a               co    a                    ca
um d´ ıgito extra ao final do decimal, de modo que a vers˜o do n´mero assintoticamente se
                                                             a        u
aproxime de ’pi’. Isso ´ uma reflex˜o do fato que TeX ´ atualmente muito est´vel e apenas
                         e               a                e                        a
m´ınimas atualiza¸˜es s˜o antecipadas. A vers˜o atutal do TEX´ 3.1415926; que foi atualizada
                  co     a                      a                e
pela ultima vez em Mar¸o de 2008.
      ´                    c
     O criador do TEX, Donald Knuth, mantevem um registro muito detalhado dos bugs cor-
rigidos e mudan¸as efetuadas desde 1982. A lista atualizada em 2008 cont´m 427 registros.
                 c                                                             e
Knuth ofereceu premios em dinheiro `s pessoas que encontrassem e reportassem um bug no
                                           a
TeX. O premio por bug come¸ou com U$ 2.56 (um ’dolar hexadecimal’) e dobrava todo ano
                                   c
at´ que seu valor foi congelado para o valor atual de U$ 327.68. Knuth entretanto, perdeu
  e
relativamente pouco dinheiro com isso pois muitos poucos bugs foram anunciados.
     Quanto ` Licen¸a L TEX´ tipicamente distribu´ com texto puro, isso ´ distribu´ sob
              a      c A         e                  ıdo                        e        ıdo
uma licen¸a de software livre, a ’LaTeX Project Public Licen¸a (LPPL). A LPPL n˜o ´
            c                                                       c                       a e
compat´  ıvel com a GNU - Licen¸a P´blica Geral, pois a primeira requer que os arquivos
                                       c   u
modificados sejam claramente diferenciados um do outro (normalmente mudando o nome do
arquivo). Para refor¸ar essa regra, qualquer implementa¸˜o no sistema precisa passar por
                      c                                      ca
bateria de testes antes de ser liberada para ser chamada TEX.
     Quanto ao software para codifica¸˜o, L TEX´ dispon´
                                           ca A   e        ıvel na maioria dos sistemas opera-
cionais incluindo Unix, Linux e BSDs, Windows, Mac OSx, RISC OS e AmigaOS.
     Outro aspecto que fortalece a viabilidade e a escolha do L TEXcomo componente ´ a or-
                                                                 A                       e
ganiza¸˜o das comunidades ao redor dessas tecnologias. Entidades da comunidade TEXfazem
        ca
parte do TEXUsers Group o qual publica o ’TUGboat’ e ’The PracTeX Journal’ abrangendo
um vasto leque de temas relevantes para a tipografia digital TEX. O ’The Deutschsprachige
Anwendervereinigung TEX’ ´ um grande grupo de usu´rios na Alemanha. O ’TEXUsers Group’
                                e                     a
foi fundado em 1980 para fins educacionais e cient´ıficos, possibilita uma organiza¸˜o para aque-
                                                                                  ca
les que possuem algum interesse em tipografia e design de fontes, e s˜o usu´rios do sistema
                                                                           a    a
tipogr´fico TEX.
       a

4.2   AMS-L TEX
          A

O pacote amsmath ´ um pacote L TEXque oferece diversos acess´rios para melhorar a estrutura
                   e            A                           o
da informa¸˜o e impress˜o de documentos que contˆm f´rmulas matem´ticas. AMS-L TEX´
           ca            a                        e    o               a             A     e
uma cole¸˜o de classes de documento e pacotes em L TE
         ca                                         A Xelaborados pela American Mathe-
matical Society (AMS) e que provˆ solu¸˜es e recursos para diversos fins de documenta¸˜o
                                  e    co                                               ca
cient´
     ıfica em diversos segmentos.
    Entre os acess´rios matem´ticos h´ uma grande variedade de ferramentas tipogr´ficas.
                  o           a      a                                               a
AMS-L TEXprove diversas classes incluindo a classe de documentos para artigos da AMS, a
       A



                                               13
classe amsart e disponibiliza fontes para centenas de operadores bin´rios, rela¸˜es bin´rias,
                                                                         a           co       a
relacionamentos negativos bin´rios, s´
                                a      ımbolos negritos, setas, setas extens´   ıveis, e assim por
diante, disponibilizados pelo AMS-L TEXe que tamb´m disponibiliza alfabetos matem´ticos
                                     A                 e                                      a
adicionais como Blackboard negrito, Euler Fraktur, Euler Script, e matem´tico negrito it´lico.
                                                                              a               a
    O pacote amsmath ´ distribuido em conjunto com alguns pequenos pacotes auxiliares,
                         e
outro pacote que sera util no escopo do projeto pois dar´ liberdade para a cria¸˜o de funcional-
                      ´                                  a                        ca
idades do LabTeX ser´ o pacote amsopn que provˆ DeclareMathOperator para defini¸˜o de
                      a                            e                                         ca
novos ’nomes de operadores’ como sin e lim .
    O pacote amsmath provˆ uma s´rie de outras estruturas de equa¸˜o al´m das fornecidas
                             e       e                                  ca      e
no L TEXb´sico. O conjunto adicional inclui: equation , equation* , align , align*, gather,
    A      a
gather*, flalign, flalign*, multline, multline*, alignat, alignat* e split. [6]

4.2.1   Classes de opera¸˜o dos s´
                        ca       ımbolos matem´ticos
                                              a
Os simbolos de uma f´rmula matem´tica s˜o classificados em diferentes categorias que cor-
                      o              a     a
respondem mais ou menos ` parte da fala ou elemento l´xico que cada s´
                            a                             e                 ımbolo teria se a
f´rmula estivesse expressas em palavras,(por exemplo: nomes, conjun¸˜es e verbos dispostos
 o                                                                    co
numa declara¸˜o, s´ que trata-se de ’declara¸˜o matem´tica’) Certos modos de espa¸amentos
             ca o                           ca        a                             c
e posicionamentos s˜o tradicionalmente utilizados para as diferentes classes de s´
                    a                                                            ımbolos para
aumentar a legibilidade das f´rmulas.
                             o




    Figura 3: Correspondˆncia das categorias de simbolos e seus c´digos de opera¸˜o.[6]
                        e                                        o              ca

     A distin¸˜o entre a classe 0 e uma adicional classe 7 ´ unicamente com os aspectos de
             ca                                               e
sele¸˜o de fonte e n˜o se aplica aqui. Simbolos da classe bin´ria s˜o automatitcamente
     ca               a                                             a    a
for¸ados ` classe 0 (sem espa¸os) se eles n˜o possu´
    c      a                    c           a        ırem um operando ` esquerda. N´meros
                                                                         a               u
ar´bicos (0-9) s˜o classe 0, assim como as letras gregas, outros s´
   a             a                                                ımbolos alfab´ticos e diversos
                                                                               e
s´
 ımbolos acess´rios simples tamb´m s˜o da classe 0 (ordin´ria) o que significa que eles n˜o
                o                  e   a                       a                              a
tˆm qualquer base de espa¸amento. Lexicamente correspondem a nomes e pronomes no
 e                            c
’discurso’,sob o ponto de vista dessa met´fora.
                                          a
     Simbolos de operadores binarios s˜o classe 2 (conjun¸˜es), simbolos relacionais s˜o classe
                                      a                    co                          a
3(verbos). Operadores cumulativos (de tamanho vari´vel) s˜o da classe 1. S´
                                                          a      a                  ımbolos de
pontua¸˜o s˜o da classe 6, pares delimitadores s˜o classe 4 (os s´
         ca a                                     a               ımbolos de abertura) e classe
5 (os s´ımbolos de fechamento). Os acentos ser˜o uteis para especificadores de arrays, vetores
                                                a ´


                                               14
e multidimensoes no LabTeX por exemplo. Nomes de operadores existentes s˜o representados
                                                                             a
por abrevia¸˜es. Existem muitos s´
            co                     ımbolos adicionais dispon´
                                                            ıveis para uso no LaTeX. Existe
uma lista de s´ımbolos detalhada em [18].
    Observa-se portanto uma rela¸˜o entre a classe dos comandos AMS-L TEXe a natureza
                                  ca                                       A
desses comandos quanto a sua fun¸˜o, espa¸amento e necessidade de parˆmetros construtores,
                                  ca      c                            a
o que ser´ explorado na constru¸˜o dos ’m´todos-subVIs’ de ’sele¸˜o de opera¸˜o’ (opcode
          a                      ca         e                      ca           ca
’fetch’), ou seja, os sub instrumentos virtuais do LabTeX capaz de identificar o tipo do
comando/opera¸˜o matem´tica para posterior prepara¸˜o (parse) e execu¸˜o, conforme ´
                 ca        a                            ca                   ca           e
apresentado durante a metodologia. 5.1.1

4.3     Gr´ficos LabTeX: Recursos pesquisados
          a
L TEXnasceu em 1984 com um ambiente nativo de desenho que permitiu desenhar linhas,
 A
vetores, c´
          ırculos e ’ovais’ com algumas limita¸˜es; fontes especiais foram utilizadas para de-
                                                 co
senhar todos os objetos gr´ficos. Esta foi uma grande limita¸˜o, porque no surgimento do
                              a                                   ca
L TEXtodas as fontes utiliz´veis comportavam apenas 128 glifos; Isso aconteceu com as fontes
 A                           a
de texto, bem como com as fontes especiais para desenho em L TEX. Com isso s´ haviam
                                                                     A                  o
duas espessuras dispon´  ıveis.[4]
    A primeira extens˜o gr´fica dispon´
                       a      a           ıvel no mercado foi PiCTEX[29]. Foi concebido para
trabalhar com TEXpuro, em uma fase inicial da hist´ria do TEX. Ap´s L TEXser disponi-
                                                         o                  o A
bilizado, algumas macros foram criadas para permitir que L TEXimportasse as macros do
                                                                  A
PiCTEXe pudesse utiliz´-las com quase toda eficiencia. Nesses tempos, TEXe L TEXeram ex-
                          a                                                         A
ecutados em mainframes e PCs estavam na sua infˆncia, o sistema TEXj´ estava dispon´
                                                      a                        a                ıvel
para os pequenos PCs, mas as limita¸˜es de mem´ria eram t˜o fortes que era normal obter a
                                      co            o           a
mensagem de excesso de mem´ria e processamento abortado.
                                 o
    Em 1986 Sunil Podar publicou seu pacote de extens˜o gr´fica chamado epic [20], para o
                                                           a     a
ambiente gr´fico LaTeX convencional; em 1988 Conrad Kwok publicou o seu refor¸o eepic
             a                                                                            c
[13]. Ambos foram concebidos de forma a aliviar as fortes limita¸˜es do ambiente gr´fico
                                                                         co                   a
padr˜o do LaTeX, nomeadamente a limita¸˜o das encostas de linha e dos vectores e a gama
     a                                        ca
limitada de raios de circulo. Ambos os programas foram concebidos para utiliza¸˜o no ˆmbito
                                                                                    ca      a
do ’velho’ LaTeX, hoje conhecido como LaTeX 209, em contraste com o ’novo’ LATEX2#
(que n˜o ´ mais t˜o novo uma vez que posui mais de uma d´cada de existˆncia).
        a e        a                                           e                e
    Outro pacote gr´fico muito poderoso que necessita da utiliza¸˜o de um software externo
                     a                                                ca
atualmente para renderizar objetos gr´ficos ´ XY-pic, [21]. Este pacote ´ projetado para
                                         a       e                                e
                A X, T Xpuro, e A S-T X.
trabalhar com L TE        E          M E
    Leslie Lamport, em sua segunda edi¸˜o do manual LaTeX [15], fixou a sintaxe de um
                                            ca
novo ambiente de desenho extendido, (pict2e e seu pacote de extens˜o curve2e [3] extens˜es)
                                                                         a                     o
onde a maioria se n˜o todas as limita¸˜es da implementa¸˜o padr˜o puderam ser superados:
                     a                 co                   ca         a
ilimitadas encostas das linhas e vetores, qualquer raio de c´
                                                            ırculo, linhas de espessura arbitr´ria
                                                                                               a
tamb´m para linhas curvas, etc.
      e

4.3.1    Pacotes adotados: PGF/TikZ e xcolor
A sigla PGF significa ’Formato Gr´fico Port´vel’; o pacote PGF [25], implementa ou re-
                                 a          a
implementa todos os comandos do ambiente padr˜o de desenho L TEX, de modo a criar um
                                                a              A
conjunto coerente de comandos capazes de fazer a maioria das opera¸˜es gr´ficas no L TEXe
                                                                  co     a        A
no pdfLATEX.


                                                15
V´rios comandos foram adicionados ao conjunto fundamental para extender as capaci-
      a
dades gr´ficas do L TEXe suas capacidades s˜o ampliadas mais uma vez por meio do pacote
         a         A                          a
xcolor que por sua vez, amplia as possibilidades de manipula¸˜o de cores oferecido pelo pacote
                                                            ca
padr˜o.
     a
    Esse pacote automaticamente examina os arquivos de configura¸˜o padr˜es e insere nos
                                                                     ca       o
arquivos de sa´ o comando special adequado ao driver de sa´
              ıda                                                 ıda.
    O novo pacote PGF, vers˜o 1.10, contem um novo pacote e seu novo ambiente gr´fico que
                             a                                                       a
´ chamado TikZ; acrˆnimo que significa ’TikZ ist kein Zeichenprogramm’ (TikZ n˜o ´ um
e                     o                                                               a e
programa de desenho). PGF e seu novo pacote tikz possuem in´meras interfaces de desenho
                                                                u
que podem produzir quase qualquer coisa. O manual explica em detalhes o que n˜o pode  a
ser feito com a interface de PostScript e explica que o formato PGF e o programa foram
especificamente desenvolvidos para serem utilizados com pdfLATEX, onde possui seu melhor
funcionamento.




                 Figura 4: Um exemplo retirado do Manual de Tantau [25]

    Tantau diz que TikZ possui a inten¸˜o de oferecer ao usu´rio uma interface uniforme e
                                        ca                     a
simplificada que permita a composi¸˜o de desenhos com o m´
                                    ca                        ınimo poss´ de estardalha¸o;
                                                                        ıvel              c
em seu manual ele escreveu uma pequena introdu¸˜o ensinando como produzir demonstra¸˜es
                                                 ca                                      co
como a figura produzida acima. O c´digo n˜o ´ transcrito neste trabalho pois pode ser
                                       o       a e
encontrado por qualquer um pelo manual [25], e que dever´ ser aproveitado intensamente
                                                             a
para o desenvolvimento e implementa¸˜es dos m´todos-SubVIs de gera¸˜o de c´digo gr´fico,
                                      co         e                     ca       o       a
devido ` multiplicidade de desenho e comandos dispon´
       a                                              ıveis para qualquer eventual situa¸˜o.
                                                                                         ca
    PGF/TikZ possui extensa documenta¸˜o. Para a vers˜o 2.0 o manual possui 560 p´ginas.
                                          ca             a                            a
Como nota-se na figura, o programa permite gr´ficos em preto e branco ou coloridos, e o
                                                  a
texto usa as mesmas fontes que as padr˜es no documento PDF pois TikZ ´ completamente
                                         o                                   e
integrado com (pdf)LaTeX.
    O pacote PGF contem numeras bibliotecas de commandos adicionais; Existe grande var-
iedade de tipos de setas, variedades de panos de fundo, oferece diagramas de relacionamento
de entidades, diagramas para mapas mentais, op¸˜es de escolha para padr˜es de panos de
                                                   co                         o
fundo para desenhos t´cnicos, desenhos de redes de Petri e mais.
                      e

                                             16
Figura 5: Uma espiral plotada pelo TikZ cujas coordenadas foram calculadas pelo GnuPlot.
Manual de Tantau [25] No LabTex, o LabVIEW ser´ o responsavel pela obten¸˜o de coorde-
                                                  a                        ca
nadas.

     O pacote manipula o desenho de gr´ficos que podem ser definidos como uma serie de dois
                                         a
ou trˆs pares ou tripletes coordenados para fazer desenhos 3D. Uma novidade ´ a possibilidade
      e                                                                        e
de crar desenhos ’inline’ simples sem precisar abrir um ambiente. A sintaxe TikZ ´ simples;
                                                                                     e
suas instru¸˜es iniciam com um comando, continuam com op¸˜es e coordenadas e terminam
            co                                                  co
com um ponto-e-virgula.
     Certamente o ambiente b´sico padr˜o LaTeX para desenhos sofre em compara¸˜o de
                                a          a                                            ca
performance com o pacote PGF, mesmo se o ambiente padr˜o for evolu´ com os pacotes
                                                                a          ıdo
pic2e e curve2e, essas ferramentas simples podem ser utilizadas para aprender apenas poucos
commandos.TikZ possui largo conjunto de funcionalidades mas possui tambem uma curva de
aprendizado mais ´  ıngreme.
     Nesta se¸˜o, pesquisamos o hist´rico e peculiariedades de algumas solu¸˜es existentes para
             ca                     o                                      co
gera¸˜o de desenhos, gr´ficos e diagramas com L TEXe nesta etapa do trabalho por compara¸˜o
     ca                  a                      A                                           ca
das estruturas e disponibilidade de recursos, escolheu-se pautar o desenvolvimento das tags
gr´ficas LabTeX sobre os prot´tipos do pacote PGF/TikZ por acreditar que ele prove desenhos
   a                           o
t´cnicos cuja estrutura n˜o foram encontradas em outras interfaces, durante a compara¸˜o
 e                         a                                                                ca
dos resultados desses diversos pacotes. No decorrer dos artefatos de PSI2594 ser˜o escolhidas
                                                                                  a
e apresentadas as estruturas dispon´  ıveis para ativa¸˜o do LabTeX, por meio espec´
                                                       ca                              ıfico do
SubVI-m´todo de concatena¸˜o de gr´ficos, conforme ´ apresentado durante a metodologia
          e                   ca        a                 e
em 5.2.




                                              17
4.4     Estruturas LabVIEW
4.4.1    Instrumenta¸˜o virtual
                    ca
Uso de software customizavel e m´dulos de hardware de medidas para criar sistemas de
                                    o
medi¸˜o definidos pelo usu´rio, chamados de ’instrumentos virtuais’.
     ca                   a
    Tradicionalmente sistemas de instrumenta¸˜o de hardware s˜o constitu´
                                               ca                 a            ıdos por compo-
nentes de hardware pr´-definidos como os mult´
                       e                        ımetros digitais e oscilosc´pios que s˜o com-
                                                                            o          a
pletamente espec´ıficos quanto a natureza do estimulo, an´lise, fun¸˜o ou medi¸˜o. Devido `s
                                                         a         ca            ca          a
suas fun¸˜es dedicadas de hardware, esses sistemas s˜o mais limitados em versatilidade do
         co                                           a
que sistemas de instrumenta¸˜o virtual
                            ca
    A diferen¸a prim´ria entre instrumenta¸˜o via hardware e instrumenta¸˜o virtual ´ que
              c      a                      ca                                ca          e
s˜o utilizados componentes de software para substituir uma grande quantidade de hardware.
 a
O software permite que complexos e custosos sistemas em hardware sejam substitu´       ıdos por
dispositivos computacionais j´ existentes, por exemplo conversores anal´gico-digitais podem
                             a                                            o
atuar como hardware complementar de um oscilosc´pio virtual.
                                                   o

4.4.2    LabVIEW
LabVIEW (abrevia¸˜o para Laboratory V irtual I nstrumentation E ngineering W orkbench) ´
                  ca                                                                   e
uma plataforma e ambiente de desenvolvimento para uma linguagem de programa¸˜o visual
                                                                               ca
da National Instruments. A linguagem gr´fica ´ denominada ’G’. Originalmente lan¸ada pela
                                       a    e                                   c
Apple Macintosh em 1986, LabVIEW ´ comumene utilizado para aquisi¸˜o de dados, controle
                                    e                              ca
de instrumentos e automa¸˜o industrial numa variedade de plataformas incluindo Microsoft
                         ca
Windows, UNIX, Linux e Mac OS. A ultima vers˜o do LabView ´ a 8.6.1 lan¸ada em fevereiro
                                              a             e           c
de 2009.

4.4.3    Programa¸˜o em Fluxo de Dados
                 ca
A linguagem de programa¸˜o utilizada no LabVIEW, tamb´m referenciada como ’G’, ´ uma
                          ca                                e                          e
linguagem de programa¸˜o de fluxo de dados. A execu¸˜o ´ determinada pela estrutura
                        ca                                 ca e
de um diagrama em bloco gr´fico (o c´digo fonte em LabVIEW) sobre o qual o progra-
                               a         o
mador conecta diferentes n´s de fun¸˜es por meio de conectores desenhados. Esses conectores
                           o       co
propagam vari´veis e qualquer n´ pode executar t˜o logo todas as entradas de dados tornem-
               a                 o                a
se dispon´
         ıveis. Desde que isso pode ser o caso de m´ltiplos n´s simultˆneos, a linguagem G ´
                                                    u        o        a                    e
inerentemente capaz de execu¸˜o paralela. Multi-processamento e hardware multi-threading
                              ca
´ automaticamente explorado pelo escalador de tarefas (built-in scheduler) o qual multiplexa
e
m´ltiplas threads do sistema operacional sobre os n´s prontos para execu¸˜o.
  u                                                  o                    ca

4.4.4    Programa¸˜o Gr´fica
                 ca    a
LabVIEW enla¸a a cria¸˜o de interfaces de usu´rio (denominada painel frontal) ao redor do
                c        ca                     a
ciclo de desenvolvimento.Programas e Subrotinas em LabVIEW s˜o denominadas ’instrumen-
                                                                 a
tos virtuais’ (Vis). Cada VI possui trˆs componentes: um diagrama em blocos, um painel
                                       e
frontal e um painel de conectores. O ultimo ´ usado para representar o VI dentro do diagrama
                                            e
em blocos de outro, chamando VIs.
    Controles e indicadores no painei frontal permitem que um operador insira dados ou ex-
traia dados de um instrumento virtual em execu¸˜o. Entretanto, o painel frontal tambem pode
                                               ca



                                              18
servir como uma interface programada. A abordagem gr´fica tamb´m permite que n˜o pro-
                                                             a         e                a
gramadores possam construir programas simplesmente arrastando e soltando representa¸˜es   co
virtuais de equipamento laboratorial com o qual eles j´ est˜o familiarizados.
                                                          a    a
    O ambiente de programa¸˜o do LabVIEW, que inclui exemplos e documenta¸˜o, torna
                                ca                                                   ca
simples a cria¸˜o de pequenas aplica¸˜es. Esse ´ um beneficio por um lado mas existe
                 ca                     co            e
tamb´m um certo perigo ao subestimar o conhecimento necess´rio para a boa qualidade
      e                                                              a
da programa¸˜o ’G’. Para algoritmos complexos ou c´digos de alta escala, ´ imporatnte que o
              ca                                        o                    e
programador possua um extenso conhecimento de sintaxes especiais de LabVIEW e a topolo-
gia do gerenciamento de mem´ria. o
    LabView ´ utilizado tamb´m para comunica¸˜o com hardware como aquisi¸˜o de dados,
               e                 e                ca                              ca
aquisi¸˜o visual e dispositivos de controle de movimento, e dispositivos GPIB, PXI, VXI, RS-
       ca
232 e RS-484. LabVIEW tambem possui ferramentas construidas para conectar sua aplica¸˜o     ca
a
` Web usando o LabVIEW Web Server e padr˜es de softtware como TCP/IP, redes e ActiveX.
                                               o
Como isso ´ poss´
            e       ıvel a cria¸˜o de aplica¸˜es distribu´
                               ca           co             ıdas, as quais comunicam-se por um
esquema cliente/servidor, e portanto facilitam a implementa¸˜o de c´digo paralelo inerente
                                                                  ca      o
ao c´digo em linguagem ’G’.
    o
    Usando LabVIEW pode-se criar, testar e medir, aquisi¸˜o de dados, instrumentos de
                                                                  ca
controle, analise de medidas e aplica¸˜es de gera¸˜o de relat´rios,entre outras aplica¸˜es.
                                      co           ca            o                     co

4.4.5   Analise de Viabilidade
Nesta se¸˜o estudamos as viabilidades do LabVIEW suas caracter´
          ca                                                           ısticas de orienta¸˜o a
                                                                                         ca
objeto, programa¸˜o multithreading, licen¸as, portabilidade, escalabilidade, e outros aspectos
                   ca                     c
relacionados.
    LabVIEW foi desenvolvido pela National Instruments h´ mais de 20 anos e est´ presente
                                                             a                       a
em diversos cen´rios, desde automa¸˜o industrial, aplica¸˜es biom´dicas, de sistemas em
                  a                   ca                    co        e
campo a sistemas embarcados, a grandes laborat´rios e empreendimentos. Seu fˆlego inicial
                                                  o                                o
surgiu entre os profissionais da ´rea de biol´gicas que buscavam uma maneira de descrever
                                a            o
suas necessidades com programa¸˜o r´pida e facil e resultados imediatos em tempo real,
                                  ca a
instrumenta¸ao.
             c
    O LabVIEW busca o caminho da conversao de ideias em realidade mas n˜o no paradigma
                                                                              a
da documenta¸˜o (como os que desenvolveram e desenvolvem as estruturas em LaTeX) e sim
               ca
no aspecto da representa¸˜o de suas necessidades instrumentais. Desse modo novamente esses
                          ca
dois componentes apresentam-se caminhando em paralelo no progresso cient´     ıfico e na medida
que as necessidades de um lado s˜o supridas pelas viabilidades do outro componente do par,
                                 a
est´ criado um caminho para a implementa¸˜o do projeto.
   a                                        ca
    Quanto a Programa¸˜o Modular e a natureza expansivel, novamente os dois componentes
                         ca
possuem similaridade quanto a encapsula¸˜o em pacotes, no caso do LabVIEW, seu poder
                                          ca
reside na natureza hier´rquica do VI. Depois de criar um VI, ele pode ser utilizado no bloco
                        a
diagrama de outro VI. N˜o h´ limite no n´mero de camadas na hierarquia.O uso de pro-
                            a a              u
grama¸˜o modular ajuda a gerir as altera¸˜es e depurar o diagrama em blocos rapidamente.
       ca                                 co
Um subVI corresponde a uma subrotina em texto baseado em linguagens de programa¸˜o,        ca
na forma de um bloco interno a outro VI.
    O painel frontal inclui controles e indicadores com aparˆncia familiar, o diagrama em
                                                               e
blocos inclui conex˜es, ´
                    o ıcones do painel frontal, fun¸˜es, possivelmente subVIs e outros objetos
                                                   co
do LabView tamb´m familiares e ´ possivel simplificar o diagrama em blocos de um VI pela
                    e             e
convers˜o de se¸˜es do diagrama em subVIs.
        a       co


                                             19
Outro benef´  ıcio do LabVIEW sobre outros ambientes de desenvolvimento ´ o extensivo   e
suporte para acessar hardwares de instrumenta¸˜o. Drivers e layers de abstra¸˜o para di-
                                                        ca                                   ca
versos titpos de instrumentos e vias s˜o inclu´
                                             a       ıdas ou est˜o dispon´
                                                                 a          ıveis para inclus˜o. Estes
                                                                                                 a
apresentam-se com conectores gr´ficos. Os layers de abstra¸˜o oferecem interfaces padr˜es de
                                       a                           ca                                o
software para comunica¸˜o com dispositivos de hardware.
                             ca
    Em termos de performance, LabVIEW inclui um compilador que produz c´digo nativo          o
para a CPU. O c´digo gr´fico ´ traduzido para linguagem de m´quina pela interpreta¸˜o da
                    o          a     e                                  a                           ca
sintaxe e pela compila¸˜o. A sintaxe LabVIEW ´ estritamente executada durante o processo
                           ca                           e
de edi¸˜o e compila¸˜o para a linguagem de m´quina quando ´ requisitada a execu¸˜o ou
       ca               ca                              a                e                          ca
durante o salvamento. Neste caso, o execut´vel e o c´digo fonte s˜o mesclados em um unico
                                                 a           o             a                          ´
arquivo. O execut´vel funciona com a ajuda do script de tempo de execu¸˜o do LabVIEW
                      a                                                              ca
que contem alguns c´digos pr´-compilados para desenvolver tarefas comuns que s˜o definidas
                        o          e                                                          a
pela Linguagem ’G’. O script em tempo de execu¸˜o reduz o tempo de compila¸˜o e tamb´m
                                                         ca                                ca            e
provˆ interface consistente para v´rios sistemas operacionais, sistemas gr´ficos, hardware,
     e                                    a                                           a
componentes, etc. O ambiente em tempo de execu¸˜o torna o c´digo port´vel atrav´s de
                                                             ca             o            a            e
plataformas.
    Outro ponto a ser destacado e que auxilia a viabilidade do projeto ´ a escalabilidade das
                                                                                  e
estruturas e a capacidade de encapsulamento, tanto do LaTeX por meio dos seus pacotes,
como no LabVIEW, por meio da sua estrutura de orientado a objeto do c´digo LabVIEW,   o
que permite reutiliza¸˜o de c´digo sem modifica¸˜es : t˜o logo os tipos de dados e sa´
                          ca        o                     co     a                                      ıdas
sejam consistentes, dois subVIs s˜o intercambi´veis.
                                       a              a
    Outro ponto em comum em ambas as estruturas ´ a Portabilidade tecnol´gica. L TEXe
                                                               e                           o         A
LabVIEW s˜o port´veis para quase todos os sistemas operacionais, guardam entre si ainda
             a         a
uma peculiariedade, do mesmo modo que as vers˜es atuais de LabVIEW possuem parte de
                                                          o
seu c´digo desenvolvido em sua pr´pria linguagem LabVIEW, o TEXtamb´m possui com-
      o                                    o                                            e
ponente de seu c´digo produzido diretamente em TEX. Isso ocorre pois o c´digo fonte do
                    o                                                                     o
programa atual TeX ´ escrito em ’WEB’, uma mistura de documenta¸˜o escrita em TeX com
                         e                                                     ca
subinstru¸˜es em Pascal o que garante a portabilidade.
          co
    Como no Latex, novamente a estrutura ´ suportada por v´rias bibliotecas com um enorme
                                                e                    a
n´mero de fun¸˜es para aquisi¸˜o de dados, gera¸˜o de sinais, matem´tica, estat´
  u             co                  ca                  ca                     a             ıstica, condi-
cionamento de sinais, analise, etc, elementos s˜o disponibilizados em pacotes LabVIEW junto
                                                    a
com numerosas interfaces gr´ficas. O n´mero de blocos matem´ticos avan¸ados para fun¸˜es
                                 a            u                        a            c                   co
como integra¸˜o, filtros e outras capacidades especializadas normalmente associadas com
               ca
captura de dados de sensores em hardware ´ imensa. OpenG, conhecido como LAVA Code
                                                  e
Repository (LAVAcr), oferece reposit´rio para uma larga faixa de aplica¸˜es e bibliotecas
                                             o                                       co
LabVIEW.
    Em adi¸˜o, LabVIEW inclui um programa componente baseado em texto chamado Math-
           ca
Script com funcionalidades adicionais para processamento de sinais, analise e matem´tica.             a
MathScript pode ser integrado com programa¸˜o gr´fica usando n´s de script e usa sintaxe
                                                     ca      a               o
geralmente compaivel com MATLAB.
    O Sistema de Desenvolvimento Profissional do LabVIEW permite a cria¸˜o de execut´veis
                                                                                     ca                a
’stand-alone’ execut´veis e bibliotecas compartilhadas, como DLL, pois LabVIEW ´ um com-
                        a                                                                       e
pilador real de 32-bits e o programa execut´vel resultante pode ser distribu´ um ilimitado
                                                 a                                    ıdo
n´mero de vezes.
  u
    O script em tempo de execu¸˜o e suas bibliotecas podem ser providenciados livremente
                                       ca
junto com o execut´vel.a
    Existe uma edi¸˜o do LabVIEW para Estudantes com baixo custo destinadas a estab-
                      ca

                                                    20
elecimentos de ensino para fins de aprendizagem. Existe tamb´m uma ativa comunidade de
                                                           e
usu´rios LabVIEW que comunicam atrav´s de v´rios grupos de e-mail e Internet f´runs.
    a                                   e     a                               o




                                         21
5     Materiais e M´todos
                   e
Nesta se¸˜o apresentamos a metodologia de execu¸˜o do projeto e quest˜es quanto ` infra-
         ca                                        ca                    o           a
estrutura, os materiais e os meios necess´rios para sua implementa¸˜o e as abordagens para
                                         a                         ca
assimila¸˜o das tecnologias. Na sequˆncia estabelecemos o plano de trabalho para o projeto, e
        ca                          e
apresentamos os componentes desenvolvidos, o cronograma definitivo e os resultados obtidos
frente aos testes efetuados.

5.1     Metodologia
O primeiro passo foi o ensaio de documentos ativos que servissem de modelos para aplica¸˜o   ca
dos teste de conceito. Para cada documento, foram ensaiadas express˜es que precisariam ser
                                                                        o
mapeadas e processadas, acompanhadas das especifica¸˜es dos valores ou conjuntos de valores
                                                        co
de seus parˆmetros e vari´veis.
              a             a
     As express˜es ativas (calculadas numericamente ou processadas graficamente) devem ser
                  o
identificadas no corpo do documento, bem como as especifica¸˜es de seus valores, atrav´s de
                                                                co                         e
marcadores (TAGS) que possam ser interpretados pelo processador LaTeX e sejam identi-
fic´veis pelo LabVIEW.
   a
     Inicialmente o texto escrito em LaTeX contendo esses itens marcados ´ lido pelo LabVIEW,
                                                                          e
que se vale dos TAGS como guias para filtrar as express˜es e valores de interesse, gerando
                                                            o
para cada express˜o uma referˆncia de posi¸˜o no texto (Anexo 05 9).
                      a           e          ca
     A seguir, um parser, implementado dentro do LabVIEW como sub-vi do mesmo, interpreta
as express˜es filtradas e prepara uma tabela de execu¸˜o (Anexo 06 9) . Esta tabela cont´m em
            o                                         ca                                 e
cada linha os resultados fornecidos pelo parser para cada express˜o identificada no documento,
                                                                  a
acompanhada de um vetor de valores a serem aplicados ` mesma. Em seguida, essa tabela
                                                            a
´ lida iterativamente e as entradas s˜o calculadas uma a uma, montando-se uma tabela de
e                                       a
sa´ que cont´m os resultados postos em correspondˆncia com as referˆncias de posi¸˜o de
  ıda             e                                      e                 e             ca
cada express˜o no texto (Anexos 07 9).
                a
     Finalmente, a tabela de resultados ´ desmembrada e casada com o texto, gerando-se um
                                          e
novo documento LaTeX contendo os resultados (Anexo 17 9). O novo documento ´ ent˜o      e      a
processado pelo LaTeX, gerando-se a sua renderiza¸˜o gr´fica (Anexo 19 9).
                                                     ca     a
     Seguindo este roteiro foram criados de forma modular sub-instrumentos virtuais em Lab-
VIEW relacionados `s opera¸˜es que comp˜em essa tabela de instru¸˜es e associados a cada
                        a       co           o                         co
um desses blocos l´gicos.
                      o
     Foi ent˜o desenvolvida a aplica¸ao principal em instrumento virtual (.vi) (Anexo 01.d 9)
             a                        c˜
que, dado o arquivo/roteiro de entrada em padr˜o l´tex,ou via entrada por linha de comando, e
                                                a a
com o diagrama em blocos correspondente (Anexo 01 9) para o processamento do documento,
torna autom´tico o roteiro proposto de acordo com os dados de entradas inseridos.
                a
     Esse instrumento virtual possui um Painel de Controle (Anexo 01.c 9), chamado de in-
terface do usu´rio onde o usu´rio carrega o documento ao mesmo tempo em que processa
                  a               a
os c´lculos num´ricos e gera os gr´ficos associados, gerando ao fim do processo um relat´rio
     a              e                a                                                       o
completo do documento.

5.1.1    Metodologia das Tags e C´digos de Opera¸˜o
                                 o              ca
Na integra¸˜o dessas tecnologias, parte consider´vel do trabalho ser´ na defini¸˜o dos coman-
          ca                                    a                   a         ca
dos e macros da biblioteca LabTeX, esses comandos devem ser compreendidos pelos instru-
mentos virtuais (subVIs) sob o aspecto de instru¸˜es l´gicas (como cria¸˜o e atribui¸˜o de
                                                  co    o                 ca           ca

                                              22
vari´veis, c´lculos aritm´ticos, entre outras, como pr´-classificado na Planilha de Mapeamento
    a       a            e                             e
de M´todos-SubVIs a seguir, mas devem ser ignorados pela gera¸˜o de layout na compila¸˜o
      e                                                            ca                       ca
do documento .tex correspondente.
    A estrat´gia para isso ´ a utiliza¸ao de redefini¸˜o de comandos e macros 4.1.8,e a defini¸˜o
             e             e          c˜            ca                                      ca
de novos, que se utilizem das defini¸˜es de layout dos comandos atuais mas que possam
                                         co
extendˆ-los de modo a serem reconhecidos como ativos pelo LabVIEW.
        e

5.1.2   Cronograma




                              Figura 6: Cronograma Efetuado




                                              23
5.2   Desenvolvimento: Objetos e Componentes
Classes Labview suportam a orienta¸ao a objeto, o que ser´ demasiado util na implementa¸˜o
                                     c˜                      a           ´                 ca
componentizada deste projeto com subVIs espec´     ıficos para cada uma das etapas do proces-
sador LabTeX.Esses subVIs-m´todos compartilhar˜o o acesso ao mesmo objeto definido pela
                                e                    a
classe documento ativo (’activeDocument’) que define as propriedades necess´rias ao ob-
                                                                                   a
jeto ’documento ativo’ para a identifica¸˜o das instru¸˜es, tipos de operadores, parˆmetros,
                                         ca              co                           a
vari´veis, constantes , posi¸˜es e todo vetor de informa¸˜es que precisar ser compartilhado
     a                      co                              co
e manipulado pelos subVIs do projeto, que neste escopo da orienta¸˜o a objeto, assumem o
                                                                     ca
papel de m´todos e apenas por meio deles ser´ poss´ manipular os dados da classe privada.
            e                                 a       ıvel
     O objeto documentoativo (Anexo 21 9) tem sua classe definida pelas propriedades que
definem o objeto. Essas propriedades s˜o compartilhadas por cada bloco componente do
                                          a
processamento desde a etapa de captura das tags (Anexo 05 9) onde s˜o utilizadas as pro-
                                                                           a
priedades startIndexTag, endIndexTag (para as coordenadas das tags) e activeTag para o
pr´prio teor da instru¸˜o, passando pela etapa de fetch (Anexo 06 9), na qual essas Tags s˜o
   o                   ca                                                                   a
processadas e realimentam os parˆmetros argId (contador), argC (nome do argumento), argV
                                  a
(valor do argumento), argT (tipo da tag) e argDim (quantidade de tags ativas presentes no
documento).
     Na sequencia o bloco de execu¸˜o (Anexo 07 9) compartilha do objeto processando os
                                    ca
argumentos e colocando os resultados das express˜es em resultTag (array de resultados) e
                                                     o
por fim o bloco de substitui¸˜o (Anexo 17 9), acessa novamente a classe para substituir nas
                             ca
posi¸˜es de startIndexTag e endIndexTag o conte´do do vetor resultTag realizado na etapa
      co                                            u
anterior.
     O resultado geral do documento ´ salvo na propriedade resultLatex que ´ acessado pelo
                                      e                                         e
bloco de renderiza¸˜o (Anexo 19 9) e de exibi¸˜o do texto na aplica¸˜o principal (Anexo 18
                   ca                           ca                    ca
9).
     Todos os blocos desenvolvidos no projeto s˜o apresentados a seguir, sua listagem completa
                                               a
est´ disponibilizada no Anexo 20 9 bem como a listagem de suas dependencias, blocos nativos
    a
disponibilizados nas bibliotecas b´sicas do LabVIEW (Anexo 20.b 9
                                  a




                                             24
5.2.1   Aplica¸˜o Principal
              ca
A partir desta subse¸˜o e nas demais, passamos a descrever a engenharia do sistema por
                       ca
meio da explica¸˜o do fluxo dos blocos e de suas funcionalidades e modos de opera¸˜o, que
                 ca                                                                     ca
corresponde ao desenvolvimento componentizado proposto.
     O instrumento virtual Main.vi (Anexo 01 9) corresponde ` aplica¸˜o principal, na parte
                                                               a        ca
superior a ´rea para digita¸˜o dos comandos e os bot˜es para sele¸˜o de arquivo e p´gina.
             a                  ca                      o            ca                    a
Abaixo o resultado renderizado e mais abaixo o resultado.tex completo em cinza (Anexo 01.d
9).
     No diagrama em blocos da aplica¸˜o principal (Anexo 01 9) est˜o envolvidos os diversos
                                          ca                         a
SubVIs correlacionados que s˜o descritos de acordo com sua apari¸˜o no contexto dessa
                                    a                                   ca
descri¸˜o funcional. Na se¸˜o de 9 est˜o os diagramas dos blocos componentes, bem como
        ca                     ca           a
Painel Frontal da Aplica¸˜o e de alguns subcomponentes, guiando essa descri¸˜o funcional.
                            ca                                                  ca
     O primeiro la¸o (` esquerda) da aplica¸˜o ´ respons´vel pelo controle da interface e envio
                  c a                           ca e     a
de comandos, sele¸˜o de entrada (’Arquivo’ ou ’Linha de comando’), e troca de p´ginas. O
                    ca                                                                a
programa executa enquanto o usu´rio n˜o apertar ’Stop’ e, ao clicar em Carregar, o usu´rio
                                      a      a                                                a
dispara o processo de execu¸˜o do documento ativo.
                                ca
     Para trocar de p´gina o usuario deve selecionar seu n´mero e clicar no bot˜o carregar
                       a                                    u                       a
correspondente (Anexo 01.c 9). O bloco subsequente processa as alternativas e, entre eles,
est´ o subVI ’getInput’ (Anexo 02 9), que recebe os caminhos dos arquivos de cabe¸alhos e
    a                                                                                   c
includes .tex do sistema e o caminho do arquivo de entrada selecionado pelo usu´rio, bem
                                                                                      a
como o texto digitado na linha de comando, e os encaminha para escolha de entrada de acordo
com a op¸˜o escolhida no bot˜o [T:File / F: CommandLine], ou seja, posi¸˜o Verdadeiro para
           ca                     a                                        ca
entrada em arquivo, e posi¸˜o Falso para entrada por texto em linha de comando.
                               ca
     Quando o respons´vel por sair do la¸o de controle for o bot˜o ’P´gina’, a subrotina do
                        a                     c                   a      a
Anexo 01.b (9) ´ executada, nela o subVI ’ChangePag’(Anexo 03 9) carrega o resultado
                  e
previamente processado em outra p´gina. O conhecimento sobre o n´mero de p´ginas ocorre
                                        a                             u           a
no momento do processamento do LaTeX na etapa de renderiza¸˜o (Anexo 19 9) quando o
                                                                  ca
aplicativo auxiliar Ghostscript 5.3 ´ chamado pelo sistema.
                                       e
     Quando o bot˜o ’P´gina’ ´ selecionado com um n´mero de p´gina igual ao atual, nada
                   a      a        e                    u          a
            ´
acontece. E possivel tamb´m iniciar novo processamento e iniciar a visualiza¸˜o pela p´gina
                              e                                                ca           a
na qual se est´ ou na qual se deseja. Quando LTChangePag.vi ´ acionado, recebe o valor
               a                                                   e
num´rico da p´gina selecionada e efetua a troca da imagem pelo arquivo que fora gerado
      e         a
durante a compila¸˜o. O formato adotado ´ o JPEG e zoom de 50%.
                    ca                           e
     Caso o ato de sair do la¸o de controle da aplica¸˜o principal tenha sido ocasionado pelo
                                c                    ca
bot˜o ’Carregar’, este levar´ o sinal Verdadeiro para o macro-bloco seguinte que ´ a sequencia
    a                          a                                                  e
b´sica de processamento propriamente dita.
  a




                                              25
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView
LabTex - Interface entre LaTeX e LabView

Mais conteúdo relacionado

Mais procurados

Engenharia Elétrica
Engenharia ElétricaEngenharia Elétrica
Engenharia ElétricaDu Mucc
 
Documentation - LibrarySorting
Documentation - LibrarySortingDocumentation - LibrarySorting
Documentation - LibrarySortingMichel Alves
 
Apostila r gen melhor
Apostila r   gen melhorApostila r   gen melhor
Apostila r gen melhorGino Andrade
 
Python
PythonPython
PythonTiago
 
Shell script
Shell scriptShell script
Shell scriptTiago
 
Publicado ruby on-rails-rr71
Publicado ruby on-rails-rr71Publicado ruby on-rails-rr71
Publicado ruby on-rails-rr71Fernando Palma
 
Tese modelo-icmc (1)
Tese modelo-icmc (1)Tese modelo-icmc (1)
Tese modelo-icmc (1)SEED PR
 
Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Caique Moretto
 
K19 k03-sql-e-modelo-relacional
K19 k03-sql-e-modelo-relacionalK19 k03-sql-e-modelo-relacional
K19 k03-sql-e-modelo-relacionalJean Lopes
 
Desenvolvimento-web-com-html-css-e-javascript
Desenvolvimento-web-com-html-css-e-javascriptDesenvolvimento-web-com-html-css-e-javascript
Desenvolvimento-web-com-html-css-e-javascriptManuel Fernando
 
K19 k02-desenvolvimento-web-com-html-css-e-javascript
K19 k02-desenvolvimento-web-com-html-css-e-javascriptK19 k02-desenvolvimento-web-com-html-css-e-javascript
K19 k02-desenvolvimento-web-com-html-css-e-javascriptJandirlei Feliciano
 
K19 k02-desenvolvimento-web-com-html-css-e-javascript
K19 k02-desenvolvimento-web-com-html-css-e-javascriptK19 k02-desenvolvimento-web-com-html-css-e-javascript
K19 k02-desenvolvimento-web-com-html-css-e-javascriptAnderson Oliveira
 
Caelum java-testes-xml-design-patterns-fj16
Caelum java-testes-xml-design-patterns-fj16Caelum java-testes-xml-design-patterns-fj16
Caelum java-testes-xml-design-patterns-fj16Caique Moretto
 

Mais procurados (19)

Engenharia Elétrica
Engenharia ElétricaEngenharia Elétrica
Engenharia Elétrica
 
Curso estatistica descritiva no r
Curso   estatistica descritiva no rCurso   estatistica descritiva no r
Curso estatistica descritiva no r
 
Documentation - LibrarySorting
Documentation - LibrarySortingDocumentation - LibrarySorting
Documentation - LibrarySorting
 
Guiao aluno pic
Guiao aluno picGuiao aluno pic
Guiao aluno pic
 
Apostila r gen melhor
Apostila r   gen melhorApostila r   gen melhor
Apostila r gen melhor
 
Python
PythonPython
Python
 
Shell script
Shell scriptShell script
Shell script
 
Publicado ruby on-rails-rr71
Publicado ruby on-rails-rr71Publicado ruby on-rails-rr71
Publicado ruby on-rails-rr71
 
Tese modelo-icmc (1)
Tese modelo-icmc (1)Tese modelo-icmc (1)
Tese modelo-icmc (1)
 
Apostila tex
Apostila texApostila tex
Apostila tex
 
Estrutura de dados 2
Estrutura de dados 2Estrutura de dados 2
Estrutura de dados 2
 
Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71Caelum ruby-on-rails-rr71
Caelum ruby-on-rails-rr71
 
K19 k03-sql-e-modelo-relacional
K19 k03-sql-e-modelo-relacionalK19 k03-sql-e-modelo-relacional
K19 k03-sql-e-modelo-relacional
 
Desenvolvimento-web-com-html-css-e-javascript
Desenvolvimento-web-com-html-css-e-javascriptDesenvolvimento-web-com-html-css-e-javascript
Desenvolvimento-web-com-html-css-e-javascript
 
Php
PhpPhp
Php
 
K19 k02-desenvolvimento-web-com-html-css-e-javascript
K19 k02-desenvolvimento-web-com-html-css-e-javascriptK19 k02-desenvolvimento-web-com-html-css-e-javascript
K19 k02-desenvolvimento-web-com-html-css-e-javascript
 
K19 k02-desenvolvimento-web-com-html-css-e-javascript
K19 k02-desenvolvimento-web-com-html-css-e-javascriptK19 k02-desenvolvimento-web-com-html-css-e-javascript
K19 k02-desenvolvimento-web-com-html-css-e-javascript
 
Apostila latex
Apostila latexApostila latex
Apostila latex
 
Caelum java-testes-xml-design-patterns-fj16
Caelum java-testes-xml-design-patterns-fj16Caelum java-testes-xml-design-patterns-fj16
Caelum java-testes-xml-design-patterns-fj16
 

Destaque

Apresentação para Disciplina Gestão de Projetos
Apresentação para Disciplina Gestão de Projetos Apresentação para Disciplina Gestão de Projetos
Apresentação para Disciplina Gestão de Projetos Greice Marques
 
Festa de Formatura
Festa de FormaturaFesta de Formatura
Festa de FormaturaMarco Coghi
 
Formatura Projeto Aluno Guia
Formatura Projeto Aluno GuiaFormatura Projeto Aluno Guia
Formatura Projeto Aluno Guiamidiasvidal
 
GESTÃO DE Projeto formatura 2015
GESTÃO DE Projeto formatura 2015GESTÃO DE Projeto formatura 2015
GESTÃO DE Projeto formatura 2015gelcine Angela
 
Implementation of-mw-link-and-bts
Implementation of-mw-link-and-btsImplementation of-mw-link-and-bts
Implementation of-mw-link-and-btsMusfiqur Rahman
 
Orçamento megaeventus
Orçamento megaeventusOrçamento megaeventus
Orçamento megaeventuscomissaofarec
 
Miniprojeto para trabalho escolar
Miniprojeto para trabalho escolarMiniprojeto para trabalho escolar
Miniprojeto para trabalho escolarVitrine Trabalhos
 
5.+roteiro+para+o+cerimonial+de+colação+de+grau
5.+roteiro+para+o+cerimonial+de+colação+de+grau5.+roteiro+para+o+cerimonial+de+colação+de+grau
5.+roteiro+para+o+cerimonial+de+colação+de+grauValentin Viana
 

Destaque (14)

Apresentação para Disciplina Gestão de Projetos
Apresentação para Disciplina Gestão de Projetos Apresentação para Disciplina Gestão de Projetos
Apresentação para Disciplina Gestão de Projetos
 
Festa de Formatura
Festa de FormaturaFesta de Formatura
Festa de Formatura
 
Portais Redes Conectividade
Portais Redes ConectividadePortais Redes Conectividade
Portais Redes Conectividade
 
A infoera - João Zuffo
A infoera  - João ZuffoA infoera  - João Zuffo
A infoera - João Zuffo
 
Formatura Projeto Aluno Guia
Formatura Projeto Aluno GuiaFormatura Projeto Aluno Guia
Formatura Projeto Aluno Guia
 
William Strafacce Soares
William Strafacce SoaresWilliam Strafacce Soares
William Strafacce Soares
 
O Grande Dia
O Grande DiaO Grande Dia
O Grande Dia
 
GESTÃO DE Projeto formatura 2015
GESTÃO DE Projeto formatura 2015GESTÃO DE Projeto formatura 2015
GESTÃO DE Projeto formatura 2015
 
Implementation of-mw-link-and-bts
Implementation of-mw-link-and-btsImplementation of-mw-link-and-bts
Implementation of-mw-link-and-bts
 
Orçamento megaeventus
Orçamento megaeventusOrçamento megaeventus
Orçamento megaeventus
 
Miniprojeto para trabalho escolar
Miniprojeto para trabalho escolarMiniprojeto para trabalho escolar
Miniprojeto para trabalho escolar
 
Apresentacao projeto de casamento
Apresentacao projeto de casamentoApresentacao projeto de casamento
Apresentacao projeto de casamento
 
Projetos Escolares (Adilson Motta)
Projetos Escolares (Adilson Motta)Projetos Escolares (Adilson Motta)
Projetos Escolares (Adilson Motta)
 
5.+roteiro+para+o+cerimonial+de+colação+de+grau
5.+roteiro+para+o+cerimonial+de+colação+de+grau5.+roteiro+para+o+cerimonial+de+colação+de+grau
5.+roteiro+para+o+cerimonial+de+colação+de+grau
 

Semelhante a LabTex - Interface entre LaTeX e LabView

Semelhante a LabTex - Interface entre LaTeX e LabView (20)

Apostila latex
Apostila latexApostila latex
Apostila latex
 
Manual do Kile
Manual do KileManual do Kile
Manual do Kile
 
Apostila latexpdf
Apostila latexpdfApostila latexpdf
Apostila latexpdf
 
Ncl e Lua - desenvolvendo aplicações interativas para tv digital
Ncl e Lua - desenvolvendo aplicações interativas para tv digitalNcl e Lua - desenvolvendo aplicações interativas para tv digital
Ncl e Lua - desenvolvendo aplicações interativas para tv digital
 
Apostila
ApostilaApostila
Apostila
 
Latex tutorial
Latex tutorialLatex tutorial
Latex tutorial
 
Apostila latex marcio_nascimento_da_silva_uva_ce_brasil
Apostila latex marcio_nascimento_da_silva_uva_ce_brasilApostila latex marcio_nascimento_da_silva_uva_ce_brasil
Apostila latex marcio_nascimento_da_silva_uva_ce_brasil
 
Conceitos básicos de Software R
Conceitos básicos de Software RConceitos básicos de Software R
Conceitos básicos de Software R
 
Html
HtmlHtml
Html
 
Dissertação Mestrado
Dissertação MestradoDissertação Mestrado
Dissertação Mestrado
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
Introdução ao SciLab
Introdução ao SciLabIntrodução ao SciLab
Introdução ao SciLab
 
20220093 scilab-manual
20220093 scilab-manual20220093 scilab-manual
20220093 scilab-manual
 
Poojava
PoojavaPoojava
Poojava
 
História da criptografia
História da criptografiaHistória da criptografia
História da criptografia
 
Ldap
LdapLdap
Ldap
 
Pascal
PascalPascal
Pascal
 
Guia Rápido Da Linguagem Pascal
Guia Rápido Da Linguagem PascalGuia Rápido Da Linguagem Pascal
Guia Rápido Da Linguagem Pascal
 
Apostila de latex
Apostila de latexApostila de latex
Apostila de latex
 
Taxonomias
TaxonomiasTaxonomias
Taxonomias
 

LabTex - Interface entre LaTeX e LabView

  • 1. PSI2594 - Projeto de Formatura II : LabTex - Interface entre LaTeX e LabView Relat´rio Final. o Aluno: Fernando J. Capeletto Neto (No USP 2370518) (fc@usp.br) Orientador: Jo˜o Eduardo Kogler Jr. (kogler@lsi.usp.br) a 30 de novembro de 2009
  • 2. Sum´rio a 1 Objetivos 4 2 Introdu¸˜o ca 4 3 Justificativas 5 4 O Processador LabTEX 6 4.1 Estruturas L TEX . . . . . . . . . . . . . . . . . . . . . A . . . . . . . . . . . . . 6 4.1.1 Formata¸˜o (Typesetting) . . . . . . . . . . . . ca . . . . . . . . . . . . . 6 4.1.2 TEX Typesetting system . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4.1.3 Linguagens de Macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4.1.4 L TEX . . . . . . . . . . . . . . . . . . . . . . . A . . . . . . . . . . . . . 7 4.1.5 Sistema de Formata¸˜o L TEX . . . . . . . . . . ca A . . . . . . . . . . . . . 8 4.1.6 Apanhado Geral da Estrutura LaTeX. . . . . . . . . . . . . . . . . . . 10 4.1.7 Classes e Pacotes L TEX . . . . . . . . . . . . . A . . . . . . . . . . . . . 11 4.1.8 Ajustando comandos existentes . . . . . . . . . . . . . . . . . . . . . . 11 4.1.9 Analise de Viabilidade TEXe L TEX . . . . . . . A . . . . . . . . . . . . . 12 4.2 AMS-L TEX . . . . . . . . . . . . . . . . . . . . . . . . A . . . . . . . . . . . . . 13 4.2.1 Classes de opera¸˜o dos s´ ca ımbolos matem´ticos a . . . . . . . . . . . . . 14 4.3 Gr´ficos LabTeX: Recursos pesquisados . . . . . . . . a . . . . . . . . . . . . . 15 4.3.1 Pacotes adotados: PGF/TikZ e xcolor . . . . . . . . . . . . . . . . . . 15 4.4 Estruturas LabVIEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.4.1 Instrumenta¸˜o virtual . . . . . . . . . . . . . . ca . . . . . . . . . . . . . 18 4.4.2 LabVIEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.4.3 Programa¸˜o em Fluxo de Dados . . . . . . . . ca . . . . . . . . . . . . . 18 4.4.4 Programa¸˜o Gr´fica . . . . . . . . . . . . . . . ca a . . . . . . . . . . . . . 18 4.4.5 Analise de Viabilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5 Materiais e M´todos e 22 5.1 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 5.1.1 Metodologia das Tags e C´digos de Opera¸˜o . o ca . . . . . . . . . . . . . 22 5.1.2 Cronograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5.2 Desenvolvimento: Objetos e Componentes . . . . . . . . . . . . . . . . . . . . 24 5.2.1 Aplica¸˜o Principal . . . . . . . . . . . . . . . . ca . . . . . . . . . . . . . 25 5.2.2 Busca (retrieve) e Sele¸˜o (fetch) . . . . . . . . ca . . . . . . . . . . . . . 26 5.2.3 Preparo e Execu¸˜o das Tags . . . . . . . . . . ca . . . . . . . . . . . . . 27 5.2.4 Preparo e Execu¸˜o das Express˜es Aritm´ticas ca o e . . . . . . . . . . . . . 29 5.2.5 Blocos de Apoio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.2.6 Gera¸˜o dos resultados . . . . . . . . . . . . . . ca . . . . . . . . . . . . . 32 5.3 Recursos Auxiliares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.4 Testes e Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.4.1 original.tex : C´digo Tex . . . . . . . . . . . . o . . . . . . . . . . . . . 34 5.4.2 original.pdf : Visualiza¸˜o . . . . . . . . . . . . ca . . . . . . . . . . . . . 38 5.4.3 resultado.tex : C´digo Tex . . . . . . . . . . . o . . . . . . . . . . . . . 42 5.4.4 resultado.pdf : Visualiza¸˜o . . . . . . . . . . . ca . . . . . . . . . . . . . 49 2
  • 3. 6 Objetivos 58 7 Conclus˜o Parcial a 58 8 O Futuro do projeto 59 9 Anexos 61 3
  • 4. 1 Objetivos Desenvolver ferramenta de interface para LabVIEW que permitir´ tornar execut´veis ex- a a press˜es selecionadas e inicializadas dentro de um texto em L TEX, renderizando resultados e o A gr´ficos gerados pelo LabVIEW dentro do documento L TEX, visando a cria¸˜o de arquivos a A ca t´cnicos ativos. e 2 Introdu¸˜o ca As atividades nos campos da ciˆncia e tecnologia se estabelecem e renovam-se por meio da e pesquisa de novos m´todos e conceitos. Em conseq¨ˆncia disto h´ tamb´m a necessidade de e ue a e documentar e divulgar os resultados e os avan¸os.c O projeto busca criar ponte facilitadora a essas atividades no campo da engenharia e das ciˆncias. O objetivo ´ fazer a ponte tecnol´gica entre duas estruturas largamente uti- e e o lizadas em cada um desses campos, que por suas caracter´ ısticas, oferecem caminho l´gico da o documenta¸˜o cient´ ca ıfica ao experimento e dele novamente ` documenta¸˜o. a ca Ser´ desenvolvido portanto um processador l´xico para L TEX, implementado em instru- a e A mento virtual de LabVIEW, com recursos e metodologias que ser˜o descritos a seguir e com a auxilio da cria¸˜o de um pacote de biblioteca L TE ca A Xcom a defini¸˜o das tags que transmitir˜o ca a as instru¸˜es adequadas ao funcionamento do processador. co L TEXtem sido a via mais universalmente aceita e utilizada para a documenta¸˜o cient´ A ca ıfica nas ultimas trˆs d´cadas enquanto que no ˆmbito da experimenta¸˜o cient´ ´ e e a ca ıfica, controle e teste industriais, o LabVIEW tem sido amplamente utilizado h´ 22 anos e seu uso continua a crescendo. Se por um lado o L TEX´ ferramenta ub´ A e ıqua e de f´cil uso para se expressar o pensa- a mento cient´ ıfico, o LabVIEW mostra-se de modo complementar como uma ferramenta que idealmente facilita a transforma¸˜o desse pensamento criativo em aplica¸˜es reais. ca co Por meio dessa interface de softwares uniremos processamento ao L TEX(ferramenta de A documenta¸˜o) e documenta¸˜o ao LabVIEW, ferramenta de processamento.No decorrer ca ca deste trabalho ser˜o descritas as caracter´ a ısticas de ambas as estruturas, como s˜o orientadas a e tipadas de modo que permitem essa componentiza¸˜o, destacando seus aspectos comple- ca mentares e definindo as estrat´gias e planos de trabalho para a execu¸˜o do projeto em e ca PSI2594, como ser´ feita essa ponte tecnol´gica, necessidades que motivam este projeto, a o aspectos inovadores e vantagens na escolha dessas estruturas (L TEXe LabView) como seus A componentes. 4
  • 5. 3 Justificativas Existe a necessidade de investigar o conhecimento documentado do mesmo modo que existe a necessidade de documentar o conhecimento adquirido, este projeto atua nessa m˜o de via a dupla. Existem no mercado ferramentas de software que se prop˜e a realizar em parte, o objetivo o desse projeto, no tocante ao processamento de simula¸˜es.Uma referencia ´ o Mathcad - co e Enginering Calculation Software da Mathsoft, um software propriet´rio e que ´ um h´ a e ıbrido de documenta¸˜o t´cnica com c´lculo num´rico e simb´lico que permite explorar problemas, ca e a e o formular id´ias, analizar dados, modelar e verificar cen´rios, determinar solu¸˜es; bem como e a co tamb´m documentar, apresentar e comunicar resultados. Existem desvantagens no uso do e Mathcad e entre elas est´ a dificuldade de integra¸˜o com dispositivos de hardware, o fato de a ca ter seu funcionamento sustentado em macros, o que faz com que o software seja interpretado e n˜o compilado, gerando problemas com execu¸˜o em tempo real. Existem outros softwares a ca como o Maple da Maplesoft ou o Mathematica da Wolfram, por´m s˜o mais limitados tamb´m e a e fogem da possibilidade de intera¸˜o com opera¸˜es em tempo real. ca co O projeto oferece uma alternativa que se baseia em c´digo aberto na interface de docu- o menta¸˜o (TEX) e embora use um software propriet´rio na interface de processamento (Lab- ca a VIEW) ´ ferramenta que tem sido das melhores e mais difundidas plataformas de desen- e volvimento de aplica¸˜es cient´ co ıficas e tecnol´gicas e ´ existente na escola. S˜o plataformas o e a suficientemente difundidas para que um trabalho nessas justifique utiliza¸˜o no escopo desse ca projeto, embora haja conhecimento da existˆncia de outras ferramentas e que no caso de uma e implementa¸˜o comercial este seja um t´pico a ser explorado. ca o Em disciplinas da gradua¸˜o os alunos da Escola Polit´cnica tem utilizado o LabVIEW ca e nos experimentos de laborat´rios e em pesquisas, em projetos de aplica¸˜o nas aulas e em o ca projetos de formatura, desenvolvidos no curso de engenharia el´trica, entre eles onde esse e projeto agrega. De maneira geral, o LabVIEW est´ dispon´a ıvel para utiliza¸˜o em todo o ca campus da Universidade de S˜o Paulo (Campus Capital) por meio de parceria da Universidade a com o servi¸o de rela¸˜es acadˆmicas da National Instruments (NI). c co e Este projeto justifica-se na necessidade de avan¸o nos processos documentacionais rela- c cionados ` instrumenta¸˜o virtual e que auxiliem sua reprodu¸˜o com maior facilidade e a ca ca eficiˆncia. E supre necessidades quando oferece a alternativa de maneira colaborativa e in- e tegrada aos padr˜es das comunidades difundidas. o Um car´ter inovador identificado ´ a gera¸˜o de documentos ativos por meio da cria¸˜o de a e ca ca um arquivo t´cnico que pode ser dito ’vivo’ porque possui existˆncia ativa dentro do escopo e e das vari´veis simuladas ou adquiridas em tempo de execu¸˜o. a ca 5
  • 6. 4 O Processador LabTEX Neste t´pico abordaremos o contexto no qual se enquadra o projeto a ser desenvolvido do o ponto de vista t´cnico/cient´ e ıfico, descrevendo as caracter´ ıstitcas principais dos elementos que o envolvem, ou seja, os objetos constituintes, tanto em estrutura como em componentes. 4.1 Estruturas L TEX A 4.1.1 Formata¸˜o (Typesetting) ca A formata¸˜o envolve a apresenta¸˜o do material textual em forma gr´fica em papel ou algum ca ca a outro meio de comunica¸˜o. Antes do advento da publica¸˜o por meio de desktops, tipografia ca ca de material impresso foi produzida por compositores de trabalhos manuais, e mais tarde por m´quinas. a O princ´ ıpio geral da tipografia independente do contexto permanece sendo a composi¸˜o ca de glifos em linhas para formar organismo: assunto, t´ ıtulos, legendas e outros peda¸os de c texto que comp˜em uma imagem de p´gina, e imprimir ou transferir a imagem da p´gina o a a para o papel ou outras m´ ıdias. Durante a ´poca da impress˜o tipogr´fica, tipos m´veis foram compostos ` m˜o para e a a o a a cada p´gina. Caracteres de metal eram compostos em palavras e linhas de texto e fortemente a ligadas entre si para criar a imagem de uma p´gina denominada ’forma’, com todas as faces a das letras possuindo o mesmo tamanho para formar uma superf´ do mesmo tipo. A forma ıcie era montada em uma prensa com tinta e a impress˜o feita em papel. a Com a evolu¸˜o dos tipos de tipografia acompanhando a era digital , a disponibilidade de ca cria¸˜o de fontes por meio de procedimentos mais simples e baratos ou gratuitos, abriu um ca fosso entre designers profissionais e amadores. Com o advento do PostScript, complementado pelo formato de arquivo PDF, providenciou-se um m´todo universal de verifica¸˜o de desenhos e ca e esquemas e leg´ na maioria dos computadores e sistemas operacionais. ıvel O sistema TEX[11], desenvolvido por Donald E. Knuth, no final dos anos 70, ´ outro e amplo e poderoso sistema de tipografia automatizada que estabeleceu padr˜es elevados, es- o pecialmente para tipografia de matem´tica. Sobre ele abordamos na seq¨ˆncia. a ue 4.1.2 TEX Typesetting system Comandos TEXnormalmente come¸am com uma barra invertida (’’) e s˜o agrupados com c a chaves. Entretanto, quase todas as propriedades sint´ticas do TEXpodem ser modificadas a instantˆneamente o que torna suas entradas complexas para analizar por qualquer sistema a a n˜o ser por ele pr´prio. a o TEX´ uma linguagem baseada em macros e s´ e ımbolos: v´rios comandos, incluindo defini¸˜es a co de usu´rio, s˜o expandidas instantˆneamente at´ que se encontrem apenas s´ a a a e ımbolos inex- pans´ıveis remanescentes enquanto s˜o executados. a A expans˜o pr´pria ´ praticamente livre de efeitos colaterais, a recurs˜o de macros n˜o a o e a a onera em mem´ria e construtores do tipo if/else est˜o dispon´ o a ıveis. Isso torna TEXuma lin- guagem de Turing mesmo no n´ ıvel expandido. (Turing ´ uma linguagem de programa¸˜o e ca baseada em Pascal desenvolvida em 1982 por Ric Holt e James Cordy, depois da Universi- a ` dade de Toronto, Canad´. E uma linguagem descendente de Euclides, Pascal e SP/k e se caracteriza por uma sintaxe limpa e semˆntica precisa independente de m´quina.) a a 6
  • 7. O sistema pode ser dividido em quatro n´ ıveis: no primeiro, caracteres s˜o lidos do ar- a quivo de entrada e recebem a atribui¸˜o de um c´digo de categoria (chamado de ’catcode’). ca o Combina¸˜es da barra invertida (’’ - qualquer caracter da categoria zero) seguido por letras co (caracteres da categoria 11) ou um unico outro caracter, s˜o substitu´ ´ a ıdos por um marcador controlador de seq¨ˆncia. ue Nesse contexto, essa etapa ´ como an´lise l´xica, no pr´ximo est´gio, seq¨ˆncias de con- e a e o a ue trole expans´ ıveis (como as condicionais e macros definidas) s˜o substitu´ a ıdas por seus textos de substitui¸˜o. A entrada do terceiro est´gio ´ ent˜o uma seq¨ˆncia de caracteres (incluindo ca a e a ue aqueles com significado especial) e seq¨ˆncias de controle inexpans´ ue ıveis (tipicamente sinal- iza¸˜es e comandos visuais). Aqui caracteres s˜o montados dentro de um par´grafo. O co a a quarto est´gio insere as listas de linhas verticais e outros materiais dentro das p´ginas. a a O sistema TEXpossui conhecimento preciso dos tamanhos de todos os caracteres e s´ ımbolos e usando essa informa¸˜o, processa o arranjo ´timo de letras por linha e de linhas por p´gina. ca o a Isso ent˜o produz um arquivo DVI (”Device Independent - Independente do Dispositivo) a contendo a localiza¸˜o final de todos os caracteres. Esse arquivo dvi pode ser impresso ca diretamente fornecido um driver de impress˜o apropriado, ou pode ser convertitdo para outros a formatos. Nos tempos atuais ´ geralmente usado o PDFTex que processa a gera¸˜o do DVI e ca para PDF em conjunto. 4.1.3 Linguagens de Macro TEXoferece uma linguagem de macro n˜o usual, a defini¸˜o de uma macro n˜o apenas in- a ca a clui uma lista de comandos mas tamb´m a sintaxe de chamada. Macros s˜o integradas em e a larga escala com a linguagem interpretada em tempo de compila¸˜o o que tamb´m guia o ca e processamento. O nivel da opera¸˜o da macro TEX´ l´xico, mas ´ constru´ sobre suas facilidades que ca e e e ıdo fazem uso da interpreta¸˜o sint´tica.A linguagem macro em TEXfoi utilizada com sucesso ca a para extender TEXpor exemplo para L TEX. A 4.1.4 L TEX A L TEX´ mais amplamente utilizada por matem´ticos, cientistas, engenheiros, fil´sofos, estu- A e a o dantes acadˆmicos e no mundo comercial e outros segmentos. ´ utilizado devido sua alta e e qualidade de formata¸˜o atingida pelo TEX. O sistema de formata¸˜o oferece ferramentas ca ca program´veis de publica¸˜o em desktops e facilidades extendidas para automa¸˜o da maio- a ca ca ria dos aspectos de formata¸˜o e publica¸˜o em desktops, incluindo numera¸˜o e referˆncia ca ca ca e cruzada, tabelas e figuras, layout de p´ginas e bibliografias. a L TEXfoi criado com a inten¸˜o de oferecer uma linguagem de alto n´ A ca ıvel que acessasse o poderio do TEX. L TEA Xessencialmente compreende uma cole¸˜o de macros em T Xe um ca E programa para processar documentos L TEX. Foi originalmente escrito no inicio dos anos 80 A por Leslie Lamport [14] na SRI International, e se tornou o m´todo dominante para o uso do e TEX, poucas pessoas relativamente escrevem em TEXpuro ainda. A vers˜o corrente ´ chamada a e L TEX 2ε . A O termo L TEXrefere-se apenas a linguagem na qual os documentos s˜o escritos e n˜o A a a ao editor usado para escrever estes documentos. Para criar um documento em L TEX, um A arquivo do tipo .tex precisa ser criado usando algum tipo de editor de texto. Enquanto v´rios a 7
  • 8. editores de texto servem ao prop´sito, v´rias pessoas preferem utilizar editores desenvolvidos o a especificamente para trabalhar com L TE A X. Distribu´ sob os termos da licen¸a ’L TEXProject Public License’ (LPPL), L TEX´ soft- ıdo c A A e ware livre, detalharemos a quest˜o da licensa na An´lise de Viabilidade. a a 4.1.5 Sistema de Formata¸˜o L TEX ca A L TEX´ baseado na id´ia de que autores devem estar aptos a focar no conte´do que est˜o A e e u a escrevendo sem serem distra´ ıdos pela sua apresenta¸˜o visual. Ao preparar um documento ca L TEX, o autor especifica a estrutura l´gica utilizando conceitos familiares como ’cap´ A o ıtulo’, ’se¸˜o’, ’tabela’, ’figura’, etc; e deixa que o sistema L TEXpreocupe-se a respeito da apre- ca A senta¸˜o dessas estruturas. ca Isso encoraja portanto a separa¸˜o de layout do conte´do enquanto permite ajustes de ca u formata¸˜o quando necess´rio. ´ similar ao mecanismo de estilos permitidos em v´rios pro- ca a e a cessadores de texto, definidos globalmente para um documento inteiro, similar ao mecanismo do CSS usado pelo HTML. O exemplo abaixo mostra a entrada L TEXe a correspondente sa´ A ıda: documentclass[12pt]{article} usepackage{amsmath} title{LaTeX} date{} begin{document} maketitle LaTeX{} is a document preparation system for the TeX{} typesetting program. It offers programmable desktop publishing features and extensive facilities for automating most aspects of typesetting and desktop publishing, including numbering and cross-referencing, tables and figures, page layout, bibliographies, and much more. LaTeX{} was originally written in 1984 by Leslie Lamport and has become the dominant method for using TeX; few people write in plain TeX{} anymore. The current version is LaTeXe. % This is a comment, it is not shown in the final output. % The following shows a little of the typesetting power of LaTeX begin{align} E&=mc^2 m&=frac{m_0}{sqrt{1-frac{v^2}{c^2}}} end{align} end{document} 8
  • 9. Figura 1: Figura proveniente do arquivo exemplo01.jpg gerado da compila¸˜o do c´digo da ca o p´gina anterior a 9
  • 10. 4.1.6 Apanhado Geral da Estrutura LaTeX. Em resumo, o centro de processamento do L TEX´ a linguagem de programa¸˜o chamada A e ca TEXque provˆ v´rias instru¸˜es de formata¸˜es. Em conjunto com o TEXvem um conjunto e a co co de fontes denominadas ’Computer Modern (CM). As CM fontes e a linguagem TeX formam a base de um sistema TEXt´ ıpico. TEX´ expans´ e ıvel, ou seja, comandos adicionais podem ser definidos em termos de outros mais b´sicos. Uma das melhores conhecidas expans˜es do TEX´ o L TEXque introduz a id´ia a o e A e de unidade l´gica. o O layout visual no L TEX´ determinado pela classe do documento. Expans˜es do L TEXs˜o A e o A a denominadas pacotes, nas se¸˜es a seguir abordamos os elementos de um documento L TE co A X, sua estrutura e componentiza¸˜o passando ao contexto espec´ ca ıfico dos pacotes AMS - LaTeX (amssymb e amsmath), apropriados para a representa¸˜o tipogr´fica matem´tica e cient´ ca a a ıfica em geral. Ao final do cap´ ıtulo s˜o apresentadas agumas primeiras estruturas num apanhado a das mais representativas da biblioteca. A componentiza¸˜o resumida dos elementos da estrutura L TEX´ ilustrada na figura abaixo. ca A e Essa figura sugere que, em ordem para trabalhar com um documento L TEX, ´ necess´rio A e a primeiro instalar o TEXe as fontes ’Computer Modern’, ent˜o instalar o L TEXe finalmente a A especificar a classe de documento e os pacotes necess´rios. a Figura 2: Esquema da estrututra de rela¸˜o entre o TeX e o LaTeX. O TeX ´ a funda¸˜o ca e ca sobre a qual v´rios pacotes utilit´rios - extens˜es do LaTeX - s˜o constru´ a a o a ıdos. 10
  • 11. 4.1.7 Classes e Pacotes L TEX A L TEXem sua versao atual, faz distin¸˜o entre as macros que definem o layout de um docu- A ca mento, e as macros que extendem as funcionalidades para fornecer o que o autor realmente quer. A id´ia ´ que um documento de classe L TEXdiz sobre qual a natureza do documento, e e A enquanto os pacotes do documento carregam comandos que refinam sobre a especifica¸˜o ca global. No disco, os arquivos s´ aparecem diferentes em virtude da extens˜o - arquivos de classes o a s˜o do tipo *. cls enquanto arquivos de pacotes s˜o do tipo *.sty. Desse modo, encontramos o a a arquivo classe padr˜o para artigo no disco com o nome de ’article.cls’, enquanto que o pacote a footmisc (que refina as defini¸˜es de notas de rodap´ dos artigos) ´ representado no disco por co e e um arquivo chamado footmisc.sty O usu´rio define a classe do seu documento com o comando documentclass(normalmente a o primeiro comando em um documento), e carrega pacotes com o comando usepackage.Um documento pode ter v´rios comandos usepackage, mas pode ter apenas um documentclass. a Existem vers˜es da interface de programa¸˜o de ambos os comandos, j´ que uma classe pode o ca a escolher carregar outra classe para aperfei¸oar as suas capacidades, e ambas as classes e c pacotes podem optar por carregar outros pacotes. 4.1.8 Ajustando comandos existentes No caso geral, colocar uma sobredefini¸˜o no meio de um comando existente ´ dif´ ca e ıcil. No entanto, para adicionar algum c´digo no in´ o ıcio ou no fim de um comando existente, ´ con- e ceitualmente muito f´cil. Para definir uma vers˜o de um comando que faz alguma pequena a a extens˜o da sua defini¸˜o original podemos escrever: a ca renewcommand{splat}{mumblesplat} Entretanto, isso n˜o dever´ funcionar: uma chamada a splat executaria mumble , e a a a chamada que redefine splat novamente; Isso ´ um loop infinitamente recursivo, que ir´ e a rapidamente exaurir a mem´ria do TEX. Felizmente, o comando TEXlet nos permite ter o um ’instantˆneo’ do estado atual de um comando, podemos, ent˜o, usa-lo na sua redefini¸˜o. a a ca Ent˜o: a letOldSmoothsmooth e renewcommand{smooth}{mumbleOldSmooth} possuem os mesmos efeitos da corre¸˜o necess´ria, de forma segura. Adicionando coisas ca a no fim de um comando funciona de modo similar. Se smooth tem argumentos, eles devem ser passado por referˆncia: e renewcommand{smooth}[2]{mumbleOldSmooth{#1}{#2}}. O caso geral pode ser alcan¸ado de duas maneiras. Em primeiro lugar, pode-se usar o c comando LaTeX CheckCommand; este compara um comando existente com a defini¸˜o que ca vocˆ der a ele, e emite um aviso se dois n˜o s˜o iguais. Sua utiliza¸˜o ´, portanto: e a a ca e CheckCommand{complex}{<original-definition>} renewcommand{complex}{<new-definition>}. Esta t´cnica ´, obviamente, um pouco trabalhosa, mas se o comando original vem de uma e e fonte que ´ pass´ e ıvel de mudan¸a em ˆmbito do contexto, ele ao menos avisa que seu patch c a est´ em perigo de funcionar equivocadamente. a 11
  • 12. Existe a possibilidade de se usar pacotes espec´ ıficos para a finalidade de redefini¸˜o de ca comandos: O pacote patchcmd restringe o conjunto de comandos que vocˆ pode ajustar; O pacote ted e [19] ´ um ’editor de lista de tokens’ e provˆ um comando Substituteo qual ajusta o conte´do e e u de uma macro, colocando o resultado em uma lista de tokens ou opcionalmente usando o resultado para (re)definir a macro. O pacote pode ser usado tamb´m como ferramenta de e debugging. O pacote etoolbox [16] provˆ o comando patchcmdo qual realizar´ uma ’substitui¸˜o e a ca de string’ na defini¸˜o de uma macro. O pacote tamb´m prove commandos que adicionam ca e pr´-defini¸˜es (pretocmd) ou p´s-defini¸˜es (apptocmd)a uma defini¸˜o de um comando. e co o co ca Nesse est´gio do trabalho abordamos superficialmente alguns dos comandos e pacotes que a julgamos que ser˜o uteis ao desenvolvimento das tags do LabTeX devido suas funcionalidades a ´ que permitem flexibiliza¸˜o sobre a sintaxe das macros L TEXe oferecem suporte ao ensaio ca A das tags escolhidas como marcadores para o LabTeX, inclusive com possibilidade de debug- ging. S˜o recursos que auxiliam a metodologia e no decorrer do desenvolvimento do projeto a em PSI2594, quando forem utilizados, cada pacote ser´ apresentado e mencionado em seu a contexto de uso. 4.1.9 Analise de Viabilidade TEXe L TEX A Nesta se¸˜o analizaremos quest˜es que envolvem os componentes e suas caracter´ ca o ısticas que viabilizam o projeto, como integra¸˜o, aceitabilidade, estabilidade, escalabilidade. ca TEXfoi desenvolvido com dois objetivos principais em mente: permittir que qualquer pessoa produzisse livros de alta qualidade usando quantidade de esfor¸o razo´vel e prover c a um sistema que pudesse gerar exatamente o mesmo resultado em todos os computadores, agora e no futuro. Tex possui excelentes capacidades de formata¸˜o e trabalha com f´rmulas ca o matem´ticas t˜o bem como texto. a a Um grande atrativo da linguagem TeX ´ que seu arquivo c´digo ´ puro texto, algumas e o e vezes denominado um arquivo ’ASCII’. Portanto, artigos contendo mesmo as mais complicadas express˜es matem´ticas podem ser leg´ o a ıveis transmitidas eletronicamente, para colegas, co- autores, journals, editores e publicadores. TEX´ independente da plataforma, admite desenvolvimento em um Macintosh por exem- e plo e seu co-autor pode fazer melhorias no mesmo arquivo usando um computador pessoal compat´ ıvel com IBM; o publicador do journal pode usar um DEC minicomputador, essa diferen¸a de hardware n˜o muda em nada o processo. c a L TE e A X´ muito mas f´cil para trabalhar do que T X, existe grande n´ mero de ferramentas a E u seguras constru´ ıdas internamente e um enorme conjunto de mensagens de erro. L TEXdiminui o t´dio na escritura¸˜o de tarefas. Considere um artigo completo com A e ca teoremas e equa¸˜es numeradas e apropriadamente referenciadas cruzadamente. Ao fim da co leitura algumas mudan¸as precisam ser feitas, por exemplo, a se¸˜o 4 precisa ser colocada c ca ap´s a se¸˜o 7 e um novo teorema precisa ser inserido em algum lugar no meio.Esses tipos o ca de modifica¸˜es no processamento documentacional convencional pode causar transtornos co enquanto que com L TEXisso se torna simples pois automaticamente refaz todas as numera¸˜es A co e referencias cruzadas. L TEX´ uma linguagem universal e estabelecida, acompanhada por comunidades cient´ A e ıficas que desde os fins dos anos 60 pesquisavam alternativas que pudessem oferecer recursos ao a ´ desejo de express˜o. E acess´ ıvel, possui protocolo aberto e poucas tecnicalidades de modo 12
  • 13. que o leigo instru´ ´ capaz de desenvolver e de modo geral preservar, documentar e publicar ıdo e conhecimento. Em diversos campos t´cnicos em particular a ciˆncia da computa¸˜o, matem´tica e f´ e e ca a ısicas, L TE A Xtem se tornado padr˜o. V´rios milhares de livros tem sido publicados usando L T X, a a A E incluindo livros publicados pela Addison-Wesley, Cambridge University Press, Elsevier, Ox- ford University Press and Springer.Diversos journals nesses campos s˜o produzidos usando a TeX or LaTeX, permitindo que autores possam submeter seus trabalhos manuscritos direta- mente em TeX, o que ´ inclusive eletronicamente mais leve quanto a transmiss˜o eletrˆnica e e a o armazenamento em base de dados. A estabilidade do TEXtamb´m merece ser ressaltada, desde a vers˜o 3, TEXusa um id- e a iosincrasso sistema de numera¸˜o de vers˜o onde atualiza¸˜es s˜o indicadas pela adi¸˜o de ca a co a ca um d´ ıgito extra ao final do decimal, de modo que a vers˜o do n´mero assintoticamente se a u aproxime de ’pi’. Isso ´ uma reflex˜o do fato que TeX ´ atualmente muito est´vel e apenas e a e a m´ınimas atualiza¸˜es s˜o antecipadas. A vers˜o atutal do TEX´ 3.1415926; que foi atualizada co a a e pela ultima vez em Mar¸o de 2008. ´ c O criador do TEX, Donald Knuth, mantevem um registro muito detalhado dos bugs cor- rigidos e mudan¸as efetuadas desde 1982. A lista atualizada em 2008 cont´m 427 registros. c e Knuth ofereceu premios em dinheiro `s pessoas que encontrassem e reportassem um bug no a TeX. O premio por bug come¸ou com U$ 2.56 (um ’dolar hexadecimal’) e dobrava todo ano c at´ que seu valor foi congelado para o valor atual de U$ 327.68. Knuth entretanto, perdeu e relativamente pouco dinheiro com isso pois muitos poucos bugs foram anunciados. Quanto ` Licen¸a L TEX´ tipicamente distribu´ com texto puro, isso ´ distribu´ sob a c A e ıdo e ıdo uma licen¸a de software livre, a ’LaTeX Project Public Licen¸a (LPPL). A LPPL n˜o ´ c c a e compat´ ıvel com a GNU - Licen¸a P´blica Geral, pois a primeira requer que os arquivos c u modificados sejam claramente diferenciados um do outro (normalmente mudando o nome do arquivo). Para refor¸ar essa regra, qualquer implementa¸˜o no sistema precisa passar por c ca bateria de testes antes de ser liberada para ser chamada TEX. Quanto ao software para codifica¸˜o, L TEX´ dispon´ ca A e ıvel na maioria dos sistemas opera- cionais incluindo Unix, Linux e BSDs, Windows, Mac OSx, RISC OS e AmigaOS. Outro aspecto que fortalece a viabilidade e a escolha do L TEXcomo componente ´ a or- A e ganiza¸˜o das comunidades ao redor dessas tecnologias. Entidades da comunidade TEXfazem ca parte do TEXUsers Group o qual publica o ’TUGboat’ e ’The PracTeX Journal’ abrangendo um vasto leque de temas relevantes para a tipografia digital TEX. O ’The Deutschsprachige Anwendervereinigung TEX’ ´ um grande grupo de usu´rios na Alemanha. O ’TEXUsers Group’ e a foi fundado em 1980 para fins educacionais e cient´ıficos, possibilita uma organiza¸˜o para aque- ca les que possuem algum interesse em tipografia e design de fontes, e s˜o usu´rios do sistema a a tipogr´fico TEX. a 4.2 AMS-L TEX A O pacote amsmath ´ um pacote L TEXque oferece diversos acess´rios para melhorar a estrutura e A o da informa¸˜o e impress˜o de documentos que contˆm f´rmulas matem´ticas. AMS-L TEX´ ca a e o a A e uma cole¸˜o de classes de documento e pacotes em L TE ca A Xelaborados pela American Mathe- matical Society (AMS) e que provˆ solu¸˜es e recursos para diversos fins de documenta¸˜o e co ca cient´ ıfica em diversos segmentos. Entre os acess´rios matem´ticos h´ uma grande variedade de ferramentas tipogr´ficas. o a a a AMS-L TEXprove diversas classes incluindo a classe de documentos para artigos da AMS, a A 13
  • 14. classe amsart e disponibiliza fontes para centenas de operadores bin´rios, rela¸˜es bin´rias, a co a relacionamentos negativos bin´rios, s´ a ımbolos negritos, setas, setas extens´ ıveis, e assim por diante, disponibilizados pelo AMS-L TEXe que tamb´m disponibiliza alfabetos matem´ticos A e a adicionais como Blackboard negrito, Euler Fraktur, Euler Script, e matem´tico negrito it´lico. a a O pacote amsmath ´ distribuido em conjunto com alguns pequenos pacotes auxiliares, e outro pacote que sera util no escopo do projeto pois dar´ liberdade para a cria¸˜o de funcional- ´ a ca idades do LabTeX ser´ o pacote amsopn que provˆ DeclareMathOperator para defini¸˜o de a e ca novos ’nomes de operadores’ como sin e lim . O pacote amsmath provˆ uma s´rie de outras estruturas de equa¸˜o al´m das fornecidas e e ca e no L TEXb´sico. O conjunto adicional inclui: equation , equation* , align , align*, gather, A a gather*, flalign, flalign*, multline, multline*, alignat, alignat* e split. [6] 4.2.1 Classes de opera¸˜o dos s´ ca ımbolos matem´ticos a Os simbolos de uma f´rmula matem´tica s˜o classificados em diferentes categorias que cor- o a a respondem mais ou menos ` parte da fala ou elemento l´xico que cada s´ a e ımbolo teria se a f´rmula estivesse expressas em palavras,(por exemplo: nomes, conjun¸˜es e verbos dispostos o co numa declara¸˜o, s´ que trata-se de ’declara¸˜o matem´tica’) Certos modos de espa¸amentos ca o ca a c e posicionamentos s˜o tradicionalmente utilizados para as diferentes classes de s´ a ımbolos para aumentar a legibilidade das f´rmulas. o Figura 3: Correspondˆncia das categorias de simbolos e seus c´digos de opera¸˜o.[6] e o ca A distin¸˜o entre a classe 0 e uma adicional classe 7 ´ unicamente com os aspectos de ca e sele¸˜o de fonte e n˜o se aplica aqui. Simbolos da classe bin´ria s˜o automatitcamente ca a a a for¸ados ` classe 0 (sem espa¸os) se eles n˜o possu´ c a c a ırem um operando ` esquerda. N´meros a u ar´bicos (0-9) s˜o classe 0, assim como as letras gregas, outros s´ a a ımbolos alfab´ticos e diversos e s´ ımbolos acess´rios simples tamb´m s˜o da classe 0 (ordin´ria) o que significa que eles n˜o o e a a a tˆm qualquer base de espa¸amento. Lexicamente correspondem a nomes e pronomes no e c ’discurso’,sob o ponto de vista dessa met´fora. a Simbolos de operadores binarios s˜o classe 2 (conjun¸˜es), simbolos relacionais s˜o classe a co a 3(verbos). Operadores cumulativos (de tamanho vari´vel) s˜o da classe 1. S´ a a ımbolos de pontua¸˜o s˜o da classe 6, pares delimitadores s˜o classe 4 (os s´ ca a a ımbolos de abertura) e classe 5 (os s´ımbolos de fechamento). Os acentos ser˜o uteis para especificadores de arrays, vetores a ´ 14
  • 15. e multidimensoes no LabTeX por exemplo. Nomes de operadores existentes s˜o representados a por abrevia¸˜es. Existem muitos s´ co ımbolos adicionais dispon´ ıveis para uso no LaTeX. Existe uma lista de s´ımbolos detalhada em [18]. Observa-se portanto uma rela¸˜o entre a classe dos comandos AMS-L TEXe a natureza ca A desses comandos quanto a sua fun¸˜o, espa¸amento e necessidade de parˆmetros construtores, ca c a o que ser´ explorado na constru¸˜o dos ’m´todos-subVIs’ de ’sele¸˜o de opera¸˜o’ (opcode a ca e ca ca ’fetch’), ou seja, os sub instrumentos virtuais do LabTeX capaz de identificar o tipo do comando/opera¸˜o matem´tica para posterior prepara¸˜o (parse) e execu¸˜o, conforme ´ ca a ca ca e apresentado durante a metodologia. 5.1.1 4.3 Gr´ficos LabTeX: Recursos pesquisados a L TEXnasceu em 1984 com um ambiente nativo de desenho que permitiu desenhar linhas, A vetores, c´ ırculos e ’ovais’ com algumas limita¸˜es; fontes especiais foram utilizadas para de- co senhar todos os objetos gr´ficos. Esta foi uma grande limita¸˜o, porque no surgimento do a ca L TEXtodas as fontes utiliz´veis comportavam apenas 128 glifos; Isso aconteceu com as fontes A a de texto, bem como com as fontes especiais para desenho em L TEX. Com isso s´ haviam A o duas espessuras dispon´ ıveis.[4] A primeira extens˜o gr´fica dispon´ a a ıvel no mercado foi PiCTEX[29]. Foi concebido para trabalhar com TEXpuro, em uma fase inicial da hist´ria do TEX. Ap´s L TEXser disponi- o o A bilizado, algumas macros foram criadas para permitir que L TEXimportasse as macros do A PiCTEXe pudesse utiliz´-las com quase toda eficiencia. Nesses tempos, TEXe L TEXeram ex- a A ecutados em mainframes e PCs estavam na sua infˆncia, o sistema TEXj´ estava dispon´ a a ıvel para os pequenos PCs, mas as limita¸˜es de mem´ria eram t˜o fortes que era normal obter a co o a mensagem de excesso de mem´ria e processamento abortado. o Em 1986 Sunil Podar publicou seu pacote de extens˜o gr´fica chamado epic [20], para o a a ambiente gr´fico LaTeX convencional; em 1988 Conrad Kwok publicou o seu refor¸o eepic a c [13]. Ambos foram concebidos de forma a aliviar as fortes limita¸˜es do ambiente gr´fico co a padr˜o do LaTeX, nomeadamente a limita¸˜o das encostas de linha e dos vectores e a gama a ca limitada de raios de circulo. Ambos os programas foram concebidos para utiliza¸˜o no ˆmbito ca a do ’velho’ LaTeX, hoje conhecido como LaTeX 209, em contraste com o ’novo’ LATEX2# (que n˜o ´ mais t˜o novo uma vez que posui mais de uma d´cada de existˆncia). a e a e e Outro pacote gr´fico muito poderoso que necessita da utiliza¸˜o de um software externo a ca atualmente para renderizar objetos gr´ficos ´ XY-pic, [21]. Este pacote ´ projetado para a e e A X, T Xpuro, e A S-T X. trabalhar com L TE E M E Leslie Lamport, em sua segunda edi¸˜o do manual LaTeX [15], fixou a sintaxe de um ca novo ambiente de desenho extendido, (pict2e e seu pacote de extens˜o curve2e [3] extens˜es) a o onde a maioria se n˜o todas as limita¸˜es da implementa¸˜o padr˜o puderam ser superados: a co ca a ilimitadas encostas das linhas e vetores, qualquer raio de c´ ırculo, linhas de espessura arbitr´ria a tamb´m para linhas curvas, etc. e 4.3.1 Pacotes adotados: PGF/TikZ e xcolor A sigla PGF significa ’Formato Gr´fico Port´vel’; o pacote PGF [25], implementa ou re- a a implementa todos os comandos do ambiente padr˜o de desenho L TEX, de modo a criar um a A conjunto coerente de comandos capazes de fazer a maioria das opera¸˜es gr´ficas no L TEXe co a A no pdfLATEX. 15
  • 16. V´rios comandos foram adicionados ao conjunto fundamental para extender as capaci- a dades gr´ficas do L TEXe suas capacidades s˜o ampliadas mais uma vez por meio do pacote a A a xcolor que por sua vez, amplia as possibilidades de manipula¸˜o de cores oferecido pelo pacote ca padr˜o. a Esse pacote automaticamente examina os arquivos de configura¸˜o padr˜es e insere nos ca o arquivos de sa´ o comando special adequado ao driver de sa´ ıda ıda. O novo pacote PGF, vers˜o 1.10, contem um novo pacote e seu novo ambiente gr´fico que a a ´ chamado TikZ; acrˆnimo que significa ’TikZ ist kein Zeichenprogramm’ (TikZ n˜o ´ um e o a e programa de desenho). PGF e seu novo pacote tikz possuem in´meras interfaces de desenho u que podem produzir quase qualquer coisa. O manual explica em detalhes o que n˜o pode a ser feito com a interface de PostScript e explica que o formato PGF e o programa foram especificamente desenvolvidos para serem utilizados com pdfLATEX, onde possui seu melhor funcionamento. Figura 4: Um exemplo retirado do Manual de Tantau [25] Tantau diz que TikZ possui a inten¸˜o de oferecer ao usu´rio uma interface uniforme e ca a simplificada que permita a composi¸˜o de desenhos com o m´ ca ınimo poss´ de estardalha¸o; ıvel c em seu manual ele escreveu uma pequena introdu¸˜o ensinando como produzir demonstra¸˜es ca co como a figura produzida acima. O c´digo n˜o ´ transcrito neste trabalho pois pode ser o a e encontrado por qualquer um pelo manual [25], e que dever´ ser aproveitado intensamente a para o desenvolvimento e implementa¸˜es dos m´todos-SubVIs de gera¸˜o de c´digo gr´fico, co e ca o a devido ` multiplicidade de desenho e comandos dispon´ a ıveis para qualquer eventual situa¸˜o. ca PGF/TikZ possui extensa documenta¸˜o. Para a vers˜o 2.0 o manual possui 560 p´ginas. ca a a Como nota-se na figura, o programa permite gr´ficos em preto e branco ou coloridos, e o a texto usa as mesmas fontes que as padr˜es no documento PDF pois TikZ ´ completamente o e integrado com (pdf)LaTeX. O pacote PGF contem numeras bibliotecas de commandos adicionais; Existe grande var- iedade de tipos de setas, variedades de panos de fundo, oferece diagramas de relacionamento de entidades, diagramas para mapas mentais, op¸˜es de escolha para padr˜es de panos de co o fundo para desenhos t´cnicos, desenhos de redes de Petri e mais. e 16
  • 17. Figura 5: Uma espiral plotada pelo TikZ cujas coordenadas foram calculadas pelo GnuPlot. Manual de Tantau [25] No LabTex, o LabVIEW ser´ o responsavel pela obten¸˜o de coorde- a ca nadas. O pacote manipula o desenho de gr´ficos que podem ser definidos como uma serie de dois a ou trˆs pares ou tripletes coordenados para fazer desenhos 3D. Uma novidade ´ a possibilidade e e de crar desenhos ’inline’ simples sem precisar abrir um ambiente. A sintaxe TikZ ´ simples; e suas instru¸˜es iniciam com um comando, continuam com op¸˜es e coordenadas e terminam co co com um ponto-e-virgula. Certamente o ambiente b´sico padr˜o LaTeX para desenhos sofre em compara¸˜o de a a ca performance com o pacote PGF, mesmo se o ambiente padr˜o for evolu´ com os pacotes a ıdo pic2e e curve2e, essas ferramentas simples podem ser utilizadas para aprender apenas poucos commandos.TikZ possui largo conjunto de funcionalidades mas possui tambem uma curva de aprendizado mais ´ ıngreme. Nesta se¸˜o, pesquisamos o hist´rico e peculiariedades de algumas solu¸˜es existentes para ca o co gera¸˜o de desenhos, gr´ficos e diagramas com L TEXe nesta etapa do trabalho por compara¸˜o ca a A ca das estruturas e disponibilidade de recursos, escolheu-se pautar o desenvolvimento das tags gr´ficas LabTeX sobre os prot´tipos do pacote PGF/TikZ por acreditar que ele prove desenhos a o t´cnicos cuja estrutura n˜o foram encontradas em outras interfaces, durante a compara¸˜o e a ca dos resultados desses diversos pacotes. No decorrer dos artefatos de PSI2594 ser˜o escolhidas a e apresentadas as estruturas dispon´ ıveis para ativa¸˜o do LabTeX, por meio espec´ ca ıfico do SubVI-m´todo de concatena¸˜o de gr´ficos, conforme ´ apresentado durante a metodologia e ca a e em 5.2. 17
  • 18. 4.4 Estruturas LabVIEW 4.4.1 Instrumenta¸˜o virtual ca Uso de software customizavel e m´dulos de hardware de medidas para criar sistemas de o medi¸˜o definidos pelo usu´rio, chamados de ’instrumentos virtuais’. ca a Tradicionalmente sistemas de instrumenta¸˜o de hardware s˜o constitu´ ca a ıdos por compo- nentes de hardware pr´-definidos como os mult´ e ımetros digitais e oscilosc´pios que s˜o com- o a pletamente espec´ıficos quanto a natureza do estimulo, an´lise, fun¸˜o ou medi¸˜o. Devido `s a ca ca a suas fun¸˜es dedicadas de hardware, esses sistemas s˜o mais limitados em versatilidade do co a que sistemas de instrumenta¸˜o virtual ca A diferen¸a prim´ria entre instrumenta¸˜o via hardware e instrumenta¸˜o virtual ´ que c a ca ca e s˜o utilizados componentes de software para substituir uma grande quantidade de hardware. a O software permite que complexos e custosos sistemas em hardware sejam substitu´ ıdos por dispositivos computacionais j´ existentes, por exemplo conversores anal´gico-digitais podem a o atuar como hardware complementar de um oscilosc´pio virtual. o 4.4.2 LabVIEW LabVIEW (abrevia¸˜o para Laboratory V irtual I nstrumentation E ngineering W orkbench) ´ ca e uma plataforma e ambiente de desenvolvimento para uma linguagem de programa¸˜o visual ca da National Instruments. A linguagem gr´fica ´ denominada ’G’. Originalmente lan¸ada pela a e c Apple Macintosh em 1986, LabVIEW ´ comumene utilizado para aquisi¸˜o de dados, controle e ca de instrumentos e automa¸˜o industrial numa variedade de plataformas incluindo Microsoft ca Windows, UNIX, Linux e Mac OS. A ultima vers˜o do LabView ´ a 8.6.1 lan¸ada em fevereiro a e c de 2009. 4.4.3 Programa¸˜o em Fluxo de Dados ca A linguagem de programa¸˜o utilizada no LabVIEW, tamb´m referenciada como ’G’, ´ uma ca e e linguagem de programa¸˜o de fluxo de dados. A execu¸˜o ´ determinada pela estrutura ca ca e de um diagrama em bloco gr´fico (o c´digo fonte em LabVIEW) sobre o qual o progra- a o mador conecta diferentes n´s de fun¸˜es por meio de conectores desenhados. Esses conectores o co propagam vari´veis e qualquer n´ pode executar t˜o logo todas as entradas de dados tornem- a o a se dispon´ ıveis. Desde que isso pode ser o caso de m´ltiplos n´s simultˆneos, a linguagem G ´ u o a e inerentemente capaz de execu¸˜o paralela. Multi-processamento e hardware multi-threading ca ´ automaticamente explorado pelo escalador de tarefas (built-in scheduler) o qual multiplexa e m´ltiplas threads do sistema operacional sobre os n´s prontos para execu¸˜o. u o ca 4.4.4 Programa¸˜o Gr´fica ca a LabVIEW enla¸a a cria¸˜o de interfaces de usu´rio (denominada painel frontal) ao redor do c ca a ciclo de desenvolvimento.Programas e Subrotinas em LabVIEW s˜o denominadas ’instrumen- a tos virtuais’ (Vis). Cada VI possui trˆs componentes: um diagrama em blocos, um painel e frontal e um painel de conectores. O ultimo ´ usado para representar o VI dentro do diagrama e em blocos de outro, chamando VIs. Controles e indicadores no painei frontal permitem que um operador insira dados ou ex- traia dados de um instrumento virtual em execu¸˜o. Entretanto, o painel frontal tambem pode ca 18
  • 19. servir como uma interface programada. A abordagem gr´fica tamb´m permite que n˜o pro- a e a gramadores possam construir programas simplesmente arrastando e soltando representa¸˜es co virtuais de equipamento laboratorial com o qual eles j´ est˜o familiarizados. a a O ambiente de programa¸˜o do LabVIEW, que inclui exemplos e documenta¸˜o, torna ca ca simples a cria¸˜o de pequenas aplica¸˜es. Esse ´ um beneficio por um lado mas existe ca co e tamb´m um certo perigo ao subestimar o conhecimento necess´rio para a boa qualidade e a da programa¸˜o ’G’. Para algoritmos complexos ou c´digos de alta escala, ´ imporatnte que o ca o e programador possua um extenso conhecimento de sintaxes especiais de LabVIEW e a topolo- gia do gerenciamento de mem´ria. o LabView ´ utilizado tamb´m para comunica¸˜o com hardware como aquisi¸˜o de dados, e e ca ca aquisi¸˜o visual e dispositivos de controle de movimento, e dispositivos GPIB, PXI, VXI, RS- ca 232 e RS-484. LabVIEW tambem possui ferramentas construidas para conectar sua aplica¸˜o ca a ` Web usando o LabVIEW Web Server e padr˜es de softtware como TCP/IP, redes e ActiveX. o Como isso ´ poss´ e ıvel a cria¸˜o de aplica¸˜es distribu´ ca co ıdas, as quais comunicam-se por um esquema cliente/servidor, e portanto facilitam a implementa¸˜o de c´digo paralelo inerente ca o ao c´digo em linguagem ’G’. o Usando LabVIEW pode-se criar, testar e medir, aquisi¸˜o de dados, instrumentos de ca controle, analise de medidas e aplica¸˜es de gera¸˜o de relat´rios,entre outras aplica¸˜es. co ca o co 4.4.5 Analise de Viabilidade Nesta se¸˜o estudamos as viabilidades do LabVIEW suas caracter´ ca ısticas de orienta¸˜o a ca objeto, programa¸˜o multithreading, licen¸as, portabilidade, escalabilidade, e outros aspectos ca c relacionados. LabVIEW foi desenvolvido pela National Instruments h´ mais de 20 anos e est´ presente a a em diversos cen´rios, desde automa¸˜o industrial, aplica¸˜es biom´dicas, de sistemas em a ca co e campo a sistemas embarcados, a grandes laborat´rios e empreendimentos. Seu fˆlego inicial o o surgiu entre os profissionais da ´rea de biol´gicas que buscavam uma maneira de descrever a o suas necessidades com programa¸˜o r´pida e facil e resultados imediatos em tempo real, ca a instrumenta¸ao. c O LabVIEW busca o caminho da conversao de ideias em realidade mas n˜o no paradigma a da documenta¸˜o (como os que desenvolveram e desenvolvem as estruturas em LaTeX) e sim ca no aspecto da representa¸˜o de suas necessidades instrumentais. Desse modo novamente esses ca dois componentes apresentam-se caminhando em paralelo no progresso cient´ ıfico e na medida que as necessidades de um lado s˜o supridas pelas viabilidades do outro componente do par, a est´ criado um caminho para a implementa¸˜o do projeto. a ca Quanto a Programa¸˜o Modular e a natureza expansivel, novamente os dois componentes ca possuem similaridade quanto a encapsula¸˜o em pacotes, no caso do LabVIEW, seu poder ca reside na natureza hier´rquica do VI. Depois de criar um VI, ele pode ser utilizado no bloco a diagrama de outro VI. N˜o h´ limite no n´mero de camadas na hierarquia.O uso de pro- a a u grama¸˜o modular ajuda a gerir as altera¸˜es e depurar o diagrama em blocos rapidamente. ca co Um subVI corresponde a uma subrotina em texto baseado em linguagens de programa¸˜o, ca na forma de um bloco interno a outro VI. O painel frontal inclui controles e indicadores com aparˆncia familiar, o diagrama em e blocos inclui conex˜es, ´ o ıcones do painel frontal, fun¸˜es, possivelmente subVIs e outros objetos co do LabView tamb´m familiares e ´ possivel simplificar o diagrama em blocos de um VI pela e e convers˜o de se¸˜es do diagrama em subVIs. a co 19
  • 20. Outro benef´ ıcio do LabVIEW sobre outros ambientes de desenvolvimento ´ o extensivo e suporte para acessar hardwares de instrumenta¸˜o. Drivers e layers de abstra¸˜o para di- ca ca versos titpos de instrumentos e vias s˜o inclu´ a ıdas ou est˜o dispon´ a ıveis para inclus˜o. Estes a apresentam-se com conectores gr´ficos. Os layers de abstra¸˜o oferecem interfaces padr˜es de a ca o software para comunica¸˜o com dispositivos de hardware. ca Em termos de performance, LabVIEW inclui um compilador que produz c´digo nativo o para a CPU. O c´digo gr´fico ´ traduzido para linguagem de m´quina pela interpreta¸˜o da o a e a ca sintaxe e pela compila¸˜o. A sintaxe LabVIEW ´ estritamente executada durante o processo ca e de edi¸˜o e compila¸˜o para a linguagem de m´quina quando ´ requisitada a execu¸˜o ou ca ca a e ca durante o salvamento. Neste caso, o execut´vel e o c´digo fonte s˜o mesclados em um unico a o a ´ arquivo. O execut´vel funciona com a ajuda do script de tempo de execu¸˜o do LabVIEW a ca que contem alguns c´digos pr´-compilados para desenvolver tarefas comuns que s˜o definidas o e a pela Linguagem ’G’. O script em tempo de execu¸˜o reduz o tempo de compila¸˜o e tamb´m ca ca e provˆ interface consistente para v´rios sistemas operacionais, sistemas gr´ficos, hardware, e a a componentes, etc. O ambiente em tempo de execu¸˜o torna o c´digo port´vel atrav´s de ca o a e plataformas. Outro ponto a ser destacado e que auxilia a viabilidade do projeto ´ a escalabilidade das e estruturas e a capacidade de encapsulamento, tanto do LaTeX por meio dos seus pacotes, como no LabVIEW, por meio da sua estrutura de orientado a objeto do c´digo LabVIEW, o que permite reutiliza¸˜o de c´digo sem modifica¸˜es : t˜o logo os tipos de dados e sa´ ca o co a ıdas sejam consistentes, dois subVIs s˜o intercambi´veis. a a Outro ponto em comum em ambas as estruturas ´ a Portabilidade tecnol´gica. L TEXe e o A LabVIEW s˜o port´veis para quase todos os sistemas operacionais, guardam entre si ainda a a uma peculiariedade, do mesmo modo que as vers˜es atuais de LabVIEW possuem parte de o seu c´digo desenvolvido em sua pr´pria linguagem LabVIEW, o TEXtamb´m possui com- o o e ponente de seu c´digo produzido diretamente em TEX. Isso ocorre pois o c´digo fonte do o o programa atual TeX ´ escrito em ’WEB’, uma mistura de documenta¸˜o escrita em TeX com e ca subinstru¸˜es em Pascal o que garante a portabilidade. co Como no Latex, novamente a estrutura ´ suportada por v´rias bibliotecas com um enorme e a n´mero de fun¸˜es para aquisi¸˜o de dados, gera¸˜o de sinais, matem´tica, estat´ u co ca ca a ıstica, condi- cionamento de sinais, analise, etc, elementos s˜o disponibilizados em pacotes LabVIEW junto a com numerosas interfaces gr´ficas. O n´mero de blocos matem´ticos avan¸ados para fun¸˜es a u a c co como integra¸˜o, filtros e outras capacidades especializadas normalmente associadas com ca captura de dados de sensores em hardware ´ imensa. OpenG, conhecido como LAVA Code e Repository (LAVAcr), oferece reposit´rio para uma larga faixa de aplica¸˜es e bibliotecas o co LabVIEW. Em adi¸˜o, LabVIEW inclui um programa componente baseado em texto chamado Math- ca Script com funcionalidades adicionais para processamento de sinais, analise e matem´tica. a MathScript pode ser integrado com programa¸˜o gr´fica usando n´s de script e usa sintaxe ca a o geralmente compaivel com MATLAB. O Sistema de Desenvolvimento Profissional do LabVIEW permite a cria¸˜o de execut´veis ca a ’stand-alone’ execut´veis e bibliotecas compartilhadas, como DLL, pois LabVIEW ´ um com- a e pilador real de 32-bits e o programa execut´vel resultante pode ser distribu´ um ilimitado a ıdo n´mero de vezes. u O script em tempo de execu¸˜o e suas bibliotecas podem ser providenciados livremente ca junto com o execut´vel.a Existe uma edi¸˜o do LabVIEW para Estudantes com baixo custo destinadas a estab- ca 20
  • 21. elecimentos de ensino para fins de aprendizagem. Existe tamb´m uma ativa comunidade de e usu´rios LabVIEW que comunicam atrav´s de v´rios grupos de e-mail e Internet f´runs. a e a o 21
  • 22. 5 Materiais e M´todos e Nesta se¸˜o apresentamos a metodologia de execu¸˜o do projeto e quest˜es quanto ` infra- ca ca o a estrutura, os materiais e os meios necess´rios para sua implementa¸˜o e as abordagens para a ca assimila¸˜o das tecnologias. Na sequˆncia estabelecemos o plano de trabalho para o projeto, e ca e apresentamos os componentes desenvolvidos, o cronograma definitivo e os resultados obtidos frente aos testes efetuados. 5.1 Metodologia O primeiro passo foi o ensaio de documentos ativos que servissem de modelos para aplica¸˜o ca dos teste de conceito. Para cada documento, foram ensaiadas express˜es que precisariam ser o mapeadas e processadas, acompanhadas das especifica¸˜es dos valores ou conjuntos de valores co de seus parˆmetros e vari´veis. a a As express˜es ativas (calculadas numericamente ou processadas graficamente) devem ser o identificadas no corpo do documento, bem como as especifica¸˜es de seus valores, atrav´s de co e marcadores (TAGS) que possam ser interpretados pelo processador LaTeX e sejam identi- fic´veis pelo LabVIEW. a Inicialmente o texto escrito em LaTeX contendo esses itens marcados ´ lido pelo LabVIEW, e que se vale dos TAGS como guias para filtrar as express˜es e valores de interesse, gerando o para cada express˜o uma referˆncia de posi¸˜o no texto (Anexo 05 9). a e ca A seguir, um parser, implementado dentro do LabVIEW como sub-vi do mesmo, interpreta as express˜es filtradas e prepara uma tabela de execu¸˜o (Anexo 06 9) . Esta tabela cont´m em o ca e cada linha os resultados fornecidos pelo parser para cada express˜o identificada no documento, a acompanhada de um vetor de valores a serem aplicados ` mesma. Em seguida, essa tabela a ´ lida iterativamente e as entradas s˜o calculadas uma a uma, montando-se uma tabela de e a sa´ que cont´m os resultados postos em correspondˆncia com as referˆncias de posi¸˜o de ıda e e e ca cada express˜o no texto (Anexos 07 9). a Finalmente, a tabela de resultados ´ desmembrada e casada com o texto, gerando-se um e novo documento LaTeX contendo os resultados (Anexo 17 9). O novo documento ´ ent˜o e a processado pelo LaTeX, gerando-se a sua renderiza¸˜o gr´fica (Anexo 19 9). ca a Seguindo este roteiro foram criados de forma modular sub-instrumentos virtuais em Lab- VIEW relacionados `s opera¸˜es que comp˜em essa tabela de instru¸˜es e associados a cada a co o co um desses blocos l´gicos. o Foi ent˜o desenvolvida a aplica¸ao principal em instrumento virtual (.vi) (Anexo 01.d 9) a c˜ que, dado o arquivo/roteiro de entrada em padr˜o l´tex,ou via entrada por linha de comando, e a a com o diagrama em blocos correspondente (Anexo 01 9) para o processamento do documento, torna autom´tico o roteiro proposto de acordo com os dados de entradas inseridos. a Esse instrumento virtual possui um Painel de Controle (Anexo 01.c 9), chamado de in- terface do usu´rio onde o usu´rio carrega o documento ao mesmo tempo em que processa a a os c´lculos num´ricos e gera os gr´ficos associados, gerando ao fim do processo um relat´rio a e a o completo do documento. 5.1.1 Metodologia das Tags e C´digos de Opera¸˜o o ca Na integra¸˜o dessas tecnologias, parte consider´vel do trabalho ser´ na defini¸˜o dos coman- ca a a ca dos e macros da biblioteca LabTeX, esses comandos devem ser compreendidos pelos instru- mentos virtuais (subVIs) sob o aspecto de instru¸˜es l´gicas (como cria¸˜o e atribui¸˜o de co o ca ca 22
  • 23. vari´veis, c´lculos aritm´ticos, entre outras, como pr´-classificado na Planilha de Mapeamento a a e e de M´todos-SubVIs a seguir, mas devem ser ignorados pela gera¸˜o de layout na compila¸˜o e ca ca do documento .tex correspondente. A estrat´gia para isso ´ a utiliza¸ao de redefini¸˜o de comandos e macros 4.1.8,e a defini¸˜o e e c˜ ca ca de novos, que se utilizem das defini¸˜es de layout dos comandos atuais mas que possam co extendˆ-los de modo a serem reconhecidos como ativos pelo LabVIEW. e 5.1.2 Cronograma Figura 6: Cronograma Efetuado 23
  • 24. 5.2 Desenvolvimento: Objetos e Componentes Classes Labview suportam a orienta¸ao a objeto, o que ser´ demasiado util na implementa¸˜o c˜ a ´ ca componentizada deste projeto com subVIs espec´ ıficos para cada uma das etapas do proces- sador LabTeX.Esses subVIs-m´todos compartilhar˜o o acesso ao mesmo objeto definido pela e a classe documento ativo (’activeDocument’) que define as propriedades necess´rias ao ob- a jeto ’documento ativo’ para a identifica¸˜o das instru¸˜es, tipos de operadores, parˆmetros, ca co a vari´veis, constantes , posi¸˜es e todo vetor de informa¸˜es que precisar ser compartilhado a co co e manipulado pelos subVIs do projeto, que neste escopo da orienta¸˜o a objeto, assumem o ca papel de m´todos e apenas por meio deles ser´ poss´ manipular os dados da classe privada. e a ıvel O objeto documentoativo (Anexo 21 9) tem sua classe definida pelas propriedades que definem o objeto. Essas propriedades s˜o compartilhadas por cada bloco componente do a processamento desde a etapa de captura das tags (Anexo 05 9) onde s˜o utilizadas as pro- a priedades startIndexTag, endIndexTag (para as coordenadas das tags) e activeTag para o pr´prio teor da instru¸˜o, passando pela etapa de fetch (Anexo 06 9), na qual essas Tags s˜o o ca a processadas e realimentam os parˆmetros argId (contador), argC (nome do argumento), argV a (valor do argumento), argT (tipo da tag) e argDim (quantidade de tags ativas presentes no documento). Na sequencia o bloco de execu¸˜o (Anexo 07 9) compartilha do objeto processando os ca argumentos e colocando os resultados das express˜es em resultTag (array de resultados) e o por fim o bloco de substitui¸˜o (Anexo 17 9), acessa novamente a classe para substituir nas ca posi¸˜es de startIndexTag e endIndexTag o conte´do do vetor resultTag realizado na etapa co u anterior. O resultado geral do documento ´ salvo na propriedade resultLatex que ´ acessado pelo e e bloco de renderiza¸˜o (Anexo 19 9) e de exibi¸˜o do texto na aplica¸˜o principal (Anexo 18 ca ca ca 9). Todos os blocos desenvolvidos no projeto s˜o apresentados a seguir, sua listagem completa a est´ disponibilizada no Anexo 20 9 bem como a listagem de suas dependencias, blocos nativos a disponibilizados nas bibliotecas b´sicas do LabVIEW (Anexo 20.b 9 a 24
  • 25. 5.2.1 Aplica¸˜o Principal ca A partir desta subse¸˜o e nas demais, passamos a descrever a engenharia do sistema por ca meio da explica¸˜o do fluxo dos blocos e de suas funcionalidades e modos de opera¸˜o, que ca ca corresponde ao desenvolvimento componentizado proposto. O instrumento virtual Main.vi (Anexo 01 9) corresponde ` aplica¸˜o principal, na parte a ca superior a ´rea para digita¸˜o dos comandos e os bot˜es para sele¸˜o de arquivo e p´gina. a ca o ca a Abaixo o resultado renderizado e mais abaixo o resultado.tex completo em cinza (Anexo 01.d 9). No diagrama em blocos da aplica¸˜o principal (Anexo 01 9) est˜o envolvidos os diversos ca a SubVIs correlacionados que s˜o descritos de acordo com sua apari¸˜o no contexto dessa a ca descri¸˜o funcional. Na se¸˜o de 9 est˜o os diagramas dos blocos componentes, bem como ca ca a Painel Frontal da Aplica¸˜o e de alguns subcomponentes, guiando essa descri¸˜o funcional. ca ca O primeiro la¸o (` esquerda) da aplica¸˜o ´ respons´vel pelo controle da interface e envio c a ca e a de comandos, sele¸˜o de entrada (’Arquivo’ ou ’Linha de comando’), e troca de p´ginas. O ca a programa executa enquanto o usu´rio n˜o apertar ’Stop’ e, ao clicar em Carregar, o usu´rio a a a dispara o processo de execu¸˜o do documento ativo. ca Para trocar de p´gina o usuario deve selecionar seu n´mero e clicar no bot˜o carregar a u a correspondente (Anexo 01.c 9). O bloco subsequente processa as alternativas e, entre eles, est´ o subVI ’getInput’ (Anexo 02 9), que recebe os caminhos dos arquivos de cabe¸alhos e a c includes .tex do sistema e o caminho do arquivo de entrada selecionado pelo usu´rio, bem a como o texto digitado na linha de comando, e os encaminha para escolha de entrada de acordo com a op¸˜o escolhida no bot˜o [T:File / F: CommandLine], ou seja, posi¸˜o Verdadeiro para ca a ca entrada em arquivo, e posi¸˜o Falso para entrada por texto em linha de comando. ca Quando o respons´vel por sair do la¸o de controle for o bot˜o ’P´gina’, a subrotina do a c a a Anexo 01.b (9) ´ executada, nela o subVI ’ChangePag’(Anexo 03 9) carrega o resultado e previamente processado em outra p´gina. O conhecimento sobre o n´mero de p´ginas ocorre a u a no momento do processamento do LaTeX na etapa de renderiza¸˜o (Anexo 19 9) quando o ca aplicativo auxiliar Ghostscript 5.3 ´ chamado pelo sistema. e Quando o bot˜o ’P´gina’ ´ selecionado com um n´mero de p´gina igual ao atual, nada a a e u a ´ acontece. E possivel tamb´m iniciar novo processamento e iniciar a visualiza¸˜o pela p´gina e ca a na qual se est´ ou na qual se deseja. Quando LTChangePag.vi ´ acionado, recebe o valor a e num´rico da p´gina selecionada e efetua a troca da imagem pelo arquivo que fora gerado e a durante a compila¸˜o. O formato adotado ´ o JPEG e zoom de 50%. ca e Caso o ato de sair do la¸o de controle da aplica¸˜o principal tenha sido ocasionado pelo c ca bot˜o ’Carregar’, este levar´ o sinal Verdadeiro para o macro-bloco seguinte que ´ a sequencia a a e b´sica de processamento propriamente dita. a 25