Tabelas em Org Mode e Excel
Luis Moura / 2020-07-29
A versão em PDF deste post, pode ser encontrada aqui.
Resumo
Toda a gente que trabalha na elaboração de projetos de arquitetura e engenharia conhece o Microsoft Excel. Ele é um dos softwares preferidos dos engenheiros, pela sua fácil utilização, capacidade de partilha, e de grande customização. É fácil a introdução de formulas nas células, e os resultados são obtidos imediatamente. Um número enorme de ferramentas de apoio, tornam este software ainda mais apelativo.
No entanto o Excel
tem limitações. As fórmulas não podem ter variáveis. É quase impossível descobrir o valor de uma incógnita x, calcular uma derivada ou primitiva. É aqui que entram as tabelas em Org mode.
As tabelas em Org mode e o Excel, são duas ferramentas distintas. O comum a ambos os softwares é que ambos produzem tabelas. Todo o resto é diferente. A escolha do software, depende do que se pretende fazer.
Só me vou concentrar nas funções básicas da tabela e do Emacs Calculator, que está incluído em qualquer versão do GNU Emacs. Mesmo assim, na sua versão mais simplista, as tabelas em Org Mode
superam as funcionalidades do Excel
, quando o objetivo é o cálculo estrutural ou outro cálculo associado ao trabalho de engenharia 1
Criar uma Tabela em Org-Mode
Org-Mode faz parte do editor Emacs. É um software com uma possibilidade quase infinita de funções. Por exemplo, este post foi escrito em Org Mode
, sendo depois convertido em HTML
.
Criar uma tabela em Org-Mode
é simples, no entanto, não tão simples como em Excel
. Em Excel
, basta introduzir os dados nas células, e é fácil movimentar o cursor ao longo da folha. Em Org-Mode
o mesmo já não é verdade pois a tabela é construída pelo utilizador.
Em Org-Mode
, é necessário “escrever” a tabela. Um exemplo do formato para uma tabela, é aqui apresentado:
| Coluna 1 | Coluna 2 | Coluna 3 |
|----------+----------+------------|
| Linha | 1000 | A+B |
E o código em cima, dá origem a esta tabela:
Coluna 1 | Coluna 2 | Coluna 3 |
---|---|---|
Linha | 1000 | A+B |
Embora existam atalhos que facilitam e muito na criação da tabela, jamais se podem comparar à facilidade com que os dados são introduzidos em Excel
. Assim, se o objetivo for a introdução de dados em uma folha, Excel
é a ferramenta ideal para o trabalho.
O tempo de aprendizagem de Org-Mode
é também bastante superior ao de Excel
. Com um número quase infinito de novas possibilidades, a aprendizagem de Org-Mode é um processo lento e contínuo.
Aonde Org-Mode supera o Excel
A lista do que é possível fazer com Org Mode
é extensa e vai muito além dos objetivos deste post. O manual do Tabelas em Org Mode tem a lista dos atalhos que são possíveis utilizar assim como algumas das funcionalidades. No entanto, mesmo esta extensa lista, está muito aquém do que é possível fazer. Basta pensar que é possível utilizar Python nas tabelas em Org Mode
, e é aberta uma nova janela de possibilidades. E Python é só uma das muitas linguagens informáticas possíveis de utilização.
Excel
tem a sua própria linguagem, VBA. No entanto, esta fica muito aquém de Python
. É possível conectar Excel
com Python
recorrendo a outros softwares, mas torna-se um sistema complicado e nada prático.
Prós
- É fácil o uso de outras linguagens informáticas, como LaTeX, Python, R, etc.
- Org Mode é parte de Emacs, que já inclui uma calculadora bastante completa, equiparável às fórmulas em Excel.
- É possível o uso e cálculo de incógnitas como em uma calculadora científica moderna.
- As tabelas são formatadas para LaTeX, sendo os documentos em PDF produzidos, de uma qualidade muito superior a Excel.
- Recorrendo a Python por exemplo, é possível o cálculo numérico.
- Pode facilmente importar os dados de uma folha em Excel. Torna-se assim possível iniciar a recolha dos dados em Excel, e a sua posterior manipulação e análise, já em Org Mode.
- Uma vez passada a fase inicial de aprendizagem e customização, tudo fica mais fácil, e torna-se um sistema bastante eficaz para a produção de documentos em PDF.
- Org Mode foi criado para ser eficiente. Tal como em LaTeX, o objectivo é apresentar a informação de uma forma direta e clara.
- Tal como tudo no universo Emacs, Org Mode é grátis
Contras
- O tempo inicial de aprendizagem da utilização de Org Mode em Emacs, é muito superior ao Excel
- É necessário decorar as teclas de atalho para o uso eficiente do software.
- O editor em si, não é tão visualmente apelativo como o Excel
- Tudo pode ser customizado, mas requer muitas linhas de código, o que por sua vez, requer muito tempo de pesquisa na internet.
- É necessário escrever o código para o formato da tabela.
Exemplos
Armadura de Flexão
Neste exemplo, é calculado a área de armadura necessária para um dado Momento. Os dados são introduzidos nas colunas 2-6, e os resultados são apresentados nas 3 últimas colunas.
| | med (kN) | fcd (mPa) | fyd (mPa) | b (m) | d(m) | U | W | As (cm2/m) |
|---+----------+-----------+-----------+-------+------+--------+--------+------------|
| # | 100 | 13.3 | 348 | 1 | 0.95 | | | |
#+TBLFM: $7=$2/($5*$6**2*$3*10**3);%.4f::$8=1-sqrt(1-2*$7);%.4f::$9=$8*$5*$6*($3/$4)*10**4;%.2f
med (kN) | fcd (mPa) | fyd (mPa) | b (m) | d(m) | U | W | As (cm2/m) |
---|---|---|---|---|---|---|---|
100 | 13.3 | 348 | 1 | 0.95 | 0.0083 | 0.0083 | 3.01 |
Uma breve explicação do código: Na primeira coluna, existe o simbolo “#”, que informa ao Emacs, para calcular imediatamente caso novos dados sejam introduzidos (como em Excel). Se não colocasse essa informação/opção, o cálculo só seria efectuado após ser invocado por teclas de atalho.
Por baixo da tabela, é aonde estão as fórmulas das 3 últimas colunas. O simbolo “$” antes de um número, indica o número da coluna ($7 = coluna 7).
Soma de duas funções
\[f(x)+g(x)\]
A soma da função da coluna 2, com a função da coluna 3 (atenção que a coluna 1 é aonde está o “#” que informa o Emacs para executar automaticamente a soma e apresentar os resultados na coluna 4.
| | Função 1 | Função 2 | Resultado |
|---+----------+-------------+-----------|
| # | 2*x | 3*x*cos(45) | |
#+TBLFM: $4=$3+$2;n3
De notar que a coluna 1 não aparece no formato HTML.
Função 1 | Função 2 | Resultado |
---|---|---|
2*x | 3*x*cos(45) | 4.12 x |
Taylor
\[f ( x ) = f ( a ) + \frac { f ^ { \prime } ( a ) } { 1 ! } ( x - a ) + \frac { f ^ { ( 2 ) } ( a ) } { 2 ! } ( x - a ) ^ { 2 } + \cdots + \frac { f ^ { ( n ) } ( a ) } { n ! } ( x - a ) ^ { n } + R\]
| função | n | x | Resultado |
|-------------+---+-----+-------------|
| x^2+sqrt(x) | 1 | x=0 | |
| x^2+sqrt(x) | 0 | x=1 | |
#+TBLFM: $4=taylor($1,$3,$2);n3
função | n | x | Resultado |
---|---|---|---|
x2+sqrt(x) | 1 | x=0 | x*(0.5 / 0) |
x2+sqrt(x) | 0 | x=1 | 2 |
Solve
Calcula o valor de uma incógnita em uma função.
| | função esquerda | função direita | Resultado |
|---+-----------------+----------------+-------------------------|
| # | x*2 | 1 | |
| # | cos(x) | 0 | |
| # | 25+x*2 | x-5 | |
#+TBLfm: $4=fsolve($2=$3,x);n3
função esquerda | função direita | Resultado |
---|---|---|
x*2 | 1 | x = 0.5 |
cos(x) | 0 | x = 90 s1 + 360 n1 |
25+x*2 | x-5 | x = -30 |
Derivada
Calcula a derivada de uma função
| | função | Resultado |
|---+----------+-----------------|
| # | x | |
| # | sin(x) | |
| # | x**2+2*x | |
#+TBLfm: $3=deriv($2,x)
função | Resultado |
---|---|
x | 1 |
sin(x) | cos(x) pi / 180 |
x**2+2*x | 2 x + 2 |
Integral
Também é possível fazer a integração de uma função
| | função | Resultado |
|---+--------+-------------|
| # | x | |
| # | ln(x) | |
#+TBLFM: $3=integ($2,x)
função | Resultado |
---|---|
x | x2 / 2 |
ln(x) | x ln(x) - x |
Ficheiro Org Mode
Uma cópia do ficheiro usado na criação deste post, pode ser visto em baixo. O ficheiro foi criado no editor Emacs. Fazer o click em view raw, no canto inferior direito da janela, para ver o código sem estar formatado.
1 Para a introdução de dados, sua manipulação e visualização e se a lista de dados for extensa, é melhor a utilização de Excel