Недействительные символы в сгенерированных источниках латекса

Я запускаю doxygen (1.5.8) в проекте C # из Visual Studio 2008 на компьютере под управлением Windows XP. При генерации латексного кода включаются некоторые недопустимые последовательности. Он всегда включает следующую последовательность: «ï» ¿»(латинское I с дирезисом, что-то вроде оператора двоичного сдвига и испанский открытый вопросительный знак). Я видел, как это происходило в контексте «ï» ¿using {\ bf System} ", но, возможно, есть и другие.

Сгенерированный файл латекса читает

    \begin{CompactItemize}
    \item 
    using {\bf System}
    \end{CompactItemize}

Пока исходник просто:

using System;
using System.Collections.Generic;
using System.Linq;

Какой-то странный персонаж Windows BOF? Вроде только перед использованием System; директива (первая в каждом файле).


person Dervin Thunk    schedule 27.02.2009    source источник


Ответы (2)




Это представление ISO-8859-1 символа U + FEFF в кодировке UTF-8, БАЙТОВОЙ МАРКИРОВКИ. Спецификация предназначена для использования в качестве первой кодовой точки в файлах UTF-16 и не должна использоваться в файлах UTF-8, но, к сожалению, есть несколько очень глупых инструментов, которые создают ее по умолчанию. А если вы создаете файлы путем объединения фрагментов текста из других файлов, вы можете даже получить спецификации в середине документа.

Найдите редактор, который сохраняет файлы как «UTF-8 с спецификацией», и запишите его.

ETA повторно обновленный вопрос:

ï »¿с использованием {\ bf System}

Пока исходник просто:

используя Систему;

Перед «использованием» проверьте этот источник в шестнадцатеричном редакторе на наличие скрытой фальшивой спецификации.

person bobince    schedule 27.02.2009

Для меня это похоже на проблему с кодировкой символов.

Эта трехсимвольная последовательность представляет собой метку порядка байтов Юникода 0xfeff, закодированную в UTF-8, хотя я не уверен, почему метка порядка байтов будет отображаться в середине вашей документации ... могло быть просто совпадением.

person David Z    schedule 27.02.2009