使用 sed 在文档标题周围插入 Latex 命令

使用 sed 在文档标题周围插入 Latex 命令

我有一个标题全部大写的文档,例如:

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

相关内容