doxygen latex make не работает из-за ошибки кодирования ввода

У меня есть проект git repo в eclipse, который я документировал с помощью doxygen (v1.8.4). Если я запускаю латекс, создаю новый клон проекта, он работает нормально, и создается PDF. Однако, если я затем запускаю сборку doxy, которая завершается успешно, затем пытаюсь запустить латексную сборку, она завершается ошибкой для

! Package inputenc Error: Keyboard character used is undefined 
(inputenc)                in inputencoding `utf8'. 

See the inputenc package documentation for explanation. 
Type  H <return>  for immediate help. 
 ... 

Я попытался переключить кодировку doxyfile, установив DOXYFILE_ENCODING в ISO-8859-1 без каких-либо изменений в результате... Как я могу это исправить?? Спасибо.

РЕДАКТИРОВАТЬ: Насколько я знаю, я не использовал символы, отличные от UTF-8, в своих файлах, файл, на который ссылается до ошибки, очень короткий и определенно не содержит символов, отличных от UTF-8. Я даже пытался очистить выходной каталог латекса и создать его с нуля, но безуспешно...

РЕДАКТИРОВАТЬ: я понял, что сборка докси только кажется работать правильно. Он не показывает никаких ошибок, но он должен, например, запустить DOT и построить около 10 графиков. Вывод консоли говорит Running dot, но не говорит о создании графика (n/x), как следует, когда он на самом деле строит графики...


person Toby    schedule 11.02.2014    source источник
comment
Есть ли смысл использовать doxygen 1.8.4? Вы пробовали с 1.8.6? Doxygen не запускает точку, если новые графы не создаются или когда граф не изменился.   -  person albert    schedule 12.02.2014
comment
@albert, 1.8.4 был последним, когда я обновлялся, пытался свести обновления инструментов к минимуму в середине проекта. Как вы думаете, эта проблема может быть решена изменениями 1.8.6?   -  person Toby    schedule 12.02.2014


Ответы (2)


Краткий ответ: Таким образом, путем медленного процесса исключения я обнаружил, что это было вызвано одним апострофом в файле, который, казалось, уже был создан и создан без ошибок!!

Длинный ответ: сначала я использовал свойства проекта, чтобы изменить кодировку с Cp1252 по умолчанию на UTF-8. Затем я начал удалять файлы один за другим до тех пор, пока после каждого удаления не пересобирал и переделывал, пока make не запустился успешно. Я повторно добавил все файлы, но удалил содержимое последнего удаленного файла и проверил make, чтобы убедиться, что проблема возникла именно с этим файлом и только с этим файлом. мейк прошел нормально. Итак, я вставил содержимое обратно в пустой файл и начал удалять все меньшие и меньшие части файла, снова перестраивая и переделывая каждый раз, пока у меня не остался хороший макет без апострофа и плохой с ним ... Я просто перепечатал апостроф (поскольку это заставит его быть символом UTF-8) и успех!! Такой досадный баг!

person Toby    schedule 11.02.2014

Чувак, ты сделал это трудным путем. Почему бы не использовать python, чтобы он сделал всю работу за вас:

f = open(fn,"rb")
data = f.read()
f.close()
for i in range(len(data)):
    ch = data[i]
    if(ch > 0x7F): # non ASCII character
        print("char: %c, idx: %d, file: %s"%(ch,i,fn))
        str2 = str(data[i-30:i+30])#.decode("utf-8")
        print("txt: %s" % (str2))
person Vit Bernatik    schedule 27.06.2016
comment
Любая информация о том, что делают эти строки кода, для тех из нас, кто не знает python? - person Toby; 29.06.2016