Как остановить экранирование / преобразование Pybtex специальных символов - PullRequest
0 голосов
/ 08 ноября 2018

ТЛ; др

pybtex отображает «~» как «\ textasciitilde» (с завершающим пробелом) и экранирует символ подчеркивания (то есть добавляет к нему обратную косую черту) при записи в файл .bib. Как я могу остановить это? Спасибо.

Длинная версия

Я начал писать скрипт на python, который должен выполнять различные действия, включая добавление новой записи bibtex для бумаги в файл .bib. Это на довольно ранней стадии, и я столкнулся с проблемой: URL-адреса pdf-файлов (см. Ниже) будут содержать символы тильды и подчеркивания, а pybtex избегает / преобразует их. См выдержку:

# bibtex data elicited from user, or otherwise acquired

new_entry_unformatted = BibliographyData(
entries=[
    (data[0], Entry('inproceedings',
        fields=[
            ('Pdf', data[1]),
            ('Title', data[2]),
            ('Author', data[3]),
            ('Booktitle', data[4]),
            ('Month', data[5]),
            ('Year', data[6]),
            ('Address', data[7]),
            ],
        )),
    ],
    preamble=['%%% Written ' + date_and_time]
)

new_entry_formatted = new_entry_unformatted.to_string('bibtex')

print "\nnew_entry_unformatted is:\n"
print new_entry_unformatted

print "\nnew_entry_formatted is:\n"
print new_entry_formatted

# more stuff here...
# ...then append formatted bibtex entry to bib file

with open(file, "a") as current_bibtex_file:
    current_bibtex_file.write(new_entry_formatted)

new_entry_unformatted: URL-адрес правильный: http://this/~that/the_other

new_entry_formatted: URL становится: http://this/\textasciitilde / \ _other

  • Нужно ли сообщать pybtex, что поле 'Pdf' является «специальным»?
  • Нужно ли указывать bibtex буквально разбирать специальные символы?
  • Есть ли лучший способ сделать это, чтобы избежать проблемы?

(извиняюсь, если это глупые вопросы; я прочитал документацию и немного погуглил, но не знаю, что делаю неправильно).

ТИА

P.S. pybtex 0.21, macOS 10.12.6, python 2.7.10

...