根据info groff(第5.11节字符翻译),
\.应该只打印点.然而,这似乎并非如此.如果我渲染此联机帮助页
.TH x x x x
\.SH foo
Run Code Online (Sandbox Code Playgroud)
我被foo渲染为一个部分标题,并.SH没有打印.
那么,为什么会发生这种情况,如何在groff线的开始处逃避点(和撇号)?
我想groff在 Java 程序中运行。输入来自一个字符串。在真正的命令行中,我们将^D在 Linux/Mac 中终止输入。那么如何在Java程序中发送这个终止符呢?
String usage +=
".Dd \\[year]\n"+
".Dt test 1\n"+
".Os\n"+
".Sh test\n"+
"^D\n"; // <--- EOF here?
Process groff = Runtime.getRuntime().exec("groff -mandoc -T ascii -");
groff.getOutputStream().write(usage.getBytes());
byte[] buffer = new byte[1024];
groff.getInputStream().read(buffer);
String s = new String(buffer);
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)
还是有其他想法?
我试着.PSPIC image.eps和.PSPIC image.ps一个JPEG转换成PostScript在converthub.com,编译后groff -ms -p file.ms -Tpdf > file.pdf,它显示为具有正确尺寸的箱子,但只是文件名作为标签和没有图像。这正是该线程所说的,但不起作用。我可以很好地处理文字,但对ps图像了解不多。我究竟做错了什么?
我正在尝试使用“entr”命令自动编译 Groff 文档。
我希望运行以下行:
refer references.bib $1 | groff -ms $1 -T pdf > $2
Run Code Online (Sandbox Code Playgroud)
遗憾的是,如果我尝试这样做,它只会编译一次:
echo $1 | entr refer references.bib $1 | groff -ms $1 -T pdf > $2
Run Code Online (Sandbox Code Playgroud)
我也尝试过以下操作,但它创建了一个无法用Ctrl+退出的无限循环C:
compile(){
refer references.bib $1 | groff -ms $1 -T pdf > $2
}
while true; do
compile $1 $2
echo $1 | entr -pd -s 'kill $PPID'
done
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?
我正在编写一个程序的手册页,源代码如下:
.TH prog 1 "26 AUG 2010" "Version 0.1" "Center header"
.NAME
prog \- runs a program
.SH SYNOPSIS
.B prog
Run Code Online (Sandbox Code Playgroud)
我用的时候
$ groff -Tascii -man source.txt | more
Run Code Online (Sandbox Code Playgroud)
输出几乎与预期一致.
我用的时候:
$ groff -Tascii -man source.txt > prog.1 && \
sudo cp prog.1 /usr/local/man/man1/ && man prog
Run Code Online (Sandbox Code Playgroud)
输出看起来像这样:
prog(2)中心标题
prog(2)
NAME
prog - 运行程序
版本0.1 26 AUG 2010
我在Ubuntu 8.04上.我已经确认它不是寻呼机,因为我也试过man -P more并且仍然有相同的奇数输出.这是怎么回事?