我听说 troff/groff 在很大程度上已被 TeX 取代。这是真的?
我现在唯一知道实际使用 troff 的是联机帮助页。这也是真的吗?如果没有,还有什么其他用途?
表示变量属于给定实坐标空间的一组常用符号是?(“元素”,Unicode U+2208)和?(“DOUBLE-STRUCK CAPITAL R”,Unicode U+211D)。
那些是两个符号可用eqn
,troff
和/或groff
?我在文档中找不到它们。
编辑:
我已经测试了提供的答案,我可以得到符号?(“ELEMENT OF”,Unicode U+2208),但不是符号?(“DOUBLE-STRUCK CAPITAL R”,Unicode U+211D)。
具体来说,如果我这样做:
.TL
Test
.NH
Introduction
.LP
Given an input in subspace \[u211D]:
.EQ
x \[mo] \[u211D] sup 2
.EN
with output estimated value:
.EQ
y hat
.EN
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
cat test.ms | eqn | groff -ms > test.ps
troff: <standard input>:8: warning: can't find special character 'u211D'
Run Code Online (Sandbox Code Playgroud)
正如在 PS 输出中看到的那样?显示,但是?不是:
我正在使用FreeBSD 12
eqn
和groff
。
在检查的源代码时less
,我注意到包含的联机帮助页 ( less.man
) 使用终端转义码来显示粗体文本:
^[[1mNAME^[[0m
less - opposite of more
^[[1mSYNOPSIS^[[0m
^[[1mless -?^[[0m
^[[1mless --help^[[0m
^[[1mless -V^[[0m
^[[1mless --version^[[0m
^[[1mless [-[+]aABcCdeEfFgGiIJKLmMnNqQrRsSuUVwWX~]^[[0m
Run Code Online (Sandbox Code Playgroud)
用于生成的命令显然是nroff -man
:
$ head Makefile.aut
# Makefile for authoring less.
EMAIL = bug-less@gnu.org
HOMEPAGE = http://www.greenwoodsoftware.com/less
SHELL = /bin/sh
RCS = rcs
NROFF = nroff -man
Run Code Online (Sandbox Code Playgroud)
然而,如果我运行nroff -man less.nro
,我会使用退格键获得(通常的)联机帮助页输出:
N^HNA^HAM^HME^HE
less - opposite of more
S^HSY^HYN^HNO^HOP^HPS^HSI^HIS^HS
l^Hle^Hes^Hss^Hs -^H-?^H?
l^Hle^Hes^Hss^Hs -^H--^H-h^Hhe^Hel^Hlp^Hp
l^Hle^Hes^Hss^Hs -^H-V^HV
l^Hle^Hes^Hss^Hs -^H--^H-v^Hve^Her^Hrs^Hsi^Hio^Hon^Hn
Run Code Online (Sandbox Code Playgroud)
如何生成第一个表格?
我正在玩groff
,我想从以下内容生成 pdftest.ms
.TL
Tytu?
.AU
Imi? Nazwisko
.NH
Wst?p
.PP
Pierwszy paragraf. Jakie? informacje, ?eby by?y polskie znaki.
.PP
Drugi paragraf. Reszta znaków:
??????ó????????Ó??
.NH
Bla bla bla
.PP
safsdsdfsasdds
Run Code Online (Sandbox Code Playgroud)
如您所见,它包含波兰语变音符号。编译后,groff -ms test.ms -T pdf > test.pdf
我们看到了这个烂摊子:
我的第一个猜测是使用 utf-8 支持重新编译。
$ groff -Kutf8 -ms test.ms -T pdf > test.pdf
test.ms:4: warning: can't find special character `u0065_0328'
test.ms:8: warning: can't find special character `u0073_0301'
test.ms:8: warning: can't find special character `u00A0'
test.ms:8: warning: can't find special …
Run Code Online (Sandbox Code Playgroud) 我可以将man
输出转换为 PDF。首先,man -t grep >grep.ps
(grep 只是一个例子;我不是在寻找 grep 手册页的移动版本)。然后 Adobe Distiller 将 PostScript 转换为 PDF。但是,PDF 在平板电脑上看起来很糟糕(无法调整大小等)。我看到有几个程序可以转换为 mobi 和 epub 格式,但没有一个将 Postscript 作为输入。有些将 PDF 作为输入,但输出通常很难阅读——甚至比原始 PDF 还要糟糕。
那么,如何将 man 输出转换为移动格式(epub、mobi 或 fb2)?
或者
在我的机器(Ubuntu 18.04)上,我可以man
在控制台中正常查看页面。
但是,我似乎无法让man --html
( man -H
) 或man --gxditview
( man -X
) 工作。
可能有人对出了什么问题有任何暗示吗?
sudo apt install groff
。MAN_DISABLE_SECCOMP
,但我尝试了一下,似乎没有改变我的问题。man cp
在控制台上查看。DISPLAY
。在这种情况下,我觉得我已经通过开放而打消了这种可能性firefox
,并且gxditview
自己就好了。我猜我可以使用man2html
其他帖子中类似的东西,但如果可能的话,我更愿意先知道如何修复“内置”设置。
还有yelp man:cp
,从上面链接的帖子中建议的,它看起来非常好,所以现在可能会坚持使用(但希望外部参照在那里......)
我使用以下命令“最小化”了我的环境变量:
$ alias bash-isolate='env -i HOME=$HOME DISPLAY=$DISPLAY SHELL=$SHELL TERM=$TERM USER=$USER PATH=/usr/local/bin:/usr/bin:/bin bash --norc'
$ bash-isolate
# In isolated session
$ …
Run Code Online (Sandbox Code Playgroud) 我有一个带有 UTF-8 字符的 troff 文档(联机帮助页),我正在尝试将其转换为 PDF。但是,当使用 -Tpdf 选项时,生成的 PDF 不会显示正确的字符。这是我正在使用的命令:
groff -k -Tutf-8 -pet -Tpdf -mandoc filename.1 > filename.pdf
Run Code Online (Sandbox Code Playgroud)
出错的例子:
“Používá”变成“Pou3?4ívá”
“p?eklada?” 变成 "pøekladaè"
"provád?ných" 变成 "provádìných"
"rozší?ením" 变成 "roz1íøením"
如何正确地做到这一点?
我想为结构化技术文档尝试一个经典的 groff 宏包,以替代可以说更复杂的 LaTeX 和 DocBook。
我明白ms
是最早的宏包,并mm
与me
后来。我如何在ms
,mm
或之间选择me
?
哪些问题正在mm
并me
试图解决ms
?我该怎么选择mm
还是me
应该ms
太简单了?
我试图用原始(无宏)GNU 编写一个自我复制程序(“quine”)nroff
。诚然,这是毫无意义和古怪的,但以前似乎没有这样做过。我没有这样做。
我很确定,成功编写无宏nroff
输入语言 quine 的任何人都需要定义字符串、宏或“框”。为此,您需要编写如下请求:
.as s "just assigned this to string s
.de xxx
.nop "\*s"
..
.xxx
Run Code Online (Sandbox Code Playgroud)
也就是说,nroff
输入中的每个请求都有一个 '.' 在行的开头。
由于 quines 只是输出他们的源代码(没有作弊),输出可能必须有 '.' 作为几个输出行的第一个字符。
你到底怎么让 GNUnroff
输出一个 '.' 行首的字符?据我所知,没有多少间接或转义可以做到。是否有一些隐藏的请求输出“。” 在一行的开头?
我正在使用最近同步的 Arch Linux,它安装了 Groff 1.22.3。
我正在尝试为一个辅助项目创建手册页,我以前从未使用过 troff,我试图弄清楚 man 宏集和 mdoc 宏集之间的区别究竟是什么,以及哪个在 POSIX OS 之间更易于移植es 和 troff 的各种实现。
我注意到mdoc 和plain man 共享一些宏,并且BSD(至少是FreeBSD)使用mdoc 手册格式,而GNU 使用plain man 格式。
所以我的问题基本上是:
mdoc 是 man 宏的超集吗?这是否使使用普通人的遗产?mdoc 的 groff 联机帮助页指出,普通 man 宏是 mdoc 的前身,但没有说明 mdoc 是否取代了 man。
某些 BSD 与 SYSV 和/或 GNU 的区别是什么?
除了 groff(如传家宝 troff),哪个在 POSIX 系统和 troff 的各种实现中更具可移植性?