У меня есть файл с таким макросом TeX:
Код: Выделить всё
\summary{here is some text}{more}{yet more}{yet even more text}{some more}{and yet more}
Мне нужно извлечь из каждой строки содержимое первой пары {}, второй пары {} и т. д. отдельно. В обычной ситуации я бы просто использовал:
Код: Выделить всё
variablea=`echo "\summary{here is some text}{more}{yet more}{yet even more text}{some more}{and yet more}" | awk -F'{' '{ print $2 }' | awk -F'}' '{ print $1 }'`
Проблема, с которой я столкнулся, заключается в том, что любая из пар {} может содержать больше макросов TeX, например \quote{}, \quotation{}, \citation{}{} и т. д. Некоторые с одним {}, некоторые с двумя {}{} и т. д., а внутри дополнительные данные.
Код: Выделить всё
variablea=`echo "\summary{here is some \quotation{text}}{more}{yet more}{yet even more text}{some more}{and yet more}" | awk -F'{' '{ print $2 }' | awk -F'}' '{ print $1 }'`
Обратите внимание: если я использую приведенный выше код, поскольку он содержит \quotation{text} внутри первой пары {}, он не печатает все содержимое первого {} из \ резюме, но запутался и обработал текст внутри.
Что еще хуже, внутри макросов могут быть макросы внутри макросов:
Код: Выделить всё
here is some \quotation{text that is \index{useful}}
Как я могу извлечь данные из каждой пары {}, сохранив данные внутри в целости и не запутав другие { и }, принадлежащие другим макросам?
Подробнее здесь:
https://stackoverflow.com/questions/790 ... ther-tex-m