Как извлечь данные между {}, если могут быть подскобки из других макросов TeX?Linux

Ответить
Anonymous
 Как извлечь данные между {}, если могут быть подскобки из других макросов TeX?

Сообщение Anonymous »

У меня есть файл с таким макросом 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»