2

Скажем, у меня есть такая формула (в 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 ответа2

1

Это сценарий 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

Это должно выглядеть так:

Result: (
         (
          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
1

Складывание относится только к нескольким строкам. Для единственной строки лучшее, что вы можете сделать, это использовать недавнюю функцию сокрытия ; к сожалению, это требует больше сценариев для настройки, может мешать существующей подсветке синтаксиса, и у вас нет удобных отображений «показать (больше / меньше) сгибов» под рукой.

Вы, вероятно, знаете о плагине matchparen, который поставляется вместе с Vim. Есть также плагины, такие как rainbow_parentheses.vim, которые улучшают это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .