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
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