Как бороться с множеством скобок в формуле?
Скажем, у меня есть такая формула (в 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 ответа
Это скрипт vim foldcol.vim, но я не могу сказать больше.
Персонально сделаю:
"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
Это должно выглядеть так:
Результат: ( ( 6*( k2+k3)) *A123*k2*k3*( A12*A13*k2^2-2*A12*A13*k2*k3+A12*A13*k3^2-A123*k2^2) *(,,,
После работы над ним удалите отступ: перейдите к первой строке и нажмите:
gg<G............ "need to press dot to repeat
500gJ "to put all on one line
Складывание относится только к нескольким строкам. Для единственной строки лучшее, что вы можете сделать, это использовать недавнюю функцию сокрытия; к сожалению, это требует больше сценариев для настройки, может мешать существующей подсветке синтаксиса, и у вас нет удобных отображений "показать (больше / меньше) сгибов" под рукой.
Вы, вероятно, знаете о плагине matchparen, который поставляется вместе с Vim. Есть также плагины, такие как rainbow_parentheses.vim, которые улучшают это.