我有一个标题全部大写的文档,例如:
NAME
env - run a program in a modified environment
我想插入
\item[
在标题之前和
] \hfill \\
在标题之后,结果将是这样的:
\item[NAME] \hfill \\
env - run a program in a modified environment
我编写了一个 sed 脚本来为文档的大部分内容添加 LaTeX 格式,但是我的脚本的这一行无法正常工作:
s/\([A-Z]\)*/\\item\[&\] \\hfill \\\\/g
我没有产生所需的输出(上面的示例),而是得到:
...\item[NAME] \hfill \\
\item[] \hfill \\ \item[] \hfill \\ \item[] \hfill \\ \item[] \hfill \\ \item[] \hfill \\ \i$
\item[] \hfill \\
...
正如您所看到的,它正确地在标题周围插入格式,但也替换了文档中的其他所有内容。我怎样才能解决这个问题?
答案1
请参阅上面的评论线程以获得答案。 TL:DR 答案是:
s/^\([A-Z]\)\+$/\\item\[&\] \\hfill \\\\/
答案2
如果您要修改的行始终是第一行(从您的问题和评论看来),您可以使用 AWK 使其变得更容易。
{
if (NR == 1)
{ print "\\item[" $0 "] \\hfill\\\\" }
else
{ print ($0)}
}
将其运行为awk -f myScript.awk myManPage > myLaTeXmanPage
.
答案3
看起来您正在尝试 TeXify 一些手册页。你看过吗潘多克?它是一个“通用文档转换器”,可以理解 LaTeX 和 man 格式等。
事实上,如果您的最终目标是生成 PDF 手册页,man
它本身就可以为您做到这一点。例如,要获取bash(1)
页面的 PDF 版本:
man -T ps bash|ps2pdf - bash.pdf
ps2pdf
是套餐的一部分ghostscript
。