Renderização de pontos sublinhados no homem

0

Se você olhar a origem da documentação para man(1) (provavelmente em /usr/share/man/man1/man.1.gz ) usando, você notará linhas como essa -

.IR page [.\| section \|]\ \|.\|.\|.\|]\ \.\|.\|.\&

Isto é renderizado pelo homem 2.8.3 para

page[.section] ...] ... 
----  -------

em que - indica sublinhado. A maneira que eu entendo isso funciona é que os espaços sem escape são removidos, e IR alterna entre I (pois o itálico não está disponível talvez esteja sublinhando) e R (que é a fonte roman normal) e a fonte é alternada usando \| . Com base nisso, esperaria que a renderização se parecesse com -

page[.section] ...] ... 
----  -------  - -  ?-

Por que não é esse o caso?

    
por theindigamer 18.11.2018 / 17:36

1 resposta

3

O problema é entender mal o que os códigos de caracteres realmente fazem. Se você olhar no manual do usuário do Ossanna e do Kernighan's Troff, você verá -

\|     1/6 em narrow space character (zero width in nroff)

Por isso, não está realmente alternando as fontes por si só, apenas introduz espaços finos. A alternação de fonte está acontecendo por causa de espaços no texto (veja man (7) ) -

.IR page [.\| section \|]\ \|.\|.\|.\|]\ \.\|.\|.\&

Isso é dividido em quatro partes

page
[.\|
section
\|]\ \|.\|.\|.\|]\ \.\|.\|.\&

em que as fontes alternam entre elas, fornecendo a renderização que você vê, onde a página e a seção estão sublinhadas e as outras partes não.

    
por 18.11.2018 / 17:43

Tags