Как выйти из новой строки на страницах руководства
Я реорганизовал абзац страницы руководства, чтобы каждое предложение было отдельной строкой. При рендеринге с man ./somefile.3
Выход немного отличается.
Позвольте мне показать пример:
This is line 1. This is line 2.
против
This is line 1.
This is line 2.
Рендеринг выглядит так:
Первый:
This is line 1. This is line 2.
Во-вторых:
This is line 1. This is line 2.
Между предложениями есть дополнительное пространство. Обратите внимание, что я убедился, что нет лишних пробелов. У меня больше опыта с Latex, Asciidoc и уценкой, и я могу контролировать это, возможно ли это с troff
/groff
? Я хотел бы избежать этого, если это возможно. Я не думаю, что это должно быть там.
2 ответа
troff
стандарт ввода должен иметь новую строку в конце каждого предложения и позволять наборщику выполнять свою работу с заполнением. (Хотя я сомневаюсь, что это было намерение, оно делает его более приятным при управлении исходным кодом.) Следовательно, оно считает, что конец предложения должен находиться в конце строки, заканчивающейся точкой (или ?
или же !
и, возможно, с последующим '
, "
, *
, ]
, )
,или же †). Он также считает, что предложения должны иметь два пробела между ними. Это почти наверняка вытекает из стандартов типографии в Bell Labs в то время; Довольно любопытно, что это поведение не может быть установлено через любые режимы заполнения.
groff
действительно обеспечивает способ установить интервал между предложениями, с расширенным .ss
запрос:
.ss word_space_size [termince_space_size]
Изменить размер пробела между словами. Он принимает его единицы как одну двенадцатую параметра ширины пространства для текущего шрифта. Первоначально и word_space_size, и termince_space_size равны 12. В режиме заполнения значения указывают минимальное расстояние.
Если для запроса ss заданы два аргумента, второй аргумент задает размер пространства предложения. Если второй аргумент не указан, размер пространства предложения устанавливается равным word_space_size. Размер пространства предложения используется в двух случаях: если конец предложения происходит в конце строки в режиме заполнения, то добавляются как пространство между словами, так и пространство предложения; если после конца предложения в середине строки следуют два пробела, то второй пробел является пробелом предложения. Если второй аргумент никогда не указывается в запросе ss, поведение troff в UNIX такое же, как в GNU troff. В GNU troff, как и в UNIX troff, за предложением всегда должна следовать либо новая строка, либо два пробела.
Таким образом, вы можете указать, что "пространство предложений" должно быть нулевой ширины, сделав запрос
.ss 12 0
Насколько я знаю, это расширение groff; Семейная реликвия поддерживает это, но более старые производные версии dwb могут этого не делать.
Пример:
This is line 1. This is line 2.
This is line 1. This is line 2.
This is line 1.
This is line 2.
SET SENTENCE SPACING
.ss 12 0
This is line 1. This is line 2.
This is line 1. This is line 2.
This is line 1.
This is line 2.
Результаты:
$ groff -T ascii spaces.tr |sed -n -e/./p
This is line 1. This is line 2.
This is line 1. This is line 2.
This is line 1. This is line 2.
SET SENTENCE SPACING
This is line 1. This is line 2.
This is line 1. This is line 2.
This is line 1. This is line 2.
Таким образом, следующее будет работать, но я надеюсь, что есть лучший вариант.
This is line 1. \
This is line 2.
отображается как
This is line 1. This is line 2.