Избегайте пробелов перед запятой после макроса

Я пытаюсь написать справочную страницу, используя пакет макросов man Groff. В частности, я хотел бы написать текст, подобный следующему:

Демон можно настроить с помощью файла конфигурации. Расположение такого файла по умолчанию — /etc/trolls.conf, и это очень удобно.

Желаемые свойства текста:

  • /etc/trolls.conf отображается курсивом
  • За ней следует запятая, которой нет нет в курсиве,
  • Между /etc/trols.conf и запятой нет пробела.

Невероятно трудно получить текст, удовлетворяющий таким требованиям! Например, в следующем примере запятая будет выделена курсивом:

.SH DESCRIPTION
The daemon can be configured by means of a configuration file. The default
location of such file is
.I /etc/trolls.conf,
and this is quite nice.

Результат 1

С другой стороны, эта вторая попытка поставит пробел между /etc/trolls.conf и римской запятой:

.SH DESCRIPTION
The daemon can be configured by means of a configuration file. The default
location of such file is
.I /etc/trolls.conf
, and this is quite nice.

Результат 2

Есть ли способ заставить это работать?


person Dacav    schedule 20.08.2018    source источник
comment
При написании справочных страниц полезно прочитать справочную страницу для макросов man, groff_man, где вы также узнаете о символе \c в конце строки, чтобы избежать пробела, но ваше решение с использованием задокументированного макроса .IR действительно является предпочтительным. Troff был создан более 40 лет назад, и его долговечность говорит о том, насколько хорошо он был изготовлен.   -  person meuh    schedule 21.08.2018
comment
@meuh Спасибо за совет. Я заметил, что предлагаемая справочная страница (groff_man) недоступна в моей операционной системе (Fedora). Пакет groff-1.22.3-15.fc28.x86_64 содержит groff_man справочную страницу, но оказалось, что это другой вариант.   -  person Dacav    schedule 21.08.2018
comment
Я полагаю, это не слишком удивительно, так как \c — это необработанный troff, поэтому я сомневаюсь, что многие люди знают об этом или о каких-либо странных встроенных командах типа \f(, и, возможно, это даже к лучшему. Я знаю это только потому, что использовал troff до того, как GNU сделал его groff, и сложность взорвалась (судя по некоторым другим справочным страницам groff). Вы можете прочитать об оригинальном наборном пакете troff здесь. Когда у компьютеров было 64 килобайта оперативной памяти.   -  person meuh    schedule 21.08.2018
comment
@meuh Я должен уважать тебя!   -  person Dacav    schedule 21.08.2018


Ответы (1)


Этот язык верстки невероятно сложен (ну, он также невероятно стар), и в конце концов я решил эту проблему, просматривая существующие справочные страницы!

Решение следующее:

.SH DESCRIPTION
The daemon can be configured by means of a configuration file. The default
location of such file is
.IR /etc/trolls.conf ,
and this is quite nice.

Макрос .IR на самом деле будет чередовать курсив (I) и латинский (R), что приведет к правильному эффекту рендеринга: хороший результат

person Dacav    schedule 20.08.2018