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

私はドキュメントの多くにLaTeX形式を追加するためにsedスクリプトを書いていますが、スクリプトの次の行は機能しません。

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マニュアルページを生成することであれば、PDFマニュアルページをman自動的に生成できます。たとえば、bash(1)ページのPDFバージョンを取得するには:

man -T ps bash|ps2pdf - bash.pdf

ps2pdfパッケージの一部ですghostscript

関連情報