Como lidar com muitos colchetes em uma fórmula?

2

Digamos que eu tenha uma fórmula como essa (no LaTeX ou no Maple ou outro sistema de texto):

Result: ((6*(k2+k3))*A123*k2*k3*(A12*A13*k2^2-2*A12*A13*k2*k3+A12*A13*k3^2-A123*k2^2-2*A123*k2*k3-A123*k3^2)*(exp(-k3*(k3^2*t-x)))^2+6*A12*(-k3+k2)*k2*k3*(A12*A13*k2^2-2*A12*A13*k2*k3+A12*A13*k3^2-A123*k2^2-2*A123*k2*k3-A123*k3^2)*exp(-k3*(k3^2*t-x)))*(exp(-k2*(k2^2*t-x)))^2+(-(6*(-k3+k2))*A13*k2*k3*(A12*A13*k2^2-2*A12*A13*k2*k3+A12*A13*k3^2-A123*k2^2-2*A123*k2*k3-A123*k3^2)*(exp(-k3*(k3^2*t-x)))^2-(6*(k2+k3))*k2*k3*(A12*A13*k2^2-2*A12*A13*k2*k3+A12*A13*k3^2-A123*k2^2-2*A123*k2*k3-A123*k3^2)*exp(-k3*(k3^2*t-x)))*exp(-k2*(k2^2*t-x))

Note: the above formula is only one part of the result of a maple calculation, I just can't break them up because there are so many many terms.

Aparentemente, é muito difícil de ler. O que eu quero fazer é dobrar os colchetes combinados nível por nível. Se todos os colchetes estiverem dobrados, eu posso descobrir claramente quantos termos existem. Então eu posso analisar a partir do nível superior para os detalhes de todos os termos. Mas eu simplesmente não sei como perceber isso. Talvez existam alguns softwares existentes que possam visualizar esse tipo de fórmula complexa. Qualquer ideia?

P.S. Eu uso o sistema Linux. As alternativas de código aberto são melhores.

    
por Libin Wen 13.11.2013 / 03:52

2 respostas

1

Este é um script vim chamado foldcol.vim mas não posso dizer mais.

Pessoalmente farei:

"put every calculs on one line
:%s/(/\r(\r/g
:%s/)/\r)\r/g

"delete all empty lines
:g/^$/d
"set fold as () to collapse them with "za"
:set foldmethod=marker foldmarker=(,)

"indent all text:
gg=G

Deveria se parecer com:

Result: (
         (
          6*(
            k2+k3
            )
         )
         *A123*k2*k3*(
           A12*A13*k2^2-2*A12*A13*k2*k3+A12*A13*k3^2-A123*k2^2
           )
         *(
.
.
.

Depois de trabalhar, remova o recuo: vá para a primeira linha e pressione:

 gg<G............ "need to press dot to repeat
 500gJ "to put all on one line
    
por 13.11.2013 / 09:27
1

A dobragem só se aplica a várias linhas. Para uma única linha, o melhor que você pode fazer é usar o recente recurso ocultar ; infelizmente, isso requer mais scripts para configurar, pode interferir no realce de sintaxe existente e você não tem os convenientes mapeamentos "mostrar (mais / menos) dobras".

Você provavelmente conhece o matchparen plugin que vem com o Vim. Existem também plugins como rainbow_parentheses.vim que melhoram isso.

    
por 13.11.2013 / 10:10