man/troff:将 ^ 转换为 ^

man/troff:将 ^ 转换为 ^

这是后续man -t 将 - 转换为 -

这次的问题是 ^troff认为应该改为 ^。

有没有通用的方法来告诉man -t不要弄乱输入?

如果不是:如何修复 ^?

MCVE:

$ cat foo.pod
#!/usr/bin/perl -w

=head1 A

  ^

=cut

$ pod2man foo.pod | man -tl - | ps2pdf - foo.pdf

答案1

特罗夫变成^抑扬音。

解决您的问题的简单方法(实现方式并不那么简单)是安排 ^pod 文件中的每个内容都转换为 troff 序列\(ha。我不知道 的内部结构Pod.pm,因此我不会修补它,而是提供一个过滤器,您可以在 , 的输出pod2man发送到 之前使用它man -t

使事情变得复杂的是其中pod2man会产生一些线条。^我们无法改变它们。

pod2man foo.pod | \
perl -pe '/\.[ ]*ds[ ]*\^/ || s/(?<!\\\*)\^/\\(ha/g' | \
man -tl - | ps2pdf - foo.pdf

Perl 命令执行以下操作:

  • 如果该行包含.ds ^指令,请勿更改它
  • 否则,每次出现的^都会被 替换\(ha,但\*^不会被触及。

相关内容