2013-06-28 8 views
1

Я работаю над форматом error для LaTeX с плагином LaTeXBox для vim, и я обнаружил проблему, которую я не могу решить.Очень длинные имена файлов в vim errorformats

LaTeX производит относительно структурированные файлы журнала, где Лисп-подобный синтаксис paranthesis используется для проанализированных файлов, например:

(/path/to/some/file.xxx ...) 

Сначала это выглядит как простая проблема, и мы можем использовать %P/%O/%Q директивы с %r и %f для анализа имен файлов. Для простых файлов и проектов .tex это работает хорошо. Однако в некоторых случаях строки могут быть повреждены до того, как имя файла будет завершено. Например, мы можем получить что-то вроде этого:

) (/some/file/with/long/file/name.sty) (/some/file/with/even/longer/fi 
le/name.sty (... 
)) 

Большая часть выше выход может быть разобран правильно, однако, как было показано выше, один из путей был сломан и не будет разобран. Достаточно одной такой ошибки разбивать стек файлов, что приводит к ошибочному анализу файла журнала.

Проблема может быть сформулирована в более общем виде: Я хочу использовать errorformat для разбора имен файлов, которые разбивают на несколько строк:

/path/to/some/ 
file.txt 

Я ищу решение этой проблемы, либо с некоторыми больше магии vim (возможно, я пропустил хороший вариант с ошибкой?) или, возможно, с некоторыми опциями для latex или pdflatex. Любое решение оценивается.

+0

Я думаю, что это невозможно обрабатывать внутри Vim; инструментальная цепочка Tex не должна вставлять жесткие разрывы строк в середине своего вывода; это просто странно! –

+0

@IngoKarkat: Это тоже мой вывод. В настоящее время я ищу способ заставить Texchain Tex сделать более правильные файлы журналов ... –

+0

Если все остальное не удается, вы можете добавить фильтр (например, с 'sed') в' 'makeprg'', который используется для строить. Но это уродливо, проблематично для Windows (разные, уступающие инструменты), и поэтому последнее средство. –

ответ

0

Думаю, я нашел хорошее решение. В апперии можно использовать max_print_lines=<number>, чтобы установить обертку выходного лотка латекса. Таким образом, если один выдает команду латексный:

max_print_lines=2000 pdflatex <filename>.tex 

Проблема имена файлов нарушаются по линии, вероятно, будет решена, так как линии не будут сломаны, пока они не достигнут 2000 colums.

Я нашел это решение первым через this SO answer.

Итак, подведем итог: Я думаю, что %P/%O/%Q директивы с %r и %f разобрать имена файлов должны работать, если один использует max_print_lines.

Смежные вопросы