Как бороться с множеством скобок в формуле?

262
Libin Wen

Скажем, у меня есть такая формула (в LaTeX или Maple или другой текстовой системе):

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

Примечание: приведенная выше формула - только одна часть результата вычисления клена, я просто не могу разбить их, потому что существует так много терминов.

Видимо, это очень трудно читать. То, что я хочу сделать, это сложить соответствующие скобки уровень за уровнем. Если все скобки сложены, я могу четко определить, сколько существует терминов. Затем я могу анализировать от верхнего уровня до деталей каждого термина. Но я просто не знаю, как это реализовать. Возможно, существует какое-то программное обеспечение, которое может визуализировать этот вид сложной формулы. Любая идея?

PS Я использую систему Linux. Альтернативы с открытым исходным кодом лучше.

2
ну, идея, по крайней мере, на бумаге. это вы можете написать | ____ | ниже пары скобок. Это дает большую ясность, хотя я не знаю, программное обеспечение, если таковое имеется, делает это .. Кроме того, некоторые IDE разработки могут окрашивать пары кода, но это, вероятно, не даст ясности, которую вы ищете. barlop 10 лет назад 1

2 ответа на вопрос

1
Hettomei

Their is a vim script called foldcol.vim but I can't say more.

Personnaly I will do :

"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 

It should look like :

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

After working on it, remove indent : go to first line and then press :

 gg<G............ "need to press dot to repeat 500gJ "to put all on one line 
1
Ingo Karkat

Folding only applies to multiple lines. For a single line, the best you can do is use the recent conceal feature; unfortunately, it requires more scripting to set up, may interfere with existing syntax highlighting, and you don't have the convenient "show (more / less) folds" mappings at hand.

You're probably aware of the matchparen plugin that ships with Vim. There are also plugins like rainbow_parentheses.vim that improve on that.

Похожие вопросы