2015-04-20 3 views
0

Я использую man вместе с man2html, чтобы автоматически генерировать некоторую документацию по html по линиям man manpage | man2html. Это работает хорошо, за исключением случаев, когда я запускаю его на Travis CI, man не генерирует правильные escape-последовательности, чтобы сделать заголовки и параметры полужирным. Есть ли способ заставить man генерировать эти коды?Заставить человека выводить коды ANSI

Я также посмотрел на использование groffer --mode=tty вместо man, который работает на моем Mac, но на Linux (то есть, Travis CI), вместо того, чтобы генерировать двоичные коды ANSI, что man2html может читать, он генерирует простые текстовые коды , как [1m.

ответ

1

Существует некоторая недостающая информация, но я буду пытаться заполнить его:

  • есть больше чем одна программа с именем man2html. Я считаю, что вы имеете в виду скрипт Perl, который я также использую. (Я сделал некоторые улучшения, которые можно найти на моем scripts page, но это не меняет проблему).
  • для сравнения, есть еще одна программа (см. Страницу руководства), которая рассчитывает отформатировать сама manpage - в отличие от скрипта Perl.
  • a назад, один из разработчиков, работающих с groff, добавил (неправильно) функцию, изменив поведение по умолчанию nroff на продукт escape-последовательности для цветов. Это было бы что-то вроде ^[[34m или ^[[1m, для цвета или полужирного текста.
  • помимо этого, все остальные nroff производятся не управляющие последовательности `но BackSpace-последовательности, используя перечеканки имитировать подчеркивание или жирный текст (_^HXX^HX, например).
  • не все понравятся groff функция (смотрите, например, mailing list comment).
  • Функция groff может быть переопределена путем установки переменной окружения GROFF_NO_SGR, как указано на странице руководства для grotty.

Помимо проблемы с экранирующих последовательностей против Backspace последовательностей, groff может генерировать UTF-8, если вы используете локаль, чья кодировка UTF-8. Есть несколько мест, где это заметно:

  • переносов
  • специальные символы, такие как © (авторское право)
  • столы

man2html скрипт ничего не знает о мультибайтных кодировках таких не знаю как UTF-8, и будет делать неожиданные вещи.В качестве обходного пути, перекрывая настройки локали в POSIX исправляет проблему, установив эти переменные среды:

LANG=C 
LC_ALL=C 
LC_CTYPE=C 
LANGUAGE=C 
+0

'GROFF_NO_SGR' кажется, работает хорошо с' groffer --mode = tty', за исключением того, я в конечном итоге с '\ XE2 \ x80 \ x90' где есть переносы, которые приводит к проблемам с man2html. – asmeurer

+0

Мне также интересно, какие ваши улучшения в man2html. Я не видел изменений или чего-то еще. – asmeurer

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